前言:因公司业务发展,APP需要集成paytm支付,近期 paytm 的 SDK 也做了一版更新,集成新 SDK 遇到的一些问题记录下来
paytm文档: https://developer.paytm.com/docs/all-in-one-sdk/
GitHub: https://github.com/paytm/Paytm_iOS_All_in_One_SDK
1.没有说明自动导入的方式,只能手动导入了
github 下载完将AppInvokeSDK.framework文件拖入项目
2.编译运行报错:
dyld: Library not loaded: @rpath/AppInvokeSDK.framework/AppInvokeSDK
Referenced from: /private/var/containers/Bundle/Application/7F89BE48-4F64-4C92-856C-35C391C8C18B/XXXX.app
Reason: image not found
2.1
1.png
2.png
改完成功运行
3.新版 SDK 调用也比较简洁了
paytm SDK调用.png
先说一下 openPaytm方法的几个参数:
merchantId: 之前的 MID,就是开发者账号申请的id,有测试和生产环境
orderId:订单 id(后台返回)
txnToken: token (后台返回)
amount: 金额(最好用后台返回的)
callback_url: 回调地址 (后台返回)
delegate: 代理对象
environment: AIEnvironment枚举类型,生产和测试两种
按照文档说明操作正常调起 paytm 支付,但支付完之后没有状态回调,
检查完之后发现是因为
AIHandler().openPaytm(merchantId: merchantId, orderId: orderId, txnToken: token, amount: amount, callbackUrl : callback_url, delegate: self)
控制器没有引用 AIHandler对象
let paytmHandler = AIHandler()
extension MemberRenewController:AIDelegate{
func beginPayment(params:[String:String]) {
var MID = "测试 MID"
var environment = AIEnvironment.staging
if isDistribute {
MID = "生产MID"
environment = AIEnvironment.production
}
if let orderId = params["ORDER_ID"],let txnToken = params["TXN_TOKEN"],let amount = params["TXN_AMOUNT"],let callbackUrl = params["CALLBACK_URL"]{
paytmHandler.openPaytm(merchantId: MID, orderId:orderId, txnToken:txnToken, amount:amount, callbackUrl:callbackUrl,delegate: self, environment: environment)
}
}
@objc func openPaymentWebVC(_ controller: UIViewController?){
if let vc = controller {
DispatchQueue.main.async {[weak self] in
self?.present(vc, animated: true, completion: nil)
}
}
}
@objc func didFinish(with status: AppInvokeSDK.AIPaymentStatus, response: [String : Any]){
}
}
至此 paytm 支付就集成完毕了,新 SDK 还是比之前的简洁,之前 swift 版本 pod 导入一直报错又找不到原因最后被迫集成了 OC 的包
网友评论