支付宝集成

支付宝集成虽然有了官方的文档说明,但还有些让人迷惑,部分问题的解决方案也并不清楚,这次权做整理一番。

1 . 打开Demo第一个看到的便是需要填写三个值

    NSString *partner = @"XXXXX"; //  合作者身份ID
    NSString *seller = @"XXX.XXX.com"; //客户端号
    NSString *privateKey = @""; // 私钥 pkcs8格式

私钥生成

2 . 其次便是其他的几个属性:参考 支付宝官网

     //out_trade_no 商户网站唯一订单号
    order.tradeNO = [self generateTradeNO];

    //  subject商品名称
    order.productName = @"this is title";
    // body 商品详情
    order.productDescription = @"";

    //商品价格 total_fee
    order.amount = [NSString stringWithFormat:@"0.01"];

    // notify_url 服务器异步通知地址
    order.notifyURL = @"";

    // service 移动支付接口,固定
    order.service = @"mobile.securitypay.pay";

    // payment_type 支付类型
    order.paymentType = @"1";

    // _input_charset  参数编码字符集
    order.inputCharset = @"utf-8";

    // it_b_pay 未付款交易的超时时间
    order.itBPay = @"30m";

    // show_url 商品展示地址,这个链接的作用是在支付宝收银台的商品链接旁边有个下
    order.showUrl = @"m.alipay.com";

    // 这个可以定义成宏  与info.plist中的URLSchem需要填写一致,以便成功回调
    NSString *appScheme = @"alisdkdemo";

3 . 将需要的框架导入工程中(两个部分都需要导入)
框架

4 . 导入所需要文件(当前是只在客服端跑,其实加密之类的都应该是后台处理)

导入文件

5 . 接下来编译可能会出现错误

错误1:

错误1

说明没有导入两个类库,导入到pch中即可,不然需要导入几个文件内

#import <UIKit/UIKit.h>
#import <Foundation/Foundation.h>

错误2:
错误2

没有将头文件路径进行关联,可处理: (格式:格式如下 $(PROJECT_DIR)/文件夹名)
处理

  1. 回调入口代码
- (BOOL)application:(UIApplication *)application openURL:(NSURL *)url sourceApplication:(NSString *)sourceApplication annotation:(id)annotation
{

    //如果极简开发包不可用,会跳转支付宝钱包进行支付,需要将支付宝钱包的支付结果回传给开发包
    if ([url.host isEqualToString:@"safepay"]) {
        [[AlipaySDK defaultService] processOrderWithPaymentResult:url standbyCallback:^(NSDictionary *resultDic) {
            //【由于在跳转支付宝客户端支付的过程中,商户app在后台很可能被系统kill了,所以pay接口的callback就会失效,请商户对standbyCallback返回的回调结果进行处理,就是在这个方法里面处理跟callback一样的逻辑】
            NSLog(@"result = %@",resultDic);
        }];
    }
    if ([url.host isEqualToString:@"platformapi"]){//支付宝钱包快登授权返回authCode

        [[AlipaySDK defaultService] processAuthResult:url standbyCallback:^(NSDictionary *resultDic) {
            //【由于在跳转支付宝客户端支付的过程中,商户app在后台很可能被系统kill了,所以pay接口的callback就会失效,请商户对standbyCallback返回的回调结果进行处理,就是在这个方法里面处理跟callback一样的逻辑】
            NSLog(@"result = %@",resultDic);
        }];
    }
    return YES;
}

实际处理这里写图片描述

代码如下:

  [[AlipaySDK defaultService] payOrder:orderString fromScheme:appScheme callback:^(NSDictionary *resultDic) {
            NSLog(@"reslut = %@",resultDic);
        }];

请求成功返回如下:

{
memo = "";  // 提示信息
result = "partner=\"2088101568358171\"&seller_id=\"xxx@alipay.com\"&out_trade_no=\"0819145412-6177\"&subject=\"测试\"&body=\"测试测试\"&total_fee=\"0.01\"&notify_url=\"http://notify.msp.hk/notify.htm\"&service=\"mobile.securitypay.pay\"&payment_type=\"1\"&_input_charset=\"utf-8\"&it_b_pay=\"30m\"&success=\"true\"&sign_type=\"RSA\"&sign=\"hkFZr+zE9499nuqDNLZEF7W75RFFPsly876QuRSeN8WMaUgcdR00IKy5ZyBJ4eldhoJ/2zghqrD4E2G2mNjs3aE+HCLiBXrPDNdLKCZgSOIqmv46TfPTEqopYfhs+o5fZzXxt34fwdrzN4mX6S13cr3UwmEV4L3Ffir/02RBVtU=\"";
resultStatus = "9000";
}

返回参数字典解析:

resultStatus 状态码

 9000 订单支付成功  
 8000 正在处理中  
 4000 订单支付失败  
 6001 用户中途取消   
 6002 网络连接出错

memo 提示信息(备忘录)
result订单信息,及签名验证信息。

可参考文档:
集成支付宝钱包支付iOS SDK的方法与经验

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值