美文网首页iOS面试知识点收集
ios记录一下自己集成支付宝移动支付的流程--

ios记录一下自己集成支付宝移动支付的流程--

作者: antns丶 | 来源:发表于2016-05-20 16:25 被阅读478次

1.首先上支付宝移动支付官方文档地址

网页如下图:


支付宝集成图1.png

下载SDK,并按照集成详细流程里面需要导入的依赖图导入相关依赖,别导入重复了!!

2.然后在infoPlist里添加设置需要的URLSchemes:


dfadfbaadbabadbd.png

3.添加白名单和网络配置


白名单 .png

貌似现在不添加白名单也不打印警告信息了,去年还打印来着,不知道为什么,那位大神知道为什么请私信告诉我一下。。


网络设置.png

4.从公司拿到注册的企业支付宝账号,添加应用,和配置公钥,添加应用最好提前做了,因为要审核。
上传公钥就需要生成RSA私钥及公钥,这块我也不知道为什么我用mac自带的openssl生成的秘钥给java后台他说通不过,,然后在windows系统上生成的就可以,我了个擦,也有可能是他处理得不对,那位大神知道为什么请私信告诉我一下。。
秘钥生成流程支付宝官方文档地址

mac生成流程:
第一步用终端命令打开openssl 输入命令:openssl
第二步生成私钥命令:genrsa -out rsa_private_key.pem 1024
因为我们后台是java所以需要把私钥转成pkcs8格式 输入命令:pkcs8 -topk8 -inform PEM -in rsa_private_key.pem -outform PEM -nocrypt
第三部生成公钥命令:rsa -in rsa_private_key.pem -pubout -out rsa_public_key.pem
好了生成的文件和终端如下图:

yaoshi.png
终端.png
找不到这两个文件,搜索名称可以,或者打开finder 按住 shift+command+g 然后输入~/ 再enter就找到了
好了,然后把私钥给后台用于做签名使用。公钥我们拿来上传到公司的支付宝账号上,这两个文件在mac上是打不开的,复制一份把后缀名改成text就打开了。。。
然后复制上传。。这里也是一个坑啊。我擦。
支付宝上传RSA公钥文档地址

然而这个网站目前不好使了,无论怎么复制都会提示你公钥格式错误。。去年其实我上传了一个公钥,但是现在要换了,就是换,点了修改,然后不做任何操作直接保存都是格式错误,好吧,,貌似说的都是废话,,,
下面上有用的上传公钥地址

或者你直接登录支付宝开放平台,点击右上角的 账户及密钥管理 进入到如下页面:


圣诞节方法时发生的.png

在合作伙伴秘钥这儿上传。主要上传的时候要主要格式,官方文档有所。。
好了秘钥也上传好了,上代码了调支付了;
在要用到支付宝支付的地方导入:#import <AlipaySDK/AlipaySDK.h>

从后台那根据请求到调用支付需要的签名过的请求信息。调用代码就一句:
这块当然你也可以像支付宝demo里一样在本地进行签名。。。看支付宝demo。。。
<pre>
NSLog(@"orderString == %@",orderString);
// orderString 就是请求下来的签名过的请求信息
// Scheme 就是之前添加的URL Schemes
[[AlipaySDK defaultService] payOrder:orderString fromScheme:@"jinyiqiaoAlipay" callback:^(NSDictionary *resultDic) {
// 在这里处理支付的回调信息
返回码官方文档说明地址

}];
</pre>

在这里遇到过几个错误:
1.交易订单处理失败,请稍后再试。(ALI59)
这个错误上网查了下是请求信息的total_fee="0.01999998"参数不正确,金额参数支付宝单位是元,所以最小为两位小数total_fee=“0.01"
2.交易订单处理失败,请稍后再试。(ALI64)
支付官方文档解释地址
按照说的4点一一检查发现还是参数问题。。
官方文档的这个参数:

sign="lBBK%2F0w5LOajrMrji7DUgEqNjIhQbidR13GovA5r3TgIbNqv231yC1NksLdw%2Ba3JnfHXoXuet6XNNHtn7VE%2BeCoRO1O%2BR1KugLrQEZMtG5jmJIe2pbjm%2F3kb%2FuGkpG%2BwYQYI51%2BhA3YBbvZHVQBYveBqK%2Bh8mUyb7GM1HxWs9k4%3D” 进行了url编码,把特殊字符转成了%2F这种格式。。然而我们后台没给转,打印显示的是+号等。改成Url编码就好了。。

appDelegate里的配置按照官方文档来就是了:
官方文档配置支付宝客户端返回url处理方法。
(外部存在支付包钱包,支付宝钱包将处理结果通过url返回。)
如示例AliSDKDemo\APAppDelegate.m文件中,增加引用代码:
<pre>

import <AlipaySDK/AlipaySDK.h>

</pre>
在@implementation AppDelegate中增加如下代码:
<pre>

  • (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;
    }
    </pre>

到这里支付就成功了。。

相关文章

  • ## [iOS 支付宝支付]

    [iOS开发系列-支付宝支付] 概述 开发中支付通常都会集成支付宝支付,下面讲解支付宝的整体流程。 集成支付宝支付...

  • iOS集成支付宝-Swift版

    iOS集成支付宝-Swift版 如果要了解整个支付流程可以阅读文章《手机App集成微信支付&支付宝-iOS&And...

  • iOS 支付宝支付

    支付宝支付流程 支付宝的集成按着官方文档来 ios支付宝集成流程 签名呀注册AppKey 我们是由后台完成的App...

  • iOS支付宝功能集成

    iOS快速集成支付宝详解/支付宝集成获取私钥与公钥 在集成支付宝功能前,我们必须了解下什么支付宝流程,下图是支付宝...

  • iOS集成支付宝SDK

    最近项目中需要集成支付宝和微信,所以记录一下。目前支付宝的SDK版本是v15.2.0。 支付宝 iOS支付宝SDK...

  • iOS Alipay -支付宝

    iOS 集成Alipay -支付宝支付 集成 AliPay - 支付宝

  • iOS支付宝和微信的集成

    支付宝 iOS移动支付宝大概流程 下载支付宝Demo以后从Demo的Show in Finder中导入SDK,如下...

  • ios-支付集成

    iOS开发之第三方支付支付宝支付教程,史上最新最全第三方支付宝支付方式实现、支付宝集成教程,支付宝实现流程 iOS...

  • 支付宝支付流程(I)

    参考资料:支付宝支付集成支付宝支付集成实现蚂蚁金服iOS支付集成

  • iOS集成支付宝/微信支付遇到的坑...

    最近在集成微信/支付宝支付,下面是集成的大体流程以及遇到的一些坑,特此记录.首先来谈下微信支付(因为集成支付宝支付...

网友评论

    本文标题:ios记录一下自己集成支付宝移动支付的流程--

    本文链接:https://www.haomeiwen.com/subject/ofxgrttx.html