## 一、导入开发资源
1. 下载PaySdk 和demo包
       在壹收银开放平台下载PaySdk.zip资源并解压,demo项目中包含demo案、微信和支付宝依赖的库及封闭类;
       PaySdk分为swift版(swift 3.0+)和objc版本,请根据项目需要选择对应的版本。
<br/>
2. iOS兼容支持
       目前支持iOS Sdk支持的iOS版本为ios 7.0+
<br/>
3. 手动导入
PaySdk依赖聚合平台的库和framework
![](https://box.kancloud.cn/3fefe43f313087e9adcd1b6fa57757b9_432x362.png)
       图中红色方框为项目需要额外导入的库和framework,以及封装文件;
依赖系统的Frameworks:
![](https://box.kancloud.cn/72fab4c5cf38811a8405198947049684_1571x625.png)
~~~
libc++.tbd
libz.tbd
CoreTelephony.framework
SystemConfiguration.framework
CoreMotion.framework
Security.framework
CoreLocation.framework
libsqlite3.tbd
~~~
<br/>
4. 添加 Other Linker Flag(微信支付需设置)
项目:target -> Build Settings -> Other Linker Flags 设置 “-ObjC”
<br/>
5. 添加 URL Schemes,用于微信和支付宝支付完成后回跳
项目:target -> info -> URL Types, 点击”+”添加
1)设置微信支付:
identifier:wxpay URL Schemes: 实际微信支付的appid
2)设置支付宝:
identifier:sqpay URL Schemes: mch+mchno(mch+商户聚合平台分配的编号)
![](https://box.kancloud.cn/b64a8df4b0c4d027b82e0a3866989c75_432x191.png)
<br/>
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];
~~~
【注:[获取mchNo和client key](https://www.kancloud.cn/book/cattong/youyisdk/preview/%E6%B3%A8%E5%86%8C%E5%BC%80%E5%8F%91%E8%80%85%E8%B4%A6%E5%8F%B7.md)】
<br/><br/>
##
## 三、发起支付请求
~~~
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);
}];
~~~
<br/>
##
## 四、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;
}
![](https://box.kancloud.cn/2a874e0aba10f8228f847b36f708fa33_432x277.png)
~~~
<br/><br/>
##
## 五、支付页面的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);
}
~~~
<br/><br/>