支付宝SDK
来源:互联网 发布:快速傅里叶变换 知乎 编辑:程序博客网 时间:2024/05/22 06:42
<iframe id="cproIframe_u2394728_1" width="728" height="90" src="http://pos.baidu.com/acom?adn=1&at=38&aurl=&cad=1&ccd=24&cec=UTF-8&cfv=19&ch=0&col=zh-CN&conOP=0&cpa=1&dai=1&dis=0&ltr=https%3A%2F%2Fwww.baidu.com%2Flink%3Furl%3DHoEYvkz9nkC_KLMPvvLZWEepPrr4UG1joTG712zdJK5zZsXdNA5uLIorbhYs7lx1io8i1Ir8pmksBlsVEj_cchE_QlrBwig16vzD71jwX2zqoNnshKVTcfLhQrmRRRP1Rpqk2PGysSK3TZLXH6vlnX4wj7UXE0M3KVNEteg7PitMmlKHT_PgcbEjlq6_EFLD0nXaY7gl3lrjKABKtWbB8rPUo0rTo4Nve_SJo4EwwY_9oFpUFyaQDBGKP6gHmMPzCDNbsqYO99yTLcGZ9zcpbq%26wd%3D%26eqid%3Dc948e0f8000006da0000000356499e8e&ltu=http%3A%2F%2Fwww.mikel.cn%2F%25E5%25BC%2580%25E5%258F%2591%25E7%25AC%2594%25E8%25AE%25B0%2F%25E8%25BD%25AC%25E8%25BD%25BDios-%25E5%25A6%2582%25E4%25BD%2595%25E9%259B%2586%25E6%2588%2590%25E6%2594%25AF%25E4%25BB%2598%25E5%25AE%259D-%25E6%25B8%2585%25E6%25BE%2588saup-%25E5%258D%259A%25E5%25AE%25A2%25E5%259B%25AD.html&lunum=6&n=mikel_cpr&pcs=1366x579&pis=10000x10000&ps=242x112&psr=1366x768&pss=1366x287&qn=001d9f2a7d0463bf&rad=&rsi0=728&rsi1=90&rsi5=2&rss0=%23FFFFFF&rss1=%23FFFFFF&rss2=%230000FF&rss3=%23444444&rss4=%23008000&rss5=&rss6=%23e10900&rss7=&scale=&skin=&td_id=2394728&tn=text_default_728_90&tpr=1447665386893&ts=1&version=2.0&xuanting=0&dtm=BAIDU_DUP2_SETJSONADSLOT&dc=2&di=u2394728&ti=iOS%E5%BC%80%E5%8F%91%7C%20%5B%E8%BD%AC%E8%BD%BD%5DiOS-%20%E5%A6%82%E4%BD%95%E9%9B%86%E6%88%90%E6%94%AF%E4%BB%98%E5%AE%9D%20%E2%80%93%20%E6%B8%85%E6%BE%88Saup%20%E2%80%93%20%E5%8D%9A%E5%AE%A2%E5%9B%AD%20%7C%20Mikel&tt=1447665386857.39.143.149" align="center,center" marginwidth="0" marginheight="0" scrolling="no" frameborder="0" allowtransparency="true" style="margin: 0px; padding: 0px;"></iframe>
[转载]iOS- 如何集成支付宝 – 清澈Saup – 博客园.
现在不少app内都集成了支付宝功能
使用支付宝进行一个完整的支付功能,大致有以下步骤:
1>先与支付宝签约,获得商户ID(partner)和账号ID(seller)
(这个主要是公司的负责)
2>下载相应的公钥私钥文件(加密签名用)
3>下载支付宝SDK(登录网站:http://club.alipay.com/)
里面提供了非常详细的文档、如何签约、如何获得公钥私钥、如何调用支付接口。
4>生成订单信息
5>调用支付宝客户端,由支付宝客户端跟支付宝安全服务器打交道
6>支付完毕后返回支付结果给商户客户端和服务器
SDK里有集成支付宝功能的一个Demo> 集成支付功能的具体操作方式,可以参考Demo
当第一次打开Demo时,可能会出现以下问题:
错误原因很简单,就是项目的部署版本设置太低了,从3.0改为4.3即可
要想集成支付功能,依赖以下文件夹的库文件(把这3个添加到你的客户端中)
调用支付接口可以参考AlixPayDemoViewController的下面方法
-(void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath
如何创建订单 ( 订单根据自己公司看是什么样的)
如何签名
如何调用支付接口
都在这个方法里面了
01
//
02
//选中商品调用支付宝快捷支付
03
//
04
- (
void
)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath
05
{
06
/*
07
*点击获取prodcut实例并初始化订单信息
08
*/
09
Product *product = [_products objectAtIndex:indexPath.row];
10
11
/*
12
*商户的唯一的parnter和seller。
13
*本demo将parnter和seller信息存于(AlixPayDemo-Info.plist)中,外部商户可以考虑存于服务端或本地其他地方。
14
*签约后,支付宝会为每个商户分配一个唯一的 parnter 和 seller。
15
*/
16
//如果partner和seller数据存于其他位置,请改写下面两行代码
17
NSString *partner = [[NSBundle mainBundle] objectForInfoDictionaryKey:@
"Partner"
];
18
NSString *seller = [[NSBundle mainBundle] objectForInfoDictionaryKey:@
"Seller"
];
19
20
//partner和seller获取失败,提示
21
if
([partner length] == 0 || [seller length] == 0)
22
{
23
UIAlertView *alert = [[UIAlertView alloc] initWithTitle:@
"提示"
24
message:@
"缺少partner或者seller。"
25
delegate:self
26
cancelButtonTitle:@
"确定"
27
otherButtonTitles:nil];
28
[alert show];
29
[alert release];
30
return
;
31
}
32
33
/*
34
*生成订单信息及签名
35
*由于demo的局限性,本demo中的公私钥存放在AlixPayDemo-Info.plist中,外部商户可以存放在服务端或本地其他地方。
36
*/
37
//将商品信息赋予AlixPayOrder的成员变量
38
AlixPayOrder *order = [[AlixPayOrder alloc] init];
39
order.partner = partner;
40
order.seller = seller;
41
order.tradeNO = [self generateTradeNO];
//订单ID(由商家自行制定)
42
order.productName = product.subject;
//商品标题
43
order.productDescription = product.body;
//商品描述
44
order.amount = [NSString stringWithFormat:@
"%.2f"
,product.price];
//商品价格
45
order.notifyURL = @
"http://www.xxx.com"
; //回调URL
46
47
//应用注册scheme,在AlixPayDemo-Info.plist定义URL types,用于快捷支付成功后重新唤起商户应用
48
NSString *appScheme = @
"AlixPayDemo"
;
49
50
//将商品信息拼接成字符串
51
NSString *orderSpec = [order description];
52
NSLog(@
"orderSpec = %@"
,orderSpec);
53
54
//获取私钥并将商户信息签名,外部商户可以根据情况存放私钥和签名,只需要遵循RSA签名规范,并将签名字符串base64编码和UrlEncode
55
id<DataSigner> signer = CreateRSADataSigner([[NSBundle mainBundle] objectForInfoDictionaryKey:@
"RSA private key"
]);
56
NSString *signedString = [signer signString:orderSpec];
57
58
//将签名成功字符串格式化为订单字符串,请严格按照该格式
59
NSString *orderString = nil;
60
if
(signedString != nil) {
61
orderString = [NSString stringWithFormat:@
"%@&sign=\"%@\"&sign_type=\"%@\""
,
62
orderSpec, signedString, @
"RSA"
];
63
64
//获取快捷支付单例并调用快捷支付接口
65
AlixPay * alixpay = [AlixPay shared];
66
int
ret = [alixpay pay:orderString applicationScheme:appScheme];
67
68
if
(ret == kSPErrorAlipayClientNotInstalled) {
69
UIAlertView * alertView = [[UIAlertView alloc] initWithTitle:@
"提示"
70
message:@
"您还没有安装支付宝快捷支付,请先安装。"
71
delegate:self
72
cancelButtonTitle:@
"确定"
73
otherButtonTitles:nil];
74
[alertView setTag:123];
75
[alertView show];
76
[alertView release];
77
}
78
else
if
(ret == kSPErrorSignError) {
79
NSLog(@
"签名错误!"
);
80
}
81
82
}
83
84
[tableView deselectRowAtIndexPath:indexPath animated:YES];
85
}
主要集成的关键就是下面几步:
01
//.封装订单模型
02
AlixPayOrder *order = [[AlixPayOrder alloc] init];
03
// 生成订单描述
04
NSString *orderSpec = [order description];
05
06
//2.签名
07
id<DataSigner> signer = CreateRSADataSigner(@“私钥key”);
08
// 传入订单描述 进行 签名
09
NSString *signedString = [signer signString:orderSpec];
10
11
12
//3.生成订单字符串
13
NSString *orderString = [NSString stringWithFormat:@
"%@&sign=\"%@\"&sign_type=\"%@\""
,
14
orderSpec, signedString, @
"RSA"
];
15
16
//4.调用支付接口
17
AlixPay * alixpay = [AlixPay shared];
18
// appScheme:商户自己的协议头
19
int
ret = [alixpay pay:orderString applicationScheme:appScheme];
0 0
- 支付宝sdk支付
- 支付宝支付sdk解析
- 支付宝SDK IOS
- 支付宝SDK使用
- 支付宝SDK IOS
- 支付宝sdk问题
- 支付宝sdk
- 支付宝SDK IOS
- 支付宝SDK集成
- 支付宝SDK
- 支付宝SDK地址
- 支付宝SDK
- 支付宝SDK导入
- 支付宝sdk
- 支付宝 sdk 调试
- 支付宝SDK
- 接入支付宝SDK
- 支付宝SDK
- 栈和队列1 – 数据结构和算法23
- java日期类封装
- Skynet 源码学习 -- 二级消息队列,Worker 工作线程池, Monitor 。
- 二叉树算法验证(4)哈夫曼树
- Ubuntu下使用wireshark进行网络抓包
- 支付宝SDK
- 实际应用中,如何管理多个Activity?
- 马的Hamilton周游路线问题
- SSH整合教程(struts2+spring3+hibernate3)(含登陆示例)
- Oracle函数汇总
- 第十周实践项目2 二叉树遍历的递归算法
- 栈和队列2 – 数据结构和算法24
- kindeditor取不到textarea的值的解决办法
- java获取当前时间、当前零点零分零秒、昨天这一时间