Apple Pay按钮显示不可用,沙盒测试一直报错怎么办?

一子沐 阅读 32

在iOS应用里集成Apple Pay时,支付按钮始终显示灰色不可用状态。用沙盒账号测试时还弹出错误提示"Invalid merchant identifier",但Merchant ID明明已经在苹果开发者账号里绑定了。

已经按照文档配置了PKPaymentAuthorizationViewController,并在Info.plist里填好了MerchantIdentifier和ATS设置。测试用的信用卡也是苹果官方推荐的沙盒卡号,证书也配置了Apple Pay服务。


const paymentRequest = {
  country: 'US',
  currency: 'USD',
  merchantIdentifier: 'merchant.com.myapp', // 和开发者账号一致
  requiredBillingContactFields: PKContactField.None
};

奇怪的是其他支付方式(比如信用卡表单)都能正常显示,只有Apple Pay按钮有问题。重启Xcode和手机都没用,求大神指点哪里可能出错了?

我来解答 赞 7 收藏
二维码
手机扫码查看
1 条解答
UP主~莉娟
这个问题大概率出在Merchant ID的配置上,虽然你说已经在开发者账号里绑定了,但建议仔细检查几个关键点。首先确认App ID是否正确启用了Apple Pay功能,有时候我们会忘记勾选这个选项,导致整个流程走不通。

另外你在代码里写的merchantIdentifier是merchant.com.myapp,需要确保这个值和苹果开发者后台完全一致,包括大小写。我遇到过好几次因为多了一个点或者大小写不对导致的问题。

还有一点容易忽略的是Entitlements文件,建议改成这样配置:


<key>com.apple.developer.in-app-payments</key>
<array>
<string>merchant.com.myapp</string>
</array>


另外你的paymentRequest配置有点问题,requiredBillingContactFields不应该用PKContactField.None,建议改成:


const paymentRequest = {
country: 'US',
currency: 'USD',
merchantIdentifier: 'merchant.com.myapp',
supportedNetworks: ['visa', 'masterCard'],
requiredBillingContactFields: ['postalAddress']
};


最后别忘了在Xcode的Signing & Capabilities里添加Apple Pay,并且把对应的Merchant ID勾选上。这步很多人会漏掉。如果还是不行,建议清理下项目,重启下设备,有时候缓存也会导致奇怪的问题。
点赞 5
2026-02-14 09:02