最近对接银联的ApplePay支付功能,按照说明文档一切都很顺利,调试过程中也可以支付。其中merchantID的设置方式如下:
1,创建了两个merchantID:正式merchantID,测试merchantID。
2,为正式App ID绑定上面两个merchatID。
3,为测试App ID绑定上面两个merchatID。
遇到的问题如下:
【问题1】:对测试App打包后进行测试时,即使是在有ApplePay支付能力而且绑定了银联卡的设备上,PKPaymentAuthorizationViewController.canMakePayments(usingNetworks: [PKPaymentNetwork.chinaUnionPay])方法也总是返回false。
【分析】:在排除了canMakePayments函数调用时机的问题之后,以为是一个App ID只能配置一个merchantID,结果改为只关联一个merchantID也不行。
【解决】:决定绕过canMakePayments直接进行支付,在支付结果返回cancel时进行拦截。
【问题2】:有支付能力的设备,在支付时同样返回了cancel。
【分析】:怀疑是有信息没有注册给银联,但是在银联后台并没有注册App Bundle ID的地方。想到在修改了Capabilities之后,应该会体现到entitlements文件中。去查找测试App的entitlements文件,发现里面真的没有merchantID相关信息。为什么在工程文件的Capabilities中选中了merchantID,但是entitlements文件中没有?
【解决】:手动在entitlements文件中添加merchantID信息,问题解决。
【结论】: