华为支付报错“支付服务不可用,请切换华为帐号服务地”
华为支付报错“支付服务不可用,请切换华为帐号服务地” 问题描述
我们项目集成了华为IAP SDK,但是拉不起华为支付收银台,报错“支付服务不可用,请切换华为帐号服务地”。
问题分析
我们联系了华为技术支持(可提单联系https://developer.huawei.com/consumer/cn/support/feedback),技术支持在分析了我们的全量日志后,发现日志如下信息:
Line 32967: 03-21 16:41:19.066 I/hms_pay (21626): [I/IAP_APK[6.4.0.352]/hms_pay 21626:513 LogUtil.java:4] hms_pay account countryCode ::=JP
Line 32968: 03-21 16:41:19.066 I/hms_pay (21626): [I/IAP_APK[6.4.0.352]/hms_pay 21626:513 LogUtil.java:4] hms_pay merchant countryCode ::=CN
华为技术支持说明:
- 日志中的
account countryCode ::=JP
是我们手机应用市场》我的》设置》国家/地区的配置;当前我们是日本。 - 下面的
merchant countryCode ::=CN
是我们的商户国家码,当前是中国,所以我们支付提示支付服务不可用,请切换帐号服务地。
那么这里的merchant countryCode ::=CN
是根据什么来的呢,分析日志发现,我们调用的支付接口是:
I/HMSSDK_BaseIapServiceTaskApiCall(21064): call iap.buyWithPrice, getStatus, getParcelable is instanceof Intent
即对应官方文档(购买非PMS商品章节)的createPurchaseIntentWithPrice
接口:
该接口请求时,我们setcountry
字段传入的是CN
,所以最后华为系统识别merchant countryCode
为CN
,报错异常。
问题解决
最后华为技术支持建议我们如果应用发布海外,参考如下文档使用PMS支付接口:
这个要求在官方文档也是有明确说明的,参考:
修改后问题解决。
1 回复
该报错通常是由于当前华为帐号的服务地设置与支付服务区域不一致所致。建议您按照以下步骤排查:
- 进入“设置” > “华为帐号” > “帐号中心” > “国家/地区”,确认服务地设置是否与您当前所在国家/地区一致。
- 如果服务地设置不正确,请更改为正确国家/地区,然后重新尝试支付。
- 如果问题仍然存在,建议清除华为支付应用缓存,或联系华为客服寻求进一步帮助。
注意:更改服务地可能会影响部分华为服务的可用性,请在操作前确认影响范围。