ApplePay开发过程中遇到的问题--调试时可以支付,打包后无法支付

最近对接银联的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文件中没有?
X C o d e b u g \color{red}XCode的bug
X C o d e b u g \color{red}XCode的bug
X C o d e b u g \color{red}XCode的bug
【解决】:手动在entitlements文件中添加merchantID信息,问题解决。
【结论】:

entitlements文件管理着App的“能力”,理论上跟Capabilities一一对应,在XCode10.2.1中如果配置了多个scheme,导致不同scheme对应的bundleID不同时,可能出现Capabilities页面与entitlements文件不一致,进而导致打包后的行为与调试时不一致的情况。

发布了74 篇原创文章 · 获赞 81 · 访问量 12万+

猜你喜欢

转载自blog.csdn.net/dangyalingengjia/article/details/98752004