支付宝集成
2016-03-08 18:07
627 查看
支付宝集成虽然有了官方的文档说明,但还有些让人迷惑,部分问题的解决方案也并不清楚,这次权做整理一番。
1 . 打开Demo第一个看到的便是需要填写三个值
私钥生成
2 . 其次便是其他的几个属性:参考 支付宝官网
3 . 将需要的框架导入工程中(两个部分都需要导入)
4 . 导入所需要文件(当前是只在客服端跑,其实加密之类的都应该是后台处理)
5 . 接下来编译可能会出现错误
错误1:
说明没有导入两个类库,导入到pch中即可,不然需要导入几个文件内
错误2:
没有将头文件路径进行关联,可处理: (格式:格式如下 $(PROJECT_DIR)/文件夹名)
回调入口代码
实际处理
代码如下:
请求成功返回如下:
返回参数字典解析:
resultStatus 状态码
memo 提示信息(备忘录)
result订单信息,及签名验证信息。
可参考文档:
集成支付宝钱包支付iOS SDK的方法与经验
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:
说明没有导入两个类库,导入到pch中即可,不然需要导入几个文件内
#import <UIKit/UIKit.h> #import <Foundation/Foundation.h>
错误2:
没有将头文件路径进行关联,可处理: (格式:格式如下 $(PROJECT_DIR)/文件夹名)
回调入口代码
- (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\"¬ify_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的方法与经验
相关文章推荐
- 峰回路转,Firefox 浏览器即将重返 iOS 平台
- 峰回路转,Firefox 浏览器即将重返 iOS 平台
- 不可修补的 iOS 漏洞可能导致 iPhone 4s 到 iPhone X 永久越狱
- iOS 12.4 系统遭黑客破解,漏洞危及数百万用户
- 每日安全资讯:NSO,一家专业入侵 iPhone 的神秘公司
- [转][源代码]Comex公布JailbreakMe 3.0源代码
- 讲解iOS开发中基本的定位功能实现
- iOS中定位当前位置坐标及转换为火星坐标的方法
- js判断客户端是iOS还是Android等移动终端的方法
- iOS应用中UISearchDisplayController搜索效果的用法
- IOS开发环境windows化攻略
- iOS应用中UITableView左滑自定义选项及批量删除的实现
- 浅析iOS应用开发中线程间的通信与线程安全问题
- 检测iOS设备是否越狱的方法
- C#支付宝扫码支付代码完整版
- .net平台推送ios消息的实现方法
- jquery图片轮播插件仿支付宝2013版全屏图片幻灯片
- 基于OpenCart 开发支付宝,财付通,微信支付参数错误问题
- 支付宝咻一咻怎么用 Android帮你实现咻一咻