iOS集成支付宝
这个是需要审核的【3天左右 以邮件形式告知你】
使用支付宝进行一个完整的支付功能,大致有以下步骤:
1>先与支付宝签约,获得商户ID(partner)和账号ID(seller)
(这个主要是公司的负责)
2>下载相应的公钥私钥文件(加密签名用)
3>下载支付宝SDK(登录网站:http://club.alipay.com/)
里面提供了非常详细的文档、如何签约、如何获得公钥私钥、如何调用支付接口。
4>生成订单信息
5>调用支付宝客户端,由支付宝客户端跟支付宝安全服务器打交道
6>支付完毕后返回支付结果给商户客户端和服务器
+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
详细步骤
目前移动支付的主要商家有支付宝、微信支付、银联支付等。当然我们优选的还是支付宝,因为支付宝有着中国最多的用户量,市场占有量高,用户黏性强,而且使用也极其简单,只需要几分钟我们就可以快速的集成到我们的项目当中。
1. #import "AppDelegate.h"
2. #import <AlipaySDK/AlipaySDK.h>
3.
4. @interface AppDelegate ()
5.
6. @end
7.
8. @implementation AppDelegate
9.
10.
11. - (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
12. // Override point for customization after application launch.
13. return YES;
14. }
15.
16. //回调方法
17. - (BOOL)application:(UIApplication *)application openURL:(NSURL *)url sourceApplication:(NSString *)sourceApplication annotation:(id)annotation {
18. //如果极简 SDK 不可用,会跳转支付宝钱包进行支付,需要将支付宝钱包的支付结果回传给 SDK if ([url.host isEqualToString:@"safepay"]) {
19. [[AlipaySDK defaultService] processOrderWithPaymentResult:url standbyCallback:^(NSDictionary *resultDic) {
20. NSLog(@"result = %@",resultDic);
21. }];
22. if ([url.host isEqualToString:@"platformapi"]){//支付宝钱包快登授权返回 authCode
23. [[AlipaySDK defaultService] processAuthResult:url standbyCallback:^(NSDictionary *resultDic) {
24. NSLog(@"result = %@",resultDic);
25. }];
26. }
27. return YES;
28. }
29.
1. #import "ViewController.h"
2. #import "Order.h"
3. #import "DataSigner.h"
4. #import <AlipaySDK/AlipaySDK.h>
5.
6. @interface ViewController ()
7. - (IBAction)pay;
8.
9. @end
10.
11. @implementation ViewController
12.
13. - (void)viewDidLoad {
14. [super viewDidLoad];
15.
16. }
17.
18. //支付按钮点击的方法
19. - (IBAction)pay {
20. //下面3个参数 我这里不写了 因为这是我们公司的商户ID和私匙,你们可以用自己公司申请的填到上面。
21. NSString *partner = @"";
22. NSString *seller = @"";
23. NSString *privateKey = @"";
24. //如果partner和seller获取失败,提示用户
25. if ([partner length] == 0 ||
26. [seller length] == 0 ||
27. [privateKey length] == 0)
28. {
29. UIAlertView *alert = [[UIAlertView alloc] initWithTitle:@"提示"
30. message:@"缺少partner或者seller或者私钥。"
31. delegate:self
32. cancelButtonTitle:@"确定"
33. otherButtonTitles:nil];
34. [alert show];
35. return;
36. }
37. //2.创建订单对象
38. Order *order=[[Order alloc]init];
39. order.partner=partner;
40. order.seller=seller;
41. //订单ID(由商家自行制定)
42. order.tradeNO=@"201591734927845485340";
43. //商品标题
44. order.productName=@"iphone 6s" ;
45. //商品描述
46. order.productDescription = @"超高配置 2个内存 配A9处理器 其性能是iphone6的1.8倍";
47. //商品价格
48. order.amount = @"0.01" ;
49. //回调URL
50. order.notifyURL = @"http://www.xxx.com";
51. order.service = @"mobile.securitypay.pay";
52. order.paymentType = @"1";
53. order.inputCharset = @"utf-8";
54. order.itBPay = @"30m";
55. order.showUrl = @"m.alipay.com";
56.
57. NSString *appScheme = @"thinklion";
58.
59. //将商品信息拼接成字符串 商品信息也是服务器返回的
60. NSString *orderSpec = [order description];
61. //此数据是服务器返回的证书类型
62. //获取私钥并将商户信息签名,外部商户可以根据情况存放私钥和签名,只需要遵循RSA签名规范,并将签名字符串base64编码和UrlEncode
63. id<DataSigner> signer = CreateRSADataSigner(privateKey);
64. //此签名信息是Util和openssl里面的文件生成的数据 其实应该是我们服务器端给我们返回的
65. NSString *signedString = [signer signString:orderSpec];
66.
67. NSLog(@"orderSpec = %@",orderSpec);
68.
69. NSString *orderString = [NSString stringWithFormat:@"%@&sign=\"%@\"&sign_type=\"%@\"",
70. orderSpec, signedString, @"RSA"];
71.
72. //如果有签名字符串 才打开支付
73. if(signedString!=nil){
74. [[AlipaySDK defaultService] payOrder:orderString fromScheme:appScheme callback:^(NSDictionary *resultDic) {
75. NSLog(@"reslut = %@",resultDic);
76. }];
77.
78. }
79.
80. }
81.
82.
//将商品信息拼接成字符串 商品信息也是服务器返回的
NSString *orderSpec = [orderdescription];
//此数据是服务器返回的证书类型
//获取私钥并将商户信息签名,外部商户可以根据情况存放私钥和签名,只需要遵循RSA签名规范,并将签名字符串base64编码和UrlEncode
id<DataSigner> signer =CreateRSADataSigner(privateKey);
//此签名信息是Util和openssl里面的文件生成的数据 其实应该是我们服务器端给我们返回的
NSString *signedString = [signersignString:orderSpec];
iOS集成支付宝的更多相关文章
- iOS集成支付宝支付
本文由本人原创发表于博客园,转载请注明出处 http://www.cnblogs.com/wangqw/p/5074907.html 一. 开发前准备 iOS 支付宝SDK下载地址:(内含iOS An ...
- iOS - (集成支付宝SDK大坑总结)
其实集成支付宝相对于集成微信支付来说,支付宝算是简单的了,后续有空再去研究微信支付,现目前先总结一下集成支付宝所遇到的坑,其实支付宝的坑也不算太多,细算下来大概5-6个左右,但是其报错方式有点恶心,不 ...
- iOS - (集成支付宝第三方SDK大坑总结)
其实集成支付宝相对于集成微信支付来说,支付宝算是简单的了,后续有空再去研究微信支付,现目前先总结一下集成支付宝所遇到的坑,其实支付宝的坑也不算太多,细算下来大概5-6个左右,但是其报错方式有点恶心,不 ...
- iOS 集成支付宝过程中 我遇到的一些坑,请大家注意啦(ALI69错误,ALI64错误)
支付宝很早一段时间就集成了,之前由于一直忙于开发就没有总结,今天整理桌面的时候看到,当时做支付时候的一些散落的笔记,就稍微整理一下,给大家分享一下. 第一:当时调用支付宝的时候,总是调不起来,进过断点 ...
- iOS 集成支付宝遇到的问题(续)
调起支付宝进行支付时提示private key is null ,碰到这个问题有两种解决方案 第一种. 将私钥转成PKCS8替换一下原私钥即可 1.生成私钥pem, 执行命令openssl genr ...
- iOS——集成支付宝 系统繁忙,请稍后再试ALI40247
问题描述:在调用支付宝时,老是显示,系统繁忙,请稍后再试ALI40247. 解决方案: 一.如何签约APP支付接口 第一步:进入管理中心:https://openhome.alipay.com/p ...
- iOS——集成支付宝 系统繁忙,请稍后再试ALI10
问题描述:调用支付宝时,显示系统繁忙,请稍后再试(ALI10).代码没有报错,其他也是按照文档来的,为何老是提示显示系统繁忙? 解决方案:还需要在targets的中info里面,添加 url typ ...
- iOS——集成支付宝 ’openssl/asn1.h' file not found
问题原因:文件路径找不到的问题 解决方法:在 Building Settings -> Search Paths -> Header Search Paths 里,添加一个文件路径:$(P ...
- IOS 集成支付宝和邮件发送
列表中自找 :http://blog.csdn.net/sing_sing?viewmode=contents
随机推荐
- Oracle Enterprise linux 7 安装Oracle11gR2
一.修改主机名和IP地址: [root@localhost Desktop]# cat /etc/hosts127.0.0.1 localhost.localdomain localhost 192. ...
- python 笔记3--高级特性
切片 语法 L[l:r] 取L[l],L[l+1]-L[r-2],L[r-1] L[l:r:m] 取L[l],L[l+m],L[l+2*m],L[l+3*m]-.(满足l+n*m<=r-1) t ...
- 实战Lucene,初始Lucene
实战 Lucene,第 1 部分: 初识 Lucene 本文首先介绍了 Lucene 的一些基本概念,然后开发了一个应用程序演示了利用 Lucene 建立索引并在该索引上进行搜索的过程. 10 评论: ...
- sql server保留小数解决方法
在数据库中,我们有时会用到小数,怎样在数据库中转化小数呢,下面是一些常用的方法. 1.使用Round(字段名/数字,小数保留位数)方法,如下所示: select Round(3.333,2) 结果如下 ...
- centos添加sudoers
CentOS添加sudoers 1.chmod 740 /etc/sudoers 2. ## Allow root to run any commands anywhere root A ...
- Sql Server获得每个表的行数
SELECT o.[name], ddps.[row_count] FROM sys.indexes AS i INNER JOIN sys.objects AS o ON i.[object_id] ...
- HDU 5145 - NPY and girls
题意: cases T(1≤T≤10) (0<n,m≤30000) (0<ai≤30000) n个数ai 表示n个女孩所在教室 m次询问 [L,R](1 <= L <= ...
- java 小数点取2位并且四舍五入
BigDecimal bd = new BigDecimal(0.0199999999999); System.out.println("res:"+bd.setScale(2, ...
- Android url中文编码问题
最近项目遇见一个很奇葩问题,关于URL问题,项目中加载图片,图片的URL含有中文,但是,我的手机可以加载,没问题,同事也都可以,但是测试手机却不可以,加载失败,找到问题,就是URL含有中文问题. 解决 ...
- #event.initMouseEvent
initMouseEvent 方法用于初始化通过 DocumentEvent 接口创建的 MouseEvent 的值.此方法只能在通过 dispatchEvent 方法指派 MouseEvent 之前 ...