iOS 集成支付宝
简介:
商家在App应用中集成支付宝支付功能。
首先介绍一下流程:如下图所示
1.第一步:用户在商家App中选择商品下单,确认购买进入支付环节,选择支付宝,用户点击确认支付

2.第二步:进入支付宝页面,调起支付宝支付,出现确认支付界面

3.第三步:用户确认收款方和金额,点击支付后输入密码,支付宝显示支付结果

4.输入正确密码后,支付宝限制支付结果

5.自动跳回到商家App中,商家根据付款结果个性化展示订单处理结果

集成:
步骤一:首先到支付宝官方下载支付宝SDK,当然也可以把我git上demo中的AliPay文件直接拷贝然后放入自己项目中(包含SDK以及其他项目中所需要的类文件)
步骤二:当我们把支付宝的SDK及所需类文件拿到项目中,不要先着急编译,以为支付宝SDK还需要其他的依赖库,如下图所示:
<注意一定要把所有库添加全,否则会报其他不必要的错误!!!!!!,然而浪费时间>

步骤三:导入头文件,#import "MyAliPayHeader.h"我在这个类中导入了支付宝SDK需要的头文件,宏定义了一些需要的东西,只是为了示例!! 可以自由发挥
步骤四:当我们SDK、依赖库以及头文件导入完全后,此时进行编译
编译成功:那么说明的的SDK已经集成成功了
会遇到错误:‘openssl/asn1.h‘ file not found:
这是openssl文件夹头文件链接问题,如果openssl文件夹随意拉进项目中,即使添加头文件链接,也可能解决不了此问题,这也是问什么一开始就将所需要的文件放到一个新建文件夹中再添加到项目中的原因。
解决:Targets->Build Settings->Header Search Path,建立的SDK的文件路径
步骤五:代码
步骤六:成功吊起后测试支付
可能会遇到错误:rsa_private read error : private key is NULL
解决方案:1)在RSADataSigner.m文件中 搜索代码
[resultappendString:@"-----BEGINPRIVATEKEY-----\n"];
将其改成
[resultappendString:@"-----BEGINRSAPRIVATEKEY-----\n"];
2)在RSADataSigner.m文件中 搜索代码
[resultappendString:@"\n-----ENDPRIVATEKEY-----"];
将其改成
[resultappendString:@"\n-----ENDRSAPRIVATEKEY-----"];
解决方案:1) A、将私钥转成PKCS8替换一下原私钥即可
1、生成私钥pem, 执行命令 openssl genrsa -out rsa_private_key.pem 1024
2、生成公钥,执行命令 openssl rsa -in rsa_private_key.pem -pubout -out rsa_public_key.pem
3、 将RSA私钥转换成PKCS8格式,命令执行 openssl pkcs8 -topk8 -inform PEM -in rsa_private_key.pem -outform PEM -nocrypt
( PHP服务端语言读取私钥不需要PKCS8转换)
步骤七:返回app,在回调方法中处理支付成功显示信息
总结:
完成了一个简单的介绍,支付宝集成还是很简单的,把自己遇到的一些小坑写了出来,以防大家掉坑