您的位置:首页 > 移动开发 > 微信开发

《IOS 9 支付宝 and 微信 支付的集成》

2016-01-11 15:34 831 查看
          《IOS 9  支付宝  and 微信支付的集成》
          支付做好了,只要7行代码,就可进行支付。不需要设置其他东西:举个例子:微信加什么.mm 和设置 other lInk 什么的。只要配置一个文件就可以。避免了,进行支付参数这个错,那个错的。造成支付调不起支付等原因。还有支付宝,打破它的限制,想把它移动到那个文件夹,九移动到哪(不会出现错误 ,不是什么绝对路径哦(嘿嘿,这是改里面的文件了))、。

第一步:我们来看效果。







第二部:我们配置文件。

    1、导入必要的框架。



    2、添加 URLtype (用于回调)。



    3、添加,白名单。



     4、进行网络的配置。(看图片上的说明)  



第三步:进行关键包的导入。



绿色的是,重要的配置文件(一级保护动物)。

第四步:关键代码的缩影。

     1、支付宝。

            1》调用代码。

                 

        ZSJ_All_PaySDK * pa = [ZSJ_All_PaySDK
ZSJ_PaySdk];

        if ([pa ZSJExamine]) {

            pa.P_amount =
@"0.01";

            pa.P_productDescription =
@"erdan ";

            pa.P_productName =
@"sd";

            pa.P_tradeNO =
@"KPD20160108104062";

            [pa ZSJ_Pay:^(id resultObject) {

                NSLog(@"%@",resultObject);

            }];

        }

       2》隐式代码。

       

-(void)ZSJ_Pay:(result)resultObject{

    Order *order = [[Order
alloc] init];

    order.partner =
Alipay_publickey;

    order.seller =
Alipay_seller;

    order.tradeNO =
self.P_tradeNO;
//订单ID(由商家自行制定)

    order.productName =
self.P_productName;
//商品标题

    order.productDescription =
self.P_productDescription;
//商品描述

    order.amount =
self.P_amount;
//商品价格

    order.notifyURL = 
Alipay_notifyURL; //回调URL

    order.service =
@"mobile.securitypay.pay";

    order.paymentType =
@"1";

    order.inputCharset =
@"utf-8";

    order.itBPay =
@"30m";

    order.showUrl =
@"m.alipay.com";

    //应用注册scheme,在AlixPayDemo-Info.plist定义URL
types

    NSString *appScheme =
Alipay_scheme;

   
//将商品信息拼接成字符串

    NSString *orderSpec = [order
description];

    NSLog(@"orderSpec = %@",orderSpec);

   
//获取私钥并将商户信息签名,外部商户可以根据情况存放私钥和签名,只需要遵循RSA签名规范,并将签名字符串base64编码和UrlEncode

    id<DataSigner> signer =
CreateRSADataSigner(Alipay_privatekey);

    NSString *signedString = [signer
signString:orderSpec];

   
//将签名成功字符串格式化为订单字符串,请严格按照该格式

    NSString *orderString =
nil;

    if (signedString !=
nil) {

        orderString = [NSString
stringWithFormat:@"%@&sign=\"%@\"&sign_type=\"%@\"",

                       orderSpec, signedString, @"RSA"];

        [[AlipaySDK
defaultService] payOrder:orderString
fromScheme:appScheme callback:^(NSDictionary *resultDic) {

            // 支付结果的回调

            resultObject(resultDic);

         }];

    }

}
    
     2、微信。
     1》调用代码。 

        

        ZSJ_All_PaySDK * pa = [ZSJ_All_PaySDK
ZSJ_WXPaySdk];

        if ([pa ZSJExamine_WeChat]) {

            pa.WeChat_amount =
@"1";

            pa.WeChat_productDescription =
@"你欠我钱";

            pa.WeChat_productName =
@"钱";

            pa.WeChat_tradeNO =
@"KPD20160108104025";

            [pa WeChat_SendPay];

        }

       2》 隐式代码。

//提交预支付

-(NSString *)sendPrepay:(NSMutableDictionary *)prePayParams

{

    NSString *prepayid =
nil;

    //获取提交支付

    NSString *send      = [self
genPackage:prePayParams];

    //输出Debug Info

    [debugInfo appendFormat:@"发送的xml:%@\n",
send];

    //发送请求post xml数据

    NSData *res = [WXEncrypt
httpSend:@"https://api.mch.weixin.qq.com/pay/unifiedorder"
method:@"POST"
data:send];

    //输出Debug Info

    [debugInfo
appendFormat:@"服务器返回:\n%@\n\n",[[NSString
alloc] initWithData:res
encoding:NSUTF8StringEncoding]];

    

    WApiXML *xml  = [[WApiXML
alloc]init];

    //开始解析

    [xml StartAnalysisData:res];

    //
获取数据

    NSMutableDictionary *resParams = [xml
GetAnalysisData];

    NSLog(@"关键时刻:%@",resParams);

    

    //判断返回

    NSString *return_code   = [resParams
objectForKey:@"return_code"];

    NSString *result_code   = [resParams
objectForKey:@"result_code"];

    if ( [return_code
isEqualToString:@"SUCCESS"] )

    {

        //生成返回数据的签名

        NSString *sign      = [self
createMd5Sign:resParams ];

        NSString *send_sign =[resParams
objectForKey:@"sign"] ;

        //验证签名正确性

        if( [sign
isEqualToString:send_sign]){

            if( [result_code
isEqualToString:@"SUCCESS"]) {

                //验证业务处理状态

                prepayid    = [resParams objectForKey:@"prepay_id"];

                return_code = 0;

                [debugInfo
appendFormat:@"获取预支付交易标示成功!\n"];

            }

        }else{

            last_errcode =
1;

            [debugInfo
appendFormat:@"gen_sign=%@\n   _sign=%@\n",sign,send_sign];

            [debugInfo
appendFormat:@"服务器返回签名验证错误!!!\n"];

        }

    }else{

        last_errcode =
2;

        [debugInfo
appendFormat:@"接口返回错误!!!\n"];

    }

    return prepayid;

}

第五部:完整代码下载。
     
   https://github.com/zhoushuangjian/ZSJ_PaySDK.git

       
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息