在线支付是现在大多数app必有的功能, 一般有支付宝支付, 微信支付, 信用卡支付. 今天讲讲如何实现支付宝支付, 希望对广大的初学者程序员用帮助
实现⽀付宝⽀付的所需
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.notifyURL=
@"http://www.xxx.com";//
服务器回调的urlorder.service
= @"mobile.securitypay.pay";order.paymentType
= @"1";
order.inputCharset
= @"utf-8";
order.itBPay = @"30m";order.showUrl = @"m.alipay.com";
//应⽤用注册scheme,在AlixPayDemo-Info.plist定义URL types//appScheme 应用的加调地址:支付完成,跳回原应用时使用NSString *appScheme = @"alisdkdemo";//将商品信息拼接成字符串
NSString *orderSpec = [order description];NSLog(@"orderSpec = %@",orderSpec);
//获取私钥并将商户信息签名,外部商户可以根据情况存放私钥和签名,只需要
遵循RSA签名规范,并将签名字符串base64编码和UrlEncodeid<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); }];