码迷,mamicode.com
首页 > 其他好文 > 详细

高速集成支付宝支付步骤及注意事项(原创)

时间:2017-07-24 13:17:23      阅读:225      评论:0      收藏:0      [点我收藏+]

标签:notify   except   head   mon   data-   color   目录   val   client   

本文介绍了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);
        }];
    }
    returnYES;
}

好了之后。

在AlipayRequestConfig.m中。能够看到支付宝返回的内容

技术分享

下面是官方文档给出的错误码描写叙述


技术分享


到这里基本就结束了。


之后假设你的秘钥错误 可能会出现例如以下问题

用模拟器測试可能提示

技术分享

用真机測试是这种 

技术分享


技术分享

等申请好秘钥填好全部信息之后执行一切正常

最后附上支付宝官方文档链接:https://doc.open.alipay.com/doc2/detail.htm?spm=a219a.7629140.0.0.3AADE5&treeId=59&articleId=104352&docType=1

高速集成支付宝支付步骤及注意事项(原创)

标签:notify   except   head   mon   data-   color   目录   val   client   

原文地址:http://www.cnblogs.com/slgkaifa/p/7228057.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!