iOS开发如何集成支付宝SDK
2016-06-10 19:44
731 查看
iOS开发——高级篇——如何集成支付宝SDK
一、什么是支付宝
第三方支付平台和内购非常相似
内购是用户将钱付款给苹果,之后苹果分成给商户
支付宝是用户将钱付款给支付宝,之后支付宝将钱转入我们的账户
使用支付宝前提
购买的物品必须是和应用程序无关的.比如:团购卷/衣服/电子产品
如果和应用程序有关,必须采用内购(否则不允许上架).比如:会员/游戏道具
二、集成支付宝
现在不少app内都集成了支付宝功能使用支付宝进行一个完整的支付功能,大致有以下步骤:
向支付宝申请, 与支付宝签约,获得商户ID(partner)和账号ID(seller)和私钥(privateKey)
下载支付宝SDK
生成订单信息,签名加密
调用支付宝客户端,由支付宝客户端跟支付宝安全服务器打交道
支付完毕后,支付宝客户端会自动跳回到原来的应用程序
在原来的应用程序中显示支付结果给用户看
![](https://oscdn.geek-share.com/Uploads/Images/Content/202003/15/e152c3c1adade9f6264e29b64ac8b65b.png)
三、集成SDK注意事项
* 支付宝的SDK下载和百度、讯飞语言等SDK不一样,直接搜支付宝进入官网下载* 支付宝下载(选择我是商户用户—>如何集成—>移动开发)
* 集成前查看demo
* 集成时需要用到的库
![](https://oscdn.geek-share.com/Uploads/Images/Content/202003/15/11c09b40484a74e0ad87b1ce1dbd424d.png)
* 集成之后可能遇到的问题
1)集成SDK编译时找不到 openssl/asn1.h 文件
![](https://oscdn.geek-share.com/Uploads/Images/Content/202003/15/9f94928415335b15e3d29ded929ca026.png)
解决方案:Build Settings --> Search Paths --> Header Search paths : $(SRCROOT)/支付宝集成/Classes/Alipay
![](https://oscdn.geek-share.com/Uploads/Images/Content/202003/15/7bd97e749fc5a484026b764a17e88359.png)
2)链接时:找不到 SystemConfiguration.framework 这个库
![](https://oscdn.geek-share.com/Uploads/Images/Content/202003/15/3d73f426d41497388237c716a2201d78.png)
解决方案:
![](https://oscdn.geek-share.com/Uploads/Images/Content/202003/15/399cec9630617d66cbfb7d6c674f57a4.png)
四、具体代码
比如现在将产品展示在tableView上,选中时即购买此商品,集成支付宝的核心代码如下:- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath { // 1.取出模型对象 Product *product = self.products[indexPath.row]; // 2.购买商品 [self buyProduct:product]; } - (void)buyProduct:(Product *)product { // 1.添加写partner/seller/privateKey,签约后获得 NSString *partner = @""; NSString *seller = @""; NSString *privateKey = @""; // 2.生成订单 // 2.1.创建订单 Order *order = [[Order alloc] init]; // 2.2.设置商户ID/账号ID order.partner = partner; order.seller = seller; // 2.3.设置订单号 order.tradeNO = nil; // 2.4.设置产品相关的信息 order.productName = product.title; order.productDescription = product.detail; order.amount = [NSString stringWithFormat:@"%.2f", product.price]; // 2.5.设置订单常量 order.service = @"mobile.securitypay.pay"; order.paymentType = @"1"; order.inputCharset = @"utf-8"; order.itBPay = @"30m"; order.showUrl = @"m.alipay.com"; // 2.6.回调URL(异步通知服务器的地址) order.notifyURL = @"http://www.xxx.com"; //回调URL // 2.7.将订单信息拼接成字符串 NSString *orderSpec = [order description]; // 3.对订单进行签名加密 // 3.1.对订单进行加密 id<DataSigner> signer = CreateRSADataSigner(privateKey); NSString *signedString = [signer signString:orderSpec]; // 3.2.将签名成功字符串格式化为订单字符串,请严格按照该格式 NSString *orderString = [NSString stringWithFormat:@"%@&sign=\"%@\"&sign_type=\"%@\"", orderSpec, signedString, @"RSA"]; // 4.打开支付宝客户端进行支付(用户没有安装支付宝客户端,直接在应用程序中添加一个WebView,通过网页让用户进行支付) // 注意:如果是通过网页支付完成,那么会回调该block:callback [[AlipaySDK defaultService] payOrder:orderString fromScheme:@"jingdong" callback:^(NSDictionary *resultDic) { }]; }
AppDelegate.m
// 当通过别的应用程序,将该应用程序打开时,会调用该方法 - (BOOL)application:(UIApplication *)app openURL:(NSURL *)url options:(NSDictionary<NSString *,id> *)options { // 当用户通过支付宝客户端进行支付时,会回调该block:standbyCallback [[AlipaySDK defaultService] processOrderWithPaymentResult:url standbyCallback:^(NSDictionary *resultDic) { NSLog(@"result = %@",resultDic); }]; return YES; }
iOS开发——高级篇——如何集成支付宝SDK
原文:http://www.cnblogs.com/chglog/p/4847195.html
相关文章推荐
- 峰回路转,Firefox 浏览器即将重返 iOS 平台
- 峰回路转,Firefox 浏览器即将重返 iOS 平台
- 不可修补的 iOS 漏洞可能导致 iPhone 4s 到 iPhone X 永久越狱
- iOS 12.4 系统遭黑客破解,漏洞危及数百万用户
- 每日安全资讯:NSO,一家专业入侵 iPhone 的神秘公司
- [转][源代码]Comex公布JailbreakMe 3.0源代码
- 讲解iOS开发中基本的定位功能实现
- iOS中定位当前位置坐标及转换为火星坐标的方法
- js判断客户端是iOS还是Android等移动终端的方法
- iOS应用开发中AFNetworking库的常用HTTP操作方法小结
- iOS应用中UISearchDisplayController搜索效果的用法
- iOS App开发中的UISegmentedControl分段组件用法总结
- IOS开发环境windows化攻略
- iOS应用中UITableView左滑自定义选项及批量删除的实现
- iOS中UIAlertView警告框组件的使用教程
- 浅析iOS应用开发中线程间的通信与线程安全问题
- 检测iOS设备是否越狱的方法
- .net平台推送ios消息的实现方法
- 探讨Android与iOS,我们将何去何从?