当前位置: 首页 > 后端技术 > Java

接入HMSCore应用内支付服务过程中的一些常见问题汇总

时间:2023-04-01 14:07:02 Java

华为HMSCore应用内购买(In-AppPurchases,IAP)为应用提供便捷的应用内支付体验和简单的接入过程。该服务支持客户端和服务器两种开发形式。详情请参考官方文档。上一篇:常见问题汇总(二)分享总结了支付页面拉不上去相关的常见问题。本文将总结近期开发者比较关心的应用内支付服务集成过程中的一些问题,并提出解决方案。问题一:开发者联盟支付卡中的支付公钥(路径:开发者联盟>管理中心>支付>获取支付信息)和应用内支付中配置的公钥(路径:打开项目>左侧导航栏“盈利”>应用内支付服务”)有什么区别吗?问题根源:为了防止返回结果被篡改,提高安全性和可靠性,支付结果必须使用IAP公钥来验证签名串。由于VR支付仍然使用2.0的支付接口,所以仍然会使用开发中的银联支付卡中的支付公钥。应用内支付中配置的公钥(路径:左侧导航栏打开项目>“收益>应用内支付服务”,如果“IAP”选项卡显示IAP支付公钥未生成,点击“设置”生成IAP支付公钥。)主要用于4.0支付接口,4.0接口是目前常用的接口。问题2:华为应用内支付的回调请求为空,没有任何有效的用户信息。问题背景:用户订阅了包年会员,但后台没有自动发货。点击订单中的【补发】按钮后,重新发起支付回调,但数据无效。然后开发者CP改成测试界面,打印出来搜索华为支付回调的所有请求内容,发现请求文本为空字符串,没有任何有效的用户信息。”我点了支付报表上的订单补货按钮,手机端接入的HMS版本是6.4.0.301,你说HMS4.0的订单,我们不会收到支付成功的回调,我点的时候就收到了重新发布时,一个空白的回调,这正常吗?另外,之前我们的订阅回调接口出现异常时,返回了200,所以华为支付服务端可能会认为应用已经发货了。这种情况下,用户客户端重启可以吗应用程序触发重新排序?”原因分析:根据官方FAQ文档,对于HMS4.0订单,点击Reissue会触发华为支付服务器向华为支付服务器发送支付成功回调,但您收不到支付成功回调。如果您点击支付报告中的订单补货按钮,您将不会收到支付成功的回调通知。如果点击重发按钮,会收到消息体为空的回调,不能作为分析定位问题的依据,可以忽略。解决方案:订单补货分为客户端补货和服务器补货。只有消耗品才有补货流程。客户端补货需要你在客户端触发补货,比如app启动时;如果有异常,会返回-1、60051、1等错误码场景,需要触发补单机制;有关详细信息,请参阅文档。对于订阅型产品,我们一般会采用通知的方式订阅关键事件,请参考文档。关于订阅回调接口,之前出现异常时也返回了200。可能是华为应用内购服务器认为应用已经发货了。这不存在。如果是这种情况,请提供相应的订单号。我们将对订单进行分析。问题三:我9月份递交的定居申请还没到。收入结算什么时候到?问题背景:CP报9月份递交的定居申请。结算单中的结算状态显示为“正在支付”,但尚未到账。我不知道卡在哪里。原因分析:根据官方文档,如果对结算数据无异议,点击“确认结算”提交结算申请,核对支付金额和收款银行信息无误后,点击“提交”。提交后不可取消。如需要多份结算单据合并开票,请确认只能将同一合同、同一业务类型的结算单据合并开票。解决办法:也就是说只要确认了结算单,付款状态还是payment,但是CP在结算前需要先开具发票(也可以和发票合用),发票会被按确认的结算单金额开具。合并发票需要选择汇总结算单中的“结算汇总信息-结算金额”。注意金额必须与发票金额完全一致,不能有差异。相关操作请参考开发者联盟官方文档自助缴费指南。4、联盟官方文档、AppGallery站点旧域名及使用的加密套件将逐步下线。有没有更详细的操作文档供开发者参考?问题背景:根据官方文档,为了增强您应用的安全性和可靠性,华为应用支付更新了URL,增加了对TLS版本和加密套件的要求。出于安全考虑,自2023年4月起,华为应用内支付将不再支持1.2以下的TLS版本和规定之外的密码套件。AppGallery站点使用的旧域名稍后也会下线。解决方案:目前没有相关的指导文件。这些是标准的网络套件和协议,但您可以参考官方发布的服务器多语言演示。详情请参考官方Demo。替换域名的具体操作请参考官方示例代码,将对应地区的旧域名替换为最新域名。比如中文站APPGallery应用市场需要上线,Order服务验证购买token接口需要把之前的https://orders-at-dre.iap.dbankcloud.com替换成中文站:https://订单-drcn.iap。cloud.huawei.com.cn.具体请参考开发者联盟官方文档。5、HuaweiSubscription返回的数据中的expirationDate字段是否与到期后下次向用户收费的时间一致?问题背景:“请问华为订阅返回的数据中的expirationDate字段是否与到期后用户下次扣费的时间一致?用户支付年费产品是12月5日,2021年,实际是2022年12月,4号进行了自动续费扣费,但是华为2021年支付成功??后返回的expirationDate,转换时间戳后,2022年12月8日到期,请问华为订阅产品提前扣费?或者ExpirationDate与下一次扣费时间不一样?如果需要知道下一次扣费的确切时间,应该用什么字段?”原因分析:以下是官方文档对InAppPurchaseData中expirationDate字段的解释:根据IAP的扣费规则,会提前24小时开始尝试扣费。如果用户在2021年12月5日支付了包年产品,则在订阅期结束前24小时,即12月4日到期,没有问题。华为IAP会尝试向用户发起扣费,以完成订阅产品的续费。如果扣费不成功,华为应用内购会在一定时间内尝试重复扣费。如果失败次数过多,最终将停止重试。解决方法:expirationDate字段不等于下一次扣费时间,而是当前订阅的过期时间。IAP支付服务器目前不返回下一次扣款时间,也不会有准确的扣款时间。一般情况下,订阅显示的续订时间可能会比续订时间稍微长一些,但相差不会很大。若订阅的续订时间与实际显示的expirationDate相差较大,CP需要提供ordernumber或subscriptionid等数据以了解更多详情>>访问华为开发者联盟官网获取开发指导文档华为移动服务开放源码仓库地址:GitHub、Gitee关注我们,第一时间了解HMSCore最新技术资讯~