HarmonyOS鸿蒙Next中华为应用内支付成功后支付验签失败

HarmonyOS鸿蒙Next中华为应用内支付成功后支付验签失败

关键词

支付公钥格式

问题描述

接入华为应用内支付 SDK,支付成功并收到了支付回调,从 PurchaseResultInfo 对象中获取到购买数据 InAppPurchaseData 及其签名数据,使用支付公钥进行签名验证,但是验签失败。

问题解决

我在网上搜到一篇帖子:

https://developer.huawei.com/consumer/cn/forum/topic/0201750356364620175?fid=0101271690375130218

参考检查了我使用的签名算法和支付公钥,都没发现问题。我也对照检查了支付回调和验签的传参是一致的。

最后找到华为技术支持(可以提交工单 https://developer.huawei.com/consumer/cn/support/feedback),对方告诉我这个支付验签基本上问题就出在算法和公钥上。

算法:

从支付返回对象中获取 signatureAlgorithm,然后使用获取到的算法进行验签。若获取到的算法为空,则使用 SHA256WithRSA 算法进行验签。

支付公钥要用这个地方的:

支付公钥

且要注意复制粘贴后的格式有没有发生变化。以前有遇到过粘贴后的支付公钥出现换行或者空格的情况,也遇到过复制到文本再复制出来使用时格式发生变化。

最后我核实了下,确实是公钥格式的问题,我从 AGC 后台复制贴到代码里格式变了,和从其他地方拷进去的不一样。经过修改后,验签通过,问题解决。

支付验签参考:

https://developer.huawei.com/consumer/cn/doc/development/HMSCore-Guides/verifying-inapppurchasedata-0000001494212281

支付公钥获取路径请参考:

https://developer.huawei.com/consumer/cn/doc/development/HMSCore-Guides/query-payment-info-0000001050166299


更多关于HarmonyOS鸿蒙Next中华为应用内支付成功后支付验签失败的实战教程也可以访问 https://www.itying.com/category-93-b0.html

1 回复

更多关于HarmonyOS鸿蒙Next中华为应用内支付成功后支付验签失败的实战系列教程也可以访问 https://www.itying.com/category-93-b0.html


在HarmonyOS鸿蒙Next中,应用内支付成功后支付验签失败可能由以下原因导致:

  1. 密钥不匹配:确保使用的公钥与华为开发者后台配置的公钥一致。
  2. 验签算法错误:检查验签算法是否与华为提供的算法一致,通常使用RSA或SHA256。
  3. 数据格式问题:验签时,确保传递的数据格式与华为返回的原始数据一致,避免多余的空格或转义字符。
  4. 时间戳过期:验签时检查时间戳是否在有效期内,避免因时间差导致验签失败。
  5. 网络问题:确保验签时网络连接正常,避免因网络中断导致验签失败。

建议仔细检查以上环节,或参考华为官方文档进行调试。

回到顶部