1.首先下载支付宝SDK AlipaySDK.bundle
和AlipaySDK.framework(去支付宝SDK官网下载最新SDK,具体以支付宝SDK介绍为准)
2.添加依赖库
其中,需要注意的是:
如果是Xcode 7.0之后的版本,需要添加libc++.tbd、libz.tbd;
如果是Xcode 7.0之前的版本,需要添加libc++.dylib、libz.dylib
3.创建
,添加prefix header file
PCH文件
,在#import <Foundation/Foundation.h>
Build Settings
中的prefix header
设置pch文件路径
4.在
Build Settings
中Header Search Paths
添加头文件引用路径,[文件路径]/AlipaySDK/
5.在需要调用AlipaySDK的文件中,增加头文件引用
#import <AlipaySDK/AlipaySDK.h>
#import "Order.h"
#import "DataSigner.h"
6.生成订单信息及签名
//将商品信息赋予AlixPayOrder的成员变量
Order *order = [[Order alloc] init];
order.partner = PartnerID; // 商户ID
order.seller = SellerID; // 账号ID
order.tradeNO = @"20150923"; //订单ID(由商家自行制定)
order.productName = @"iPhone6s"; //商品标题
order.productDescription = @"新年打折"; //商品描述
order.amount = @"0.01"; //商品价格(单位:元)
order.notifyURL = @"http://www.chaosky.me"; //回调URL,支付成功或者失败回调通知自己的服务器进行订单状态变更
order.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
NSString *appScheme = @"AliPayDemo";
//将商品信息拼接成字符串
NSString *orderSpec = [order description];
NSLog(@"orderSpec = %@",orderSpec);
//获取私钥并将商户信息签名,外部商户可以根据情况存放私钥和签名,只需要遵循RSA签名规范,并将签名字符串base64编码和UrlEncode
id<DataSigner> signer = CreateRSADataSigner(PartnerPrivKey);
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);
}];
}
7.Xcode设置URL scheme
URL Scheme值为代码中对应的值,必须一致
添加头文件 #import <AlipaySDk/AlipaySDk.h>
然后添加下面代码
(BOOL)application:(UIApplication *)application openURL:(NSURL *)url sourceApplication:(NSString *)sourceApplication annotation:(id)annotation{ //如果极简开发包不可用,会跳转支付宝钱包进行支付,需要将支付宝钱包的支付结果回传给开发包 if ([url.host isEqualToString:@"safepay"]) { [[AlipaySDK defaultService] processOrderWithPaymentResult:url standbyCallback:^(NSDictionary * resultDic) { //【由于在跳转支付宝客户端支付的过程中,商户app在后台很可能被系统kill了,所以pay接口的callback就会失效,请商户对standbyCallback返回的回调结果进行处理,就是在这个方法里面处理跟callback一样的逻辑】 NSLog(@"result = %@",resultDic); }]; } if ([url.host isEqualToString:@"platformapi"]){//支付宝钱包快登授权返回authCode [[AlipaySDK defaultService] processAuthResult:url standbyCallback:^(NSDictionary * resultDic) { //【由于在跳转支付宝客户端支付的过程中,商户app在后台很可能被系统kill了,所以pay接口的callback就会失效,请商户对standbyCallback返回的回调结果进行处理,就是在这个方法里面处理跟callback一样的逻辑】 NSLog(@"result = %@",resultDic); }]; } return YES;}
大 功 告 成