高速集成支付宝支付步骤及注意事项(原创)
Posted slgkaifa
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了高速集成支付宝支付步骤及注意事项(原创)相关的知识,希望对你有一定的参考价值。
本文介绍了ios高速集成支付宝支付的方法。本文中介绍的方法是经过一次封装,因此配置完毕之后调用仅需一行代码就可以支付宝支付。很的方便,希望大家喜欢。
我仅仅是依据官方的文档,对支付宝的SDK做了进一步封装,当中密钥的生成非常easy。须要看官方的文档,官方的文档我在project附件文件夹里也有一份,假设须要立即集成,没工夫研究的话,能够大致看一下密钥的生成就可以,其它的配置我会在以下进行讨论。
要在iOS应用里集成支付宝支付,须要公司和支付宝签约,然后生成对应的密钥。密钥的生成支付宝的开发文档里已经说的很清楚了。这里就不再讨论。
以上是作者原文。
附上作者自己封装的支付宝支付SDK在git链接点击打开链接
将project中的IntegratedAlipay目录导入project中,记得选copy
点击项目名称,点击“Build Settings”选项卡,在搜索框中,以keyword“search” 搜索,对“Header Search Paths”添加头文件路径:“$(SRCROOT)/项目名称/IntegratedAlipay/AlipayFiles”(注意:不包含引號,假设不是放到项目根文件夹下,请在项目名称后面加上对应的文件夹名)
然后不包含引號是这种如图(小细节)
导入支付宝依赖的库
附上一段官方文档的话:
步骤2:在须要调用AlipaySDK的文件里。添加头文件引用。
1
|
# import <AlipaySDK/AlipaySDK.h> |
步骤3:假设你的app基于9.0编译。那么为了适配iOS9.0中的App Transport Security(ATS)对http的限制,这里须要对支付宝的请求地址alipay.com、alipayobjects.com做例外。在app相应的info.list中加入例如以下配置(文中以XML格式描写叙述)。
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
|
<key>NSAppTransportSecurity</key> <dict> <key>NSExceptionDomains</key> <dict> <key>alipay.com</key> <dict> <key>NSIncludesSubdomains</key> < true /> <key>NSTemporaryExceptionAllowsInsecureHTTPLoads</key> < true /> <key>NSTemporaryExceptionMinimumTLSVersion</key> <string>TLSv1. 0 </string> <key>NSTemporaryExceptionRequiresForwardSecrecy</key> < false /> </dict> <key>alipayobjects.com</key> <dict> <key>NSIncludesSubdomains</key> < true /> <key>NSTemporaryExceptionAllowsInsecureHTTPLoads</key> < true /> <key>NSTemporaryExceptionMinimumTLSVersion</key> <string>TLSv1. 0 </string> <key>NSTemporaryExceptionRequiresForwardSecrecy</key> < false /> </dict> </dict> </dict> |
说明:
假设商户配置了例如以下的配置:
1
2
3
4
|
<key>NSAppTransportSecurity</key> <dict> <key>NSAllowsArbitraryLoads</key>< true /> </dict> |
则上述的NSAppTransportSecurity能够不配置。
对于网络配置。
接下来
导入SDK 导入库之后 command + B 编译一下。
假设没错误最好。
假设有错误參照例如以下可能出现的问题
1.
问题详情:
(null): URGENT: all bitcode will be dropped because ‘xxxx’ was built without bitcode. You must rebuild it with bitcode enabled (Xcode setting ENABLE_BITCODE), obtain an updated library from the vendor, or disable bitcode for this target. Note: This will be an error in the future.
问题分析:
从上述的错误中应该能够看出。这是由于一个第三方的库不兼容,我的project中开启了 ENABLE_BITCODE (应该是升级之后自己主动转换的),而这个第三方的库在编译的时候没有 enable bitcode,所以导致上诉问题。
解决方法:
应该是有两种吧。一种就是换成 enable bitcode 的第三方库,再有一种就是将project的 ENABLE_BITCODE 设置为 false 就能够了。
由于我这里不太方便换库。所以,就把project的设置给改了一下。
详细操作方法例如以下:
2.在openssl中他定义的一些东西。
不能与你项目中自定义的宏有同名的
原来我项目中就有STORE 后来我改成了 STORe
如上图
3. SDK中 Order.m 文件是用MRC内存管理模式写的。
会有release
所以 不愿意手动删的 能够改成ARC
如图
(微信支付同理, 只是是有2个文件要改。支付宝是1个)
其它问题待遇到。执行成功
接下来
找到文件
在AlipayHeader.h中改动你须要的内容 比如
kPartnerID、
kSellerAccount、
kNotifyURL、
kAppScheme等。
对于这个scheme是回调时须要的要在APP中设置
如图
图中圈内内容 要和头文件里一样
仅仅需在须要跳转支付的地方调用此方法就可以
在App delegate中加入回调方法,下面是官方文档内的描写叙述
步骤5:配置支付宝client返回url处理方法。
(外部存在支付包钱包。支付宝钱包将处理结果通过url返回。)
如演示样例AliSDKDemo\APAppDelegate.m文件里,添加引用代码:
1
|
# import <AlipaySDK/AlipaySDK.h> |
在@implementation AppDelegate中添加例如以下代码:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
|
-
(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) { //【因为在跳转支付宝client支付的过程中,商户app在后台非常可能被系统kill了。所以pay接口的callback就会失效,请商户对standbyCallback返回的回调结果进行处理,就是在这种方法里面处理跟callback一样的逻辑】 NSLog(@ "result
= %@" ,resultDic); }]; } if ([url.host
isEqualToString:@ "platformapi" ]){ //支付宝钱包快登授权返回authCode [[AlipaySDK
defaultService] processAuthResult:url standbyCallback:^(NSDictionary *resultDic) { //【因为在跳转支付宝client支付的过程中,商户app在后台非常可能被系统kill了,所以pay接口的callback就会失效。请商户对standbyCallback返回的回调结果进行处理,就是在这种方法里面处理跟callback一样的逻辑】 NSLog(@ "result
= %@" ,resultDic); }]; } return YES; } |
好了之后。
在AlipayRequestConfig.m中。能够看到支付宝返回的内容
下面是官方文档给出的错误码描写叙述
到这里基本就结束了。
之后假设你的秘钥错误 可能会出现例如以下问题
用模拟器測试可能提示
用真机測试是这种
等申请好秘钥填好全部信息之后执行一切正常
最后附上支付宝官方文档链接:https://doc.open.alipay.com/doc2/detail.htm?spm=a219a.7629140.0.0.3AADE5&treeId=59&articleId=104352&docType=1
以上是关于高速集成支付宝支付步骤及注意事项(原创)的主要内容,如果未能解决你的问题,请参考以下文章