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
随机推荐
- sublimetext3官网安装
1. 下载 可以从官网 http://www.sublimetext.com/3 下载. 2. Windows下安装与使用2.1 安装 1. Win7 64位系统,可以下载 Windows 64 bi ...
- 详解AJAX核心 —— XMLHttpRequest 对象 (下)
继续上一篇的内容上一篇关于XMLHttpRequest 对象发送对服务器的请求只说到了用Get方式,没有说Post方式的.那是因为要说Post方式就需要先说另外一个东西,那就是DOM(Document ...
- MFC CSplitterWnd的用法
用MFC开发一个软件界面中需要拆分多个试图窗口时,使用CSplitterWnd类 CSplitterWnd类主要用在创建一个拆分试图窗口.通常嵌入在框架窗口中(CMainFrame) 创建步骤: 1 ...
- Js中JSON.stringify()与JSON.parse()与eval()详解及使用案例
JSON(JavaScript Object Notation)是一种轻量级的数据交换格式.因为采用独立于语言的文本格式,也使用了类似于C语言家族的习惯,拥有了这些特性使使JSON称为理想的数据交换语 ...
- Mysql查询高速缓存区
为了提高查询速度,Mysql会维护一个内存区域(官方文档指出,大小至少41984B)对查询结果进行缓存,当查询时发现缓存区里有数据则直接返回结果而不用去执行sql语句. 查询命中的条件 每个缓存查询至 ...
- YUM更换源--yum找不到安装包(转)
公司提供的CentOS VM中,/etc/yum.repos.d 下 只有一个build.repo,其中提供的yum 源只有公司内部的几个源,很多包在这些源中都找不到.于是要添加别的源,下面的帖子中介 ...
- Linux下 nginx + 最新版php5.5 安装配置详解
1.nginx的安装: 首先nginx的安装需要依赖最基础的三个包,这里面我们不设计更多的扩展模块,只是安装最基础的三个包, zlib 此包主要是对http内容进行gzip压缩,减少网络传输流量 PC ...
- 记glide框架使用中所遇到的问题
最近实在是太忙,每有时间写博客.记得之前写过一篇关于glide加载图片不显示的博客,但是给出最终的解决方法.这次我将把在项目中使用glide所遇到的问题总结一下. 1.使用glide最好对glide进 ...
- android关于window
http://mobile.51cto.com/android-259922_all.htm http://mobile.51cto.com/android-259922.htm http://mob ...
- 【N年前的文章脑补:HttpHandler HttpModule入门篇】
HttpHandler HttpModule入门篇 ASP.Net处理Http Request时,使用Pipeline(管道)方式,由各个HttpModule对请求进行处理,然后到达 HttpHand ...