关于支付的那些事(Ping++)
一提起支付,很多人都会以为是一件很高大上的技能,逼格瞬间就提升了几个档次。下面为大家推荐一款支付的SDK,瞬间解决iOS各种平台上支付的问题,且简单易用。因为Ping++官网上面的介绍不够完善,集成过程中可能会遇到很多坑,所以整理了下,希望能对大家有所帮助。
安装
Ping++如果使用 CocoaPods导入,那么直接pod 'Pingpp', '~> 2.1.0'
即可。手动导入请看下文:
1.在github相应地址下载Ping++SDK
2.导入所需文件(微信,支付宝,银联只需要导入以上几个文件夹即可,其他的删掉。另外,Ping++里面有一个SDWebImage,不需要删掉即可)
3.分别导入微信,支付宝,银联所需依赖库(本文尚不介绍百度钱包支付)
必需:
CFNetwork.framework
SystemConfiguration.framework
Security.framework
libc++.dylib
libz.dylib
libsqlite3.0.dylib
4.添加 URL Schemes:在 Xcode 中,选择你的工程设置项,选中 TARGETS 一栏,在 Info 标签栏的 URL Types 添加 URL Schemes,如果使用微信,填入微信平台上注册的应用程序 id(为 wx 开头的字符串),如果不使用微信,则自定义,建议起名稍复杂一些,尽量避免与其他程序冲突。允许英文字母和数字,首字母必须是英文字母,不允许特殊字符。
5.添加 Other Linker Flags:在 Build Settings 搜索 Other Linker Flags,添加
-ObjC
。附:如果Other Linker Flags不能添加
-ObjC
,则按一下方法导入
F2D588A2-2DB7-4572-8846-3919DDE89FC6.png
接入支付
后台集成Ping++成功之后,会给前端一个接口,调用此接口就会返回charge 对象,然后根据此方法就可以调用支付控件进行支付
[Pingpp createPayment:charge
viewController:viewController
appURLScheme:kUrlScheme
withCompletion:^(NSString *result, PingppError *error) {
if ([result isEqualToString:@"success"]) {
// 支付成功
} else {
// 支付失败或取消
NSLog(@"Error: code=%lu msg=%@", error.code, [error getMsg]);
}
}];
关于渠道
关于iOS9系统,需要注意的一些事项
1.针对 iOS 9 系统更新, 为了使你接入的微信支付与支付宝支付兼容 iOS 9 ,请按照以下引导进行操作: 应用需要在 Info.plist 中将要使用的 URL Schemes 列为白名单,才可正常检查其他应用是否安装。受此影响,当你使用 Xcode 7 及 iOS 9 编译发布新版本 App,并且用到了判断是否安装相应的 App (支付宝钱包、微信)的接口时,需要在 Info.plist 里添加如下代码:
<key>LSApplicationQueriesSchemes</key>
<array>
<string>weixin</string>
<string>wechat</string>
<string>alipay</string>
</array>
2.针对 iOS 9 限制 http 协议的访问,如果 App 需要访问 http://, 则需要在 Info.plist 添加如下代码:
<key>NSAppTransportSecurity</key>
<dict>
<key>NSAllowsArbitraryLoads</key>
<true/>
</dict>
3.针对使用 Xcode 7 编译失败,遇到错误信息为:
XXXXXXX does not contain bitcode. You must rebuild it with bitcode enabled (Xcode setting ENABLE_BITCODE), obtain an updated library from the vendor, or disable bitcode for this target.
请到 Xcode 项目的 Build Settings 标签页搜索 bitcode,将 Enable Bitcode 设置为 NO 即可。
附:如果使用过程当中还有其他问题,可以进入Ping++帮助中心,同时欢迎留言与我交流。
因有所获,故笔而记之,分享之。