iOS支付宝支付详细实现流程

支付在很多主流的APP中都会用到,最常见的支付是支付宝、微信、银联等。

刚好公司项目都需要用到,目前只调试好了支付宝,之前想抽时间写,总是拖拖拉拉的,索性在后台写微信支付的时候狠下心来把支付宝SDK集成以及支付实现记录下来,后续会陆续放上微信,银联等支付文章,不足之处希望各位看官谅解,小子会加以改正。

注意:支付宝开发文档多看几遍!!!

一起看一下支付宝支付流程图,这样方便大家理解每一步后台做了什么,移动端需要怎么进行配合:

1.首先在支付宝平台创建应用,获取appid,appid是16位数字,在项目中需要用到(之后开通支付功能)。open.alipay.com

2.获取appid之后,下载官方调试Demo,https://docs.open.alipay.com/54/104509

之后会看到分别有iOS和Android代码,打开如下:

a.分别将下图中的1,2放到自己的工程当中

b.添加一下需要的依赖库,支付宝文档中可查到https://docs.open.alipay.com/204/105295/

c.工程中在Info下找到Url Types,添加支付宝的Url Schemes,支付的时候需要使用

然后运行demo,基本不会报错,报错的话,查一下文档,会有解决办法

支付宝SDK集成完成了,那么下面就是支付流程,也就是demo了:

这里的图片是以上下载的支付宝支付调试Demo,支付方法里面的demo可以根据自己需要进行更改,

这里贴上我在项目中使用的demo:

这里需要后台给一个接口,获取订单的总额,外部订单号,通知url,body,subject以便支付的时候进行更换

自己项目中还需要更换的就是之前获取的APPID,私钥AliPrivate,AliScheme,

 1 NSURL * myURL_APP_A = [NSURL URLWithString:@"alipay:"];
 2     if (![[UIApplication sharedApplication] canOpenURL:myURL_APP_A]) {
 3         //如果没有安装支付宝客户端那么需要安装
 4         [MBProgressHUD showMBPAlertView:@"您还没有安装支付宝" withSecond:2.0];
 5         return;
 6     }
 7     NSDictionary *dic = @{
 8                           @"orderNo":orderModel.orderNo
 9                           };
10     [[SG_HttpsTool sharedSG_HttpsTool] postWithURL:SHAlipayRequestUrl params:dic success:^(id JSON, int code, NSString *msg) {
11
12         if (code == 0) {
13
14             SH_PayAlipayModel *aliModel = [SH_PayAlipayModel mj_objectWithKeyValues:JSON[@"alipaymentOrder"]];
15             //私钥是后台分发的
16             NSString *rsa2PrivateKey = AliPrivateKey;
17             NSString *rsaPrivateKey = @"";
18             //AppIDhe PrivateKey没有配置的提示
19             if ([AlipayAppId length] == 0 || [AliPrivateKey length] == 0) {
20                 UIAlertView *alert = [[UIAlertView alloc] initWithTitle:@"提示" message:@"缺少appid或者私钥" delegate:self cancelButtonTitle:@"确定" otherButtonTitles:nil];
21                 [alert show];
22                 return;
23             }
24
25
26             /**
27              *  生成订单信息
28              *  将商品信息赋予AliPayOrder的成员变量
29              */
30             Order *order = [[Order alloc] init];
31             //appid---》之前获得的APPID
32             order.app_id = AlipayAppId;
33             //支付接口名称
34             order.method = @"alipay.trade.app.pay";
35             //参数编码格式
36             order.charset = @"utf-8";
37             //当前时间点
38             NSDateFormatter *formatter = [NSDateFormatter new];
39             [formatter setDateFormat:@"yyyy-MM-dd HH:mm:ss"];
40             order.timestamp = [formatter stringFromDate:[NSDate date]];
41
42             //支付版本
43             order.version = @"1.0";
44             order.sign_type = (rsa2PrivateKey.length > 1)?@"RSA2":@"RSA";
45             order.notify_url = aliModel.notifyUrl;
46
47             order.biz_content = [BizContent new];
48             order.biz_content.body = aliModel.Description;
49             //支付宝支付页面的订单信息
50             order.biz_content.subject = aliModel.title;
51             //订单id----》后台返回的
52             order.biz_content.out_trade_no = aliModel.outTradeNo;
53             //超时时间
54             order.biz_content.timeout_express = @"30s";
55             //价格---》后台返回
56             order.biz_content.total_amount = aliModel.totalAmount;
57
58             order.biz_content.product_code = @"QUICK_MSECURITY_PAY";
59
60             /**
61              *  将商品信息拼接成字符串
62              */
63             NSString *orderInfo = [order orderInfoEncoded:NO];
64             NSString *orderInfoEncoded = [order orderInfoEncoded:YES];
65             //SHLog(@"orderSpec = %@", orderInfo)
66
67             //获取私钥并将商户信息签名,外部商户的加签过程务必放在服务端,防止公钥数据泄露
68             //需要遵循RSA签名规范,并将签名字符串base64编码和UrlEncode
69             NSString *signedString = nil;
70             APRSASigner* signer = [[APRSASigner alloc] initWithPrivateKey:((rsa2PrivateKey.length > 1)?rsa2PrivateKey:rsaPrivateKey)];
71             if ((rsa2PrivateKey.length > 1)) {
72                 signedString = [signer signString:orderInfo withRSA2:YES];
73             } else {
74                 signedString = [signer signString:orderInfo withRSA2:NO];
75             }
76             SHLog(@"%@", signedString)
77             //如果加签成功,则继续执行支付
78             if (signedString != nil) {
79                 //应用注册scheme,在info.plist定义URL types
80                 //将签名成功字符串格式化为订单字符串,请严格按照该格式
81                 NSString *orderString = [NSString stringWithFormat:@"%@&sign=%@", orderInfoEncoded, signedString];
82                 //调用支付结果开始支付, AliAppScheme-->之前设置的Url Schemes
83
84                 [[AlipaySDK defaultService] payOrder:orderString fromScheme:AliAppScheme callback:^(NSDictionary *resultDic) {
85                     int resultStatus = [resultDic[@"resultStatus"] intValue];
86                     SHLog(@"%d", resultStatus)
87                     if (resultStatus == 9000) {
88
89                     }
90                 }];
91
92             }
93
94         }
95     } failure:^(NSError *error) {
96
97     }];

以上步骤完成之后,那么就可以调起支付宝进行支付了

下面开始支付宝支付结果之后的操作:

根据支付结果,进行通知处理,然后进行自己业务上的实现

原文地址:https://www.cnblogs.com/zhoutf/p/9272913.html

时间: 2024-11-05 16:03:45

iOS支付宝支付详细实现流程的相关文章

iOS支付宝支付(Alipay)详细接入流程以及项目中遇到的问题分析

iOS支付宝支付(Alipay)详细接入流程以及项目中遇到的问题分析 浏览: 149 发布日期: 2016-10-19  分类: ios 最近在项目中接入了微信支付和支付宝支付,总的来说没有那么坑,很多人都说文档不全什么的,确实没有面面 俱到,但是认真一步一步测试下还是妥妥的,再配合懂得后台,效率也是很高的,看了这篇文章,你也只要几分钟, 就能轻松接入支付宝,在别人投来崇拜的眼光的同时,你就能潇洒的回一句,略懂略懂......   先给大家我写的微信支付,很详细哦,喜欢的点个赞点击打开微信支付链

iOS支付宝支付--密钥制作

本文作为"iOS支付宝支付适配iOS9"补充--密钥制作(mac) 一.打开终端 第一行: openssl 第二行: genrsa -out rsa_private_key.pem 1024 第三行: rsa -in rsa_private_key.pem -pubout -out rsa_public_key.pem 第四行:(将RSA私钥转换成PKCS8格式) pkcs8 -topk8 -inform PEM -in rsa_private_key.pem -outform PEM

iOS支付宝支付

支付宝支付 -- 适配iOS9首先我们一起看一下,最终调起支付宝完成支付的必要参数和方法(Order类由支付宝demo中提供) 1 Order *order = [Order new]; 2 order.partner = kAliPayPartner; 3 order.seller = kAliPaySeller; 4 order.tradeNO = @"111"; 5 order.productName = @"阿里支付test商品"; //商品标题 6 ord

iOS支付宝集成详细流程

实现支付宝支付的准备工作: 1.向支付宝签约,成为支付宝的商户 签约完成后,支付宝会提供一些必要的数据给我们 商户ID:partner 账号ID:seller 即支付宝账号 签约需要营业执照 2.获取支付相关的  私钥和密钥,这两个东西为了数据安全 上面这几个东西只要签约成功就可以看到 3.下载支付宝的SDK 下载网址: http://doc.open.alipay.com/doc2/detail?treeId=59&articleId=103563&docType=1 上面部分是准备工作

iOS 支付宝支付繁忙ALI59

在iOS 调用支付宝支付时出现此提示. 主要情况为 tradeNO   amount等参数中  有特殊字符 导致, 在此处打个断点 po 一下相应的参数就好了. 在此也收集下调用支付宝支付出现的问题. 欢迎留言.

Cocos2dx使用ios内支付IAP具体流程-白白

今天总结了一下cocos2d-x使用ios内支付iap的具体流程,封装好了调用接口,代码与具体说明在此 http://download.csdn.net/detail/u010229677/8156677,大家能够直接调用. 白白原创http://blog.csdn.net/u010229677 1.  appstore信息完好 首先肯定有一个能够公布产品的开发人员账号,有一个能够执行应用的开发环境,IAP仅仅能真机測试.我们必须有一台IOS设备. 我们进行的全部操作都是在mac上面进行的,測试

iOS 支付宝支付

在开发过程中,经常需要接入第三方支付.下面对支付进行一个概括. 支付宝支付 支付宝SDK下载地址:https://doc.open.alipay.com/doc2/detail?treeId=54&articleId=103419&docType=1 支付宝集成 在支付宝集成的过程中,会遇到一些报错,下面就碰到的报错,和大家一起解决. 集成参考官方文档: 导入代码文档:https://doc.open.alipay.com/doc2/detail.htm?spm=0.0.0.0.RiFaV

iOS支付宝支付总结

1.按照http://doc.open.alipay.com/doc2/detail?spm=0.0.0.0.SWdJgo&treeId=59&articleId=103676&docType=1 <URLname:导入代码>将包给塞进去,配置好白名单和安全访问 安全访问在info.plist中 2. 配置包路径,一定是show in finder中的路径 Framework search Paths :$(PROJECT_DIR)/XWMerchant/ThirdPa

ios 支付宝支付流程(具体操作)

步骤1:  启动IDE(如Xcode),把iOS包中的压缩文件中以下文件拷贝到项目文件夹下, 并导入到项目工程中. AlipaySDK.bundle    AlipaySDK.framework 步骤2:  在需要调用AlipaySDK的文件中,增加头文件引用.#import <AlipaySDK/AlipaySDK.h> 步骤3: 配置请求信息. Order *order = [[Order alloc] init];           order.partner = partner;//