iOS开发技术之支付宝支付

一、支付宝支付简易流程:

用户 —》商户客户端—》支付宝客户端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,查看案例

https://doc.open.alipay.com/doc2/detail.htm?spm=a219a.7629140.0.0.O0PgAV&treeId=54&articleId=104509&docType=1

 

5、集成项目,代码实现

支付宝集成流程详解

https://doc.open.alipay.com/docs/doc.htm?spm=a219a.7629140.0.0.mCFv8i&treeId=193&articleId=105295&docType=1

 

步骤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);//返回的支付结果}];

原文地址:https://www.cnblogs.com/yuhao309/p/7281816.html