一、支付宝支付简易流程:
用户 —》商户客户端—》支付宝客户端SDK —》支付宝服务端 —》商户服务端 —》支付宝服务端SDK
二、支付宝支付顺序流程:
1.用户选好了商品后,点击提交订单,选择使用支付宝付款。
2.手机客户端(用户APP)把用户选择的商品的信息传给后台服务器。
3.后台的服务器将各种数据拼接签名后生成一个签名后的字符串,回传到客户端APP上。
4.用户点击确认支付按钮,调用手机支付宝客户端(手机上装的支付宝APP),利用后台传过来的那个参数调起支付宝,让支付宝客户端传给他们服务器交互,进行付款。(这一步是支付宝自己完成的,安全性高)
5.支付宝的服务器将支付的结果(可能成功也可能不成功)返回给手机支付宝客户端和你们公司的后台服务器。
6.你们公司后台服务器收到后一般是更新下数据信息(这个信息不用管),手机支付宝客户端会显示一下支付成功,咱们的客户端也可以显示一个订单支付成功之类的东西(就像在手机12306订票,用支付宝支付后支付宝客户端会说一次支付成功,12306也会说一次支付成功,咱们就像12306客户端一样,需要再说一次订单支付成功)。
iOS客户端:
- 调用支付宝支付接口
- 处理支付宝返回的支付结果
- 服务器端:
- 生成订单(可以在iOS客户端内生成,也可以在服务器端生成)
- 调用支付宝支付接口,发送订单
- 处理支付宝返回的支付结果
二、集成支付宝SDK的步骤:
1、向支付宝申请,与支付宝签约,获得商户ID(partner)和账号ID(seller)
2、下载相应的公钥私钥文件(加密签名用)
3、下载支付宝SDK
4、生成订单信息,签名加密
5、调用支付宝客户端,由支付宝客户端跟支付宝安全服务器打交道
支付完毕后,支付宝客户端会自动跳回到原来的应用程序
6、在原来的应用程序中显示支付结果给用户看
三、数据交互:
1、构造订单数据并签名
2、发送请求数据
3、支付宝移动支付SDK对请求数据进行处理
4、返回处理的数据结果
5、对获取的数据结果进行处理
四、应用支付总体步骤:
1、支付宝开放平台创建应用
https://open.alipay.com/platform/home.htm
a. 登录支付宝账户,创建一个新的应用
b. 设置应用信息,可以修改,也可以在上线时再设置
c. 配置应用环境(生成器生成的公钥在这进行设置,iOS使用原始私钥,andriod使用pkcs8私钥)
d. 参照文档,下载生成器
e. 私钥生成器的使用
f. 生成公钥私钥后,将公钥粘贴进应用环境的,应用公钥中(这一步需要发送手机号验证码确认后,才能进行公钥设置)
g. 给应用配置相应的功能
添加功能->选择相应功能—>添加完成
2、签约移动支付功能
https://doc.open.alipay.com/doc2/detail.htm?treeId=58&articleId=103542&docType=1
3、接入支付前的准备工作
a. 商户密钥管理(支付宝商户标识(如partnerID、APPID等)
https://doc.open.alipay.com/doc2/detail.htm?treeId=58&articleId=103543&docType=1
b.生成RSA私钥和公钥(安卓使用pkcs8私钥)
https://doc.open.alipay.com/doc2/detail.htm?treeId=58&articleId=103242&docType=1
c.上传RSA公钥
https://doc.open.alipay.com/doc2/detail.htm?treeId=58&articleId=103578&docType=1
4、配置官方Demo,查看案例
5、集成项目,代码实现
支付宝集成流程详解
步骤1:调用order.m里的函数description将商品信息拼接成字符串作为待签名字符串NSString authInfoStr = [authInfo description];*步骤2:使用类CreateRSADataSigner,调用signString签名函数做签名id<DataSigner> signer = CreateRSADataSigner(privateKey); 步骤3:把签名结果赋值给参数sign,并把sign加入之前的待签名数组中,此时得到的便是要请求给支付宝的全部数据。**authInfoStr = [NSString stringWithFormat:@"%@&sign=%@&sign_type=%@", authInfoStr, signedString, @"RSA"];
步骤4:调用(AlipaySDK *)defaultService类下面的支付接口函数,唤起支付宝支付页面。
[[AlipaySDK defaultService] payOrder:orderString fromScheme:appScheme callback:^(NSDictionary *resultDic) {NSLog(@"reslut = %@",resultDic);}];
步骤5:当这笔交易被买家支付成功后支付宝收银台上显示该笔交易成功,并提示用户返回。此时在APAppDelegate.m的 - (BOOL)application:(UIApplication )application openURL:(NSURL )url sourceApplication:(NSString )sourceApplication annotation:(id)annotation 中调用获取返回数据的代码【iOS9.0以上(包括iOS9.0)需要在 - (BOOL)application:(UIApplication )app openURL:(NSURL )url options:(NSDictionary<NSString, id> )options 中执行 】:[[AlipaySDK defaultService]processOrderWithPaymentResult:urlstandbyCallback:^(NSDictionary resultDic) {NSLog(@"result = %@",resultDic);//返回的支付结果}];