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
随机推荐
- hive大数据倾斜总结
在做Shuffle阶段的优化过程中,遇到了数据倾斜的问题,造成了对一些情况下优化效果不明显.主要是因为在Job完成后的所得到的 Counters是整个Job的总和,优化是基于这些Counters得出的 ...
- .NETFramework类库
.NET Framework 包括可加快和优化开发过程并提供对系统功能的访问的类.接口和值类型. 为了便于语言之间进行交互操作,大多数 .NET Framework 类型都符合 CLS,因而可在编译器 ...
- winform —— 对话框和流及打印
对话框: 注意引用using System.IO; showdialog();显示对话框,返回一个dialogresult的枚举类型 colorDialog:color属性,用来获取颜色 folde ...
- EntityFramework1
1.ORM都是Select * ,即使不需要某些字段,也要查询出来,效率是否很低. 可以使用视图来解决,比如对于列表页,可以定义一个视图,只查询列表中需要使用的字段,然后将列表映射为实体 2.ORM中 ...
- 判断网络是否连接Internet
添加 system32.Management 引用 private bool ListenNET() { ManagementObjectSearcher s = ...
- 在C#实现托盘效果(转)
桌面程序的开发中,经常考虑能在状态栏实现托盘快捷操作,托盘程序的实现在API时代,还是相对复杂的,首先在MSDN中可以查看其函数细节, 然后在根据其要求的参数进行复杂的设置. 在.NET时代 ...
- oracle数据块的大小
标准数据块用于临时表空间和系统表空间,同时也是一个表空间数据块的默认值.标准数据块的大小是在创建数据库时由参数DB_BLOCK_SIZE确定的.若要改变这一设置必须重建数据库. DB_CACHE_SI ...
- Windows -DOS 下Yii创建应用及出错处理
Win7下,以管理员身份运行cmd.exe 本例是在wamp环境下:切换到d盘,再切换到framework目录.............1--C:\windows\system32>d: 2-- ...
- 一个简化的printf函数
<C和指针>第7章第5道编程题: 实现一个简化的printf函数,它能够处理%d.%f.%s 和 %c 格式码,根据ANSI标准的原则,其他格式码的行为是未定义的.你可以假定已经存在函数 ...
- Oracle EBS-SQL (MRP-3):检查例外信息查询_建议取消_采购订单.sql
select msi.segment1 编码 ,msi.description ...