1.前言
1.推出支付宝支付的详细流程。
2.支付宝的使用步骤:
1.我们下载和查看支付宝支付的Demo。
2.我们直接进入到支付宝的支付平台参考进集成的支付宝:
[https://doc.open.alipay.com/doc2/detail.htm?spm=a219a.7629140.0.0.jIUkAQ&treeId=59&articleId=103675&docType=1](https://doc.open.alipay.com/doc2/detail.htm?spm=a219a.7629140.0.0.jIUkAQ&treeId=59&articleId=103675&docType=1)
- 集成过程基本就是按照上面的四个流程就可以完成了IOS的支付宝的支付
4.我们的世界集成的步骤:
<1>点击下载SDK和Demo
<2>进入到下一个界面,网址给出了https://doc.open.alipay.com/doc2/detail.htm?treeId=54&articleId=104509&docType=1
<3>下载之后解压:
<4>运行Demo之后:
<4>我们会发现,不管我们点击那个Cell都会弹出这个的信息提示框。我们需要在源码中找到弹出这个信息的地方,这里顺便教大家一个快速找到目标代码的方法。
你看弹出框提示的是:"缺少partner或者seller或者私钥",然后就这样:
<5> 从上面图中的148、149、150行代码,我们可以看到,我们需要三个参数的值:partner、seller、privateKey。
那么这三个参数就需要商户app申请的:
3.开始我们自己的项目:
1.添加SDK:
2.添加SDK依赖库:
3.我们创建一个订单对象:AlipayOrder:
4.我们把支付宝Demo中的订单对象拷贝进去
5.我们来处理支付的代码:
6.下面的代码是拷贝的主要的代码就在里面了
- (void)aliPay {
2 // 支付宝支付
3 /* 在调用支付宝支付之前,需要我们将相关订单参数发送至我们的后台服务器,由后台服务器进行签名处理,
4 并返回客户端所有相关参数,客户端直接使用参数调起支付宝支付。
5 /
6 /
7 商户的唯一的parnter和seller。
8 签约后,支付宝会为每个商户分配一个唯一的 parnter 和 seller。
9 /
10
11 /============================================================================/
12 /=======================需要填写商户app申请的===================================/
13 /============================================================================/
14 NSString partner = @"";
15 NSString seller = @"";
16 NSString privateKey = @"";
17 /============================================================================/
18 /============================================================================/
19 /============================================================================/
20
21 //partner和seller获取失败,提示
22 if ([partner length] == 0 ||
23 [seller length] == 0 ||
24 [privateKey length] == 0)
25 {
26 UIAlertView alert = [[UIAlertView alloc] initWithTitle:@"提示"
27 message:@"缺少partner或者seller或者私钥。"
28 delegate:self
29 cancelButtonTitle:@"确定"
30 otherButtonTitles:nil];
31 [alert show];
32 return;
33 }
34
35 /
36 *生成订单信息及签名
37 */
38 //将商品信息赋予AlixPayOrder的成员变量
39 AlipayOrder *order = [[AlipayOrder alloc] init];
40 order.partner = partner;
41 order.seller = seller;
42 order.tradeNO = @"1234567890"; //订单ID(由商家自行制定)
43 order.productName = @"测试商品标题"; //商品标题
44 order.productDescription = @"测试商品描述"; //商品描述
45 order.amount = @"0.01"; //商品价格
46 order.notifyURL = @"http://www.xxx.com"; //回调URL
47
48 order.service = @"mobile.securitypay.pay";
49 order.paymentType = @"1";
50 order.inputCharset = @"utf-8";
51 order.itBPay = @"30m";
52 order.showUrl = @"m.alipay.com";
53
54 //应用注册scheme,在AlixPayDemo-Info.plist定义URL types
55 NSString *appScheme = @"alisdkdemo";
56
57 //将商品信息拼接成字符串
58 NSString *orderSpec = [order description];
59 NSLog(@"orderSpec = %@",orderSpec);
60
61 //获取私钥并将商户信息签名,外部商户可以根据情况存放私钥和签名,只需要遵循RSA签名规范,并将签名字符串base64编码和UrlEncode
62 // id<DataSigner> signer = CreateRSADataSigner(privateKey);
63
64 // 签名值由服务器处理并返回客户端
65 NSString *signedString = @"xxxxxxx_sign";
66
67 //将签名成功字符串格式化为订单字符串,请严格按照该格式
68 NSString *orderString = nil;
69 if (signedString != nil) {
70 orderString = [NSString stringWithFormat:@"%@&sign="%@"&sign_type="%@"",
71 orderSpec, signedString, @"RSA"];
72
73 // 发起支付
74 [[AlipaySDK defaultService] payOrder:orderString fromScheme:appScheme callback:^(NSDictionary *resultDic) {
75 NSLog(@"支付结果 reslut = %@",resultDic);
76 }];
77 }
78
79 }
7.我们需要应用中注册appShceme,这个appShceme可以从下面的代码中先谢谢
![image.png](http://upload-images.jianshu.io/upload_images/2182103-6b574b07728f8e81.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)
8.添加appScheme
![image.png](http://upload-images.jianshu.io/upload_images/2182103-f5734a1b1341f43d.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)
- 支付代码处理之后,我们处理回调结果,我们需要在Appdelegate中添加支付宝头文件#import <AlipaySDK/AlipaySDK.h>并添加处理回到结果的代理方法:
![image.png](http://upload-images.jianshu.io/upload_images/2182103-b3790f9c51c41ac9.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)
10.别忘了添加按钮监听和设置商户ID的参数
![image.png](http://upload-images.jianshu.io/upload_images/2182103-15d6ea81bdac9ac1.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)
11.如果我们在使用支付宝支付的时候,如果我们手机安装了支付宝app,就会调用支付宝进行支付。
如果我们手机没有安装了支付宝app,就会调用H5界面进行支付。