华为游戏内支付成功,商品未到账,游戏服务器也未收到通知回调
华为游戏内支付成功,商品未到账,游戏服务器也未收到通知回调 问题描述
我们游戏集成了华为应用内支付服务 SDK,上线后,部分玩家反馈支付后商品没有发放,我们也集成了客户端的补单查询接口,但是玩家重启游戏后商品仍然不到账。
问题分析
我们对于商品的支付流程是这样的:
客户端支付成功后,会把对应的回调结果中的 InAppPurchaseData 数据发送至我们自己的服务器,服务器会根据 Token 请求华为服务器查询对应的订单信息后,我们服务器返回成功响应给华为服务器且客户端对商品进行消耗,与此同步服务端对于订单数据进行验签。
由于一直无法定位出问题,我们通过 https://developer.huawei.com/consumer/cn/support/feedback 联盟工单联系了华为开发者技术支持人员。
现网玩家反馈的华为订单号 WXda2db5f1xxxxxx0bd8510dd597,通过华为技术人员内部查询到,该笔订单华为已经通知过我们服务器,且我们服务器也返回成功响应给华为了。
我们再次查看自身服务器日志,发现该订单做了消耗,订单实际验签失败、没有发货,这样就导致客户端补单查询接口查不到这笔订单了。
问题解决
找到问题原因之后,我们调整了支付流程:
收到支付成功的回调后,先做支付校验,校验成功后进行发货,发完货再做消耗。
修改问题并重新出包,新包上线后,果然掉单问题反馈少了狠多,问题解决。
PS
华为支付商品购买流程链接:https://developer.huawei.com/consumer/cn/doc/HMSCore-Guides/purchase-subscription-process-0000001050130250
华为游戏内支付成功但商品未到账,可能是以下原因:
- 回调失败:游戏服务器未正确接收或处理华为支付回调通知。
- 网络延迟:支付状态同步延迟,建议稍后重试或检查服务器日志。
- 订单状态异常:订单未完成或支付状态未更新。
- 配置错误:华为支付与游戏服务器配置不匹配,如回调地址或密钥错误。
建议:
- 检查服务器日志,确认是否收到回调。
- 通过华为开发者平台查询订单状态。
- 确保支付配置正确,必要时联系华为技术支持。