实现支付宝支付的所需
1. 填写个人/公司的信息,与支付宝签约,签约完成, 支付宝会提供一些数据给我们(商户ID - partner id seller id, 收款人账号 - 支付宝账号) 注: 签约时 公司需提供营业执照 个人需提供有效身份证件
2. 获取支付相关 私钥 和 密钥 用来加密 实现数据安全
3. 下载支付SDK,拖进工程
下载SDK的地址
https://b.alipay.com/newIndex.htm
1. 找到 移动支付 按钮 点击进入 2 如图
2. 点击 技术集成 对应切换到 3 如图
3. 点击 请点此下载集成开发包
4. 下载完成 后 产生一个 WS_MOBILE_PAY_SDK_BASE的ZIP压缩包
5. 解压完成, 进入文件目录 找到对应的 支付宝钱包支付接口开发包2.0标准版 目录
6. 找到对应的 Demo 目录
7. 打开对应目录 找到Demo文件 并打开工程
8. 集成SDK到你的工程中时, 需将下图中对应的文件拖入你的工程
9. 如下图依次倒入系统框架 到 Linked Frameworks and Libraries
10. 创建预编译文件 .pch
注: Xcode 6以后 将pch文件取消, 因此需手动添加 添加步骤如图
最后一步 需双击Prefix Header 并输入 $(SRCROOT)/支付宝SDK/AlipaySDK-Prefix.pch
11. 将支付宝官方Demo的pch文件中的代码 复制到 自己生成的pch文件中
12. 有些文件找寻不到需给其路径, 因此需在Header Search Paths 中添加搜索路径
13. Command + B 编译通过
14. 核心代码
NSString
*partner =
@"
partner 商户 ID:支付宝给申请支付集成人的身份
"
;
NSString *seller = @"
seller 账号 ID:商户的支付宝帐号
";
NSString
*privateKey =
@“私钥"
;
/*
*
生成订单信息及签名
*/
//
将商品信息赋予
AlixPayOrder
的成员变量
Order
*order = [[
Order
alloc
]
init
];
order.
partner
= partner;
order.seller = seller;
order.
tradeNO
= [
self
generateTradeNO
];
//
订单
ID
(由商家自行制定)
order.productName = product.subject; //
商品标题
order.
productDescription
= product.
body
;
//
商品描述
order.amount = [NSString stringWithFormat:@"%.2f",product.price]; //
商品价格
order.service = @"mobile.securitypay.pay";
order.
paymentType
=
@"1"
;
order.
inputCharset
=
@"utf-8"
;
order.
itBPay
=
@"30m"
;
//
应用注册
scheme,
在
AlixPayDemo-Info.plist
定义
URL types
//
appScheme 应用的加调地址:
支付完成,跳回原应用时使用
NSString
*appScheme =
@"alisdkdemo"
;
//
将商品信息拼接成字符串
NSString
*orderSpec = [order
description
];
NSLog(@"orderSpec = %@",orderSpec);
//
获取私钥并将商户信息签名
,
外部商户可以根据情况存放私钥和签名
,
只需要遵循
RSA
签名规范
,
并将签名字符串
base64
编码和
UrlEncode
id
<
DataSigner
> signer =
CreateRSADataSigner
(privateKey);
//防止字符串被修改
NSString *signedString = [signer signString:orderSpec];
//
将签名成功字符串格式化为订单字符串
,
请严格按照该格式
NSString
*orderString =
nil
;
if (signedString != nil) {
orderString = [
NSString
stringWithFormat
:
@"%@&sign=\"%@\"&sign_type=\"%@\""
,
orderSpec, signedString, @"RSA"];
[[AlipaySDK defaultService] payOrder:orderString fromScheme:appScheme callback:^(NSDictionary *resultDic) {
NSLog
(
@"reslut = %@"
,resultDic);
}];
}