# 一、导入开发资源
# 1. 下载PaySdk 和demo包
在壹收银开放平台下载PaySdk.zip资源并解压,demo项目中包含demo案、微信和支付宝依赖的库及封闭类;
PaySdk分为swift版(swift 3.0+)和objc版本,请根据项目需要选择对应的版本。
# 2. iOS兼容支持
目前支持iOS Sdk支持的iOS版本为ios 7.0+
# 3. 手动导入
PaySdk依赖聚合平台的库和framework
图中红色方框为项目需要额外导入的库和framework,以及封装文件;
依赖系统的Frameworks:
libc++.tbd
libz.tbd
CoreTelephony.framework
SystemConfiguration.framework
CoreMotion.framework
Security.framework
CoreLocation.framework
libsqlite3.tbd
# 4. 添加 Other Linker Flag(微信支付需设置)
项目:target -> Build Settings -> Other Linker Flags 设置 “-ObjC”
# 5. 添加 URL Schemes,用于微信和支付宝支付完成后回跳
项目:target -> info -> URL Types, 点击”+”添加
1)设置微信支付: identifier:wxpay URL Schemes: 实际微信支付的appid
2)设置支付宝: identifier:sqpay URL Schemes: mch+mchno(mch+商户聚合平台分配的编号)
# 6. 添加必要的权限,如https,http请求
针对 iOS 9 及以上系统的限制 http 协议的访问,如果 App 需要访问 http://, 则需要在 Info.plist 添加如下代码:
<key>NSAppTransportSecurity</key>
<dict>
<key>NSAllowsArbitraryLoads</key>
<true/>
</dict>
# 二、初始化支付sdk
AppDelegate didFinishLaunchingWithOptions中,初始化sdkAppDelegate didFinishLaunchingWithOptions中,初始化sdk
// 聚合sdk:初始化支付配置;根据应用实际配置,设置:mchNo, clientKey, wxpayAppId, alipayAppId
[SQPayApi initWithKey:mchNo
clientKey:clientKey
wxpayAppId:wxpayAppId
alipayAppId:alipayAppId];
# 三、发起支付请求
SQPayRequest *payRequest = [[SQPayRequest alloc] init];
payRequest.mchOrderId = mchOrderId;
payRequest.body = body;
payRequest.fee = fee;
payRequest.payChannel = PAY_CHANNEL_ALIPAY;
payRequest.notifyUrl = notifyUrl;
payRequest.attach = attach;
//调起支付页面,回调接口代表下单成功开始调起支付,不代表用户已经支付成功;
[SQPayApi pay:payRequest withCompletion:^(
BOOL isSuccess,
NSString *errorCode,
NSString *errorMessage) {
NSLog(@”%@:%@”, errorCode, errorMessage);
}];
# 四、UIApplicationDelegate接收交易结果
渠道为支付宝但未安装支付宝钱包时,交易结果会在调起插件时的 Completion 中返回。渠道为微信、支付宝(安装了支付宝钱包)、银联或者测试模式时,请实现 UIApplicationDelegate 的 - application:openURL:xxxx: 方法
//针对9.0以前版本,此方法9.0以后不建议使用- (BOOL)application:(UIApplication *)application openURL:(NSURL *)url sourceApplication:(NSString *)sourceApplication annotation:(id)annotation { BOOL canHandleURL = [SQPayApi handleOpenURL:url]; return canHandleURL;}
//针对9.0及以后版本
- (BOOL)application:(UIApplication *)app
openURL:(NSURL *)url
options:(NSDictionary *)options {
BOOL canHandleURL = [SQPayApi handleOpenURL:url];
return canHandleURL;
}
# 五、支付页面的ViewControler处理交易结果
UIApplicationDelegate 接收交易数据后,通过NSNotificationCenter 通知支付页面的ViewController来处理支付成功的业务逻辑,因此需要在ViewController中添加通知处理;
# viewDidLoad方法中添加:
//监听支付返回结果,回调绑定至方法:appPaySuccess, 在appPaySucces实现成功后的业务逻辑处理
[[NSNotificationCenter defaultCenter]
addObserver: self
selector:@selector(appPaySuccess:)
name: APP_PAY_SUCCESS_NOTIFICATION
object:nil];
# 添加处理交易结果方法appPaySuccess:
- (void) appPaySuccess:(NSNotification *) notification
{
NSDictionary *userInfo = notification.userInfo;
NSLog(@"Received pay notification: %@", userInfo);
}
← Android接入详解 扫码支付 →