华为 H5 快游戏调用 createPurchaseIntent 支付接口拉起支付收银台后闪退
问题描述
H5快游戏调用createPurchaseIntent接口发起支付,拉起应用内支付收银台后,但收银台立即闪退。
代码如下:
function createPurchaseIntent () {
var priceType = document.getElementById("priceType")
var productId = document.getElementById("productId")
var params = {
purchaseIntentReq: {
"applicationID": "100798021",
"productId": "Product1",
"priceType": 0,
"developerPayload": "testPurchase",
"publicKey":"XXX"
}
}
HwFastappObject.createPurchaseIntent(JSON.stringify(params));
}
问题分析[l(2]
我们找到华为技术支持QQ 2851508897(或提个工单咨询)寻求帮助。
该接口是拉起应用内支付接口,没有成功,也没有任何回调报错,一般情况下是由于传参错误引起的。检查createPurchaseIntent接口的参数,有应用id:applicationID,商品类型:priceType,支付公钥publicKey,商品id:productId,developerPayload:商户测保留信息。只要检查这五个参数是否有问题即可。
- applicationID是快游戏的appid,这个一般不易弄错。
- priceType是我们在后台配置的AGC商品,消耗型商品参数传0,非消耗型商品参数传1,订阅类商品传2。
- Publickey是支付公钥,此参数传错,会正常拉起应用内支支付但会返会错误码"code":1001,"data":"createPurchaseIntent PAY_CHECKKEY_FAIL"。
- developerPayload是商户保留字,不做校验。
那问题就是出现在productId中,该参数是AGC官网后台配置的商品信息,必须是本项目中已经处于有效状态下的商品id,传错或者传其他项目的商品id均会导致上述问题。正确获取商品管理界面商品id如下:
解决方案
按照问题分析,检查参数是否传递错误,尤其是productId值,一定是自己这个应用下面的商品id,不能是别的app的productid。
欲了解更多详情,请参见:
H5快游戏开发指导:
https://developer.huawei.com/consumer/cn/doc/development/quickApp-Guides/quickgame-develop-h5-game#h1-1594805279082