该功能依赖 IAP SDK 提供服务,IAP SDK 可能会收集用户的个人数据。请在快应用中使用该功能之前,告知用户将搜集个人数据,并引导用户阅读相应的隐私政策。
| 接口 | 描述 |
|---|---|
| 获取服务提供商。 | |
| 判断当前设备登录的华为账号所属国家是否在华为IAP支持结算的国家和地区中。 | |
| 判断当前设备登录的华为账号及应用的RPK版本是否满足沙盒条件。 | |
| 查询用户所有已订购商品信息,商品包括消耗商品、非消耗商品和订阅类商品。 | |
| 获取在AppGallery Connect上配置的商品详情。 | |
| 创建购买AppGallery Connect上配置商品的订单。 | |
| 消耗型商品支付成功后,对商品进行消耗操作。 | |
| 获取消耗型商品的历史商品信息或者订阅类商品的所有订阅收据。 | |
| 拉起华为应用内支付相关页面。 | |
| 创建非PMS商品订单,支持购买消耗型商品、非消耗型商品,不支持购买订阅型商品。 |
描述
获取服务提供商。
返回值
字符串,服务提供商的代号,如厂商的英文品牌名称,如果无此服务则返回空字符串。返回空字符串时,请勿调用该服务其他接口,否则将抛出异常。
示例代码
pay.getProvider();
描述
判断当前设备登录的华为账号所属国家是否在华为IAP支持结算的国家和地区中。
OBJECT参数
| 参数 | 类型 | 是否必填 | 说明 |
|---|---|---|---|
| isEnvReadyReq | json | 是 | 判断是否支持华为IAP支付的请求信息,详细信息请参见“isEnvReadyReq参数说明”。 |
| success | function | 否 | 成功回调。 |
| fail | function | 否 | 失败回调。 |
| complete | function | 否 | 完成回调。 |
isEnvReadyReq 参数说明
success返回值
| 参数 | 类型 | 说明 |
|---|---|---|
| returnCode | number | 返回值,成功返回为0。 |
fail返回值
| 参数 | 类型 | 说明 |
|---|---|---|
| data | string | 错误描述。请先判断类型后,再获取值。 |
| code | number | 错误码。 |
示例代码
pay.isEnvReady({
isEnvReadyReq: {
"applicationID": "101315751"
},
success: function (data) {
console.debug("isEnvReady data =", JSON.stringify(data));
prompt.showToast({
message: "Env ready!"
})
},
fail: function (data, code) {
console.log("isEnvReady fail data =" + data, "code =" + code);
prompt.showToast({
message: "isEnvReady fail!"
})
}
}) 描述
判断当前设备登录的华为账号是否满足沙盒条件。
参数
| 参数 | 类型 | 是否必填 | 说明 |
|---|---|---|---|
| isSandboxActivatedReq | json | 是 | 判断是否满足沙盒账号条件的请求信息,详细信息请参见“isSandboxActivatedReq参数说明”。 |
| success | function | 否 | 成功回调。 |
| fail | function | 否 | 失败回调。 |
| complete | function | 否 | 完成回调。 |
isSandboxActivatedReq参数说明
success返回值
| 参数 | 类型 | 说明 |
|---|---|---|
| returnCode | number | 查询结果的返回码。 |
| errMsg | string | 返回码描述信息。 |
| isSandboxUser | boolean | 是否是沙盒账号。 |
| isSandboxApk | boolean | 快应用中心是否满足沙盒条件,固定返回true。 |
| versionInApk | string | 快应用中心的版本信息。 |
| versionFrMarket | string | 应用市场上快应用中心最新的版本信息。 |
fail返回值
| 参数 | 类型 | 说明 |
|---|---|---|
| data | string | 错误描述。请先判断类型后,再获取值。 |
| code | number | 错误码。 |
示例代码
pay.isSandboxActivated({
isSandboxActivatedReq: {
"applicationID": "101315751",
},
success: function (data) {
console.debug("isSandboxActivated data =", JSON.stringify(data));
prompt.showToast({
message: "isSandboxActivated success!"
})
},
fail: function (data, code) {
console.log("isSandboxActivated fail data =" + JSON.stringify(data), "code =" + code);
prompt.showToast({
message: "isSandboxActivated fail!"
})
}
}) 描述
查询用户所有已订购商品信息,商品包括消耗商品、非消耗商品和订阅类商品。
- 续期:正常使用,下个周期进行续费。
- 到期:如果下个周期不再续费,该周期过后变成已过期。
- 已过期:不能再使用订阅服务,但可以从订阅关系历史中查询到记录。
OBJECT参数
| 参数 | 类型 | 是否必填 | 说明 |
|---|---|---|---|
| ownedPurchasesReq | json | 是 | 查询用户所有已订购商品未被消耗信息,详细信息请参见“ownedPurchasesReq参数说明”。 |
| success | function | 否 | 成功回调。 |
| fail | function | 否 | 失败回调。 |
| complete | function | 否 | 完成回调。 |
| 参数 | 类型 | 是否必填 | 说明 |
|---|---|---|---|
| applicationID | string | 是 | 在华为开发者联盟上创建快应用后分配的唯一标识。获取方式请参见“创建快应用”中的“获取APP ID”章节。 |
| priceType | number | 是 | 商品类型。
|
| publicKey | string | 是 | 开通支付服务时获取的支付公钥。获取方式请参见“开通支付服务”中的“获取支付公钥”章节。 |
| continuationToken | string | 否 | 分页查询的定位标志。该参数首次请求时不需要传入,当数据过多需分次查询时,传入上次查询时success返回值中的continuationToken。 |
success返回值
| 参数 | 类型 | 说明 |
|---|---|---|
| returnCode | number | 查询结果的返回码。 |
| errMsg | string | 返回码描述信息。 |
| itemList | array | 以String数组方式返回用户已购买的商品ID列表。 |
| inAppPurchaseDataList | array | 以String数组方式返回用户已购买商品的详情信息列表。数组中每个String元素为JSON格式。 |
| inAppSignature | array | 包含已使用支付私钥签名的购买数据(inAppPurchaseDataList)签名字符串。签名算法为SHA256WITHRSA,签名字符串与 inAppPurchaseDataList中的商品详细信息为一一对应关系,即inAppSignature中的第1个签名字符串对应inAppPurchaseDataList中第1条商品的详情信息,依次类推。应用需要对inAppPurchaseDataList中的每个JSON字符串都进行验签,如果验签不通过则需要重新获取该商品信息,验签方法请参见“对结果验签”。 |
| continuationToken | string | 数据定位标志。如果用户拥有的商品数量非常大,当响应中存在continuationToken时,应用必须对当前方法发起另一次调用,并传入本次接收到的continuationToken。如果商品仍未查完,需要继续发起调用,直到不再返回continuationToken,表示已经返回全部商品。 |
| placedInappPurchaseDataList | array | 以JSON字符串数组方式返回用户发生过订阅商品切换时的订阅关系信息,每个JSON字符串包含的参数请参见“InAppPurchaseData”。商品切换是指用户购买了订阅商品A后,在下一个周期购买了同一个订阅组下的商品B,则此时A的订阅关系将取消,用户转而与商品B建立订阅关系。则查询时此字段将返回商品B的订阅关系信息。该值仅在priceType为2且用户存在订阅商品切换时才会返回。 |
| placedInappSignatureList | array | 对应placedInappPurchaseDataList中订阅关系的签名字符串。应用需要对placedInappPurchaseDataList中的每个JSON字符串都进行验签,如果验签不通过则需要重新获取该订阅关系,验签方法请参见“对结果验签”。该值仅在priceType为2且用户存在订阅商品切换时才会返回。 |
fail错误码返回值
| 参数 | 类型 | 说明 |
|---|---|---|
| data | string | 错误描述。请先判断类型后,再获取值。 |
| code | number | 错误码。 |
示例代码
pay.obtainOwnedPurchases({
ownedPurchasesReq: {
"priceType": 0,
"applicationID": "101315751",
"publicKey": "MIIBojANBgkqhkiG9w0BAQEFAAOCAY8AMIIBigKCAYEAnLLFO6c8d1x6jdbZ8PkNtrLtRMiFaRqWZgEjC4Vj9QXnPCmDZoPO5A5TSwzlWjYL5ktbbDnZC6Vfp8VI8nTMm8DvbGsJ+1ihru31vG1gqvUgOaXESqBhdpMrKFEgNBV8zlalLpcCU6Gayd8QJCxXRPcUisHLTQFJHjTMOWmvOcKiSxt1VmG3dvfWVkoMeKyerZy4qHEWM/asJihPZATBQ7puMC/kOh6i8V2gv4w/74KWifpBr3J5RN+PK6E7yWUqIALFTnN5vOIif2HELvgt+S6uaGpRydhSwu1xtV7bPtXQY20ollYo4BUi+AvM16iBCa1+1Mdw0y6Y9gZAtpHRK1Pf+yea4aoY4y/bZ6EX21wucvbzxexDcBkGn0DVvNHKr3usmUmq/yfMMmDPqPujv3iDWKFENfL4Agugo7I8etCF8vVYDOT5J8gXupgGLiritkfALZD8HgNZADyM+NnvQBJrdeVoHxCYoQMCS2hySPf2AaZWT7PzVAeGidLcEeKlAgMBAAE="
},
success: function (data) {
console.debug("obtainOwnedPurchases data =", JSON.stringify(data));
prompt.showToast({
message: "obtainOwnedPurchases success!"
})
},
fail: function (data, code) {
console.log("obtainOwnedPurchases fail data =" + data, "code =" + code);
prompt.showToast({
message: "obtainOwnedPurchases fail!"
})
}
}) 描述
获取在AppGallery Connect配置的商品详情。请开发者避免从自有服务端获取商品信息,否则可能导致应用内商品价格和华为支付收银台价格不一致。
OBJECT参数
| 参数 | 类型 | 是否必填 | 说明 |
|---|---|---|---|
| productInfoReq | json | 是 | 获取商品详情的请求信息,详细信息请参见“productInfoReq参数说明”。 |
| success | function | 否 | 成功回调。 |
| fail | function | 否 | 失败回调。 |
| complete | function | 否 | 执行结束回调。 |
productInfoReq参数说明
| 参数 | 类型 | 是否必填 | 说明 |
|---|---|---|---|
| applicationID | string | 是 | 在华为开发者联盟上创建快应用后分配的唯一标识。获取方式请参见“创建快应用”中的“获取APP ID”章节。 |
| priceType | number | 是 | 商品类型。
|
| productIds | array | 是 | 商品的id。 |
success返回值
| 参数 | 类型 | 说明 |
|---|---|---|
| returnCode | number | 查询结果的返回码。 |
| errMsg | string | 返回码描述信息。 |
| productInfoList | array | 成功查询到的商品信息列表,值为包含productInfo对象的数组。 |
productInfo说明
| 参数 | 类型 | 是否必填 | 说明 |
|---|---|---|---|
| productId | string | 是 | 商品ID。 |
| priceType | number | 是 | 商品类型。
|
| price | string | 是 | 商品的展示价格。 |
| microsPrice | number | 是 | 商品实际价格乘以1,000,000后的微单位价格。 例如某个商品实际价格是1.99美元,则该商品对应的微单位价格为:1.99*1000000=1990000。 |
| currency | string | 是 | 用于支付该商品的币种,必须符合ISO 4217标准,例如USD、CNY、MYR。 |
| productName | string | 是 | 商品名称,为配置商品信息时配置的名称,用于在支付收银台显示内容。 |
| productDesc | string | 是 | 商品描述,为配置商品信息时配置的描述信息。 |
| subPeriod | string | 否 | 订阅商品周期单位,采用ISO 8601格式指定。如P1W相当于一个星期,P1M 相当于一个月,P2M 相当于两个月,P6M 相当于六个月,P1Y 相当于一年。 说明: 仅在查询订阅商品时返回。 |
| subSpecialPrice | string | 否 | 订阅商品优惠价格。包含商品货币单位和实际价格,格式为“货币单位 商品价格”,中间使用空格分隔,例如“CNY 0.15”。此价格不含税。 说明: 仅在查询订阅商品时返回。 |
| subSpecialPriceMicros | number | 否 | 订阅优惠微单位价格。 说明: 仅在查询订阅商品时返回。 |
| subSpecialPeriod | string | 否 | 订阅商品优惠周期单位,采用ISO 8601格式指定。如P1W相当于一个星期,P1M 相当于一个月,P2M 相当于两个月,P6M 相当于六个月,P1Y 相当于一年。 说明: 仅在查询订阅商品时返回。 |
| subSpecialPeriodCycles | string | 否 | 订阅商品优惠周期数。此优惠周期数由开发者在AppGallery Connect中设置订阅商品的促销价格时配置,参见“设置促销价格”。 说明: 仅在查询订阅商品时返回。 |
| subsFreeTrialPeriod | string | 否 | 订阅商品免费周期。此优惠周期由开发者在AppGallery Connect中设置订阅商品的促销价格时配置,参见“设置促销价格”。 说明: 仅在查询订阅商品时返回。 |
| subsGroupId | string | 否 | 订阅商品所属订阅组ID。 说明: 仅在查询订阅商品时返回。 |
| subsGroupTitle | string | 否 | 订阅商品所属订阅组描述。 说明: 仅在查询订阅商品时返回。 |
| subsProductLevel | string | 否 | 订阅商品在订阅组里的级别。 说明: 仅在查询订阅商品时返回。 |
| originalMicroPrice | string | 否 | 获取商品原价的微单位价格,商品原价乘以1,000,000后的微单位价格。 |
| originalLocalPrice | string | 否 | 商品的原价,包含商品货币符号和实际价格,格式为“货币符号 商品价格”,例如“¥0.15”。此价格含税。 |
| status | int | 否 | 获取商品的状态。
|
fail错误码返回值
| 参数 | 类型 | 说明 |
|---|---|---|
| data | string | 错误描述。请先判断类型后,再获取值。 |
| code | number | 错误码。 |
示例代码
pay.obtainProductInfo({
productInfoReq: {
"priceType": 1,
"productIds": ["dy1","dmy00","lcole"],
"applicationID": "101315751",
},
success: function (data) {
console.debug("obtainProductInfo =" + JSON.stringify(data));
prompt.showToast({
message: "obtainProductInfo success!"
})
},
fail: function (data, code) {
console.log("obtainProductInfo fail data =" + JSON.stringify(data), "code =" + code);
prompt.showToast({
message: "obtainProductInfo fail!"
})
}
}) 描述
创建购买AppGallery Connect上配置商品的订单。
在AppGallery Connect创建商品后,使用此接口调用华为支付收银台,显示商品、价格和支付方式。华为会根据国际汇率变动进行商品价格档调整,为了保证应用内商品价格显示一致,请同时使用obtainProductInfo接口获取商品详情,避免从自有服务端获取价格,以免在汇率变动价格调整时,导致价格显示不一致。
OBJECT参数
| 参数 | 类型 | 是否必填 | 说明 |
|---|---|---|---|
| purchaseIntentReq | json | 是 | 购买商品请求信息,详细信息请参见“purchaseIntentReq参数说明”。 |
| success | function | 否 | 成功回调。 |
| fail | function | 否 | 失败回调。 |
| complete | function | 否 | 完成回调。 |
| 参数 | 类型 | 是否必填 | 说明 |
|---|---|---|---|
| applicationID | string | 是 | 在华为开发者联盟上创建快应用后分配的唯一标识。获取方式请参见“创建快应用”中的“获取APP ID”章节。 |
| publicKey | string | 是 | 开通支付服务时获取的支付公钥。获取方式请参见“开通支付服务”中的“获取支付公钥”章节。 |
| productId | string | 是 | 待支付的商品ID。商品ID来源于开发者在AppGallery Connect中配置商品信息时设置的“商品ID”。 |
| priceType | string | 是 | 商品类型。
|
| developerPayload | string | 否 | 商户侧保留信息。若该字段有值,在支付成功后的回调结果中会原样返回给应用。 |
success返回值
| 参数 | 类型 | 说明 |
|---|---|---|
| returnCode | number | 返回码。 |
| errMsg | string | 返回码描述信息。 |
| inAppDataSignature | string | 包含已使用应用私钥签名的购买数据(inAppPurchaseData)的签名字符串。签名算法为SHA256WITHRSA。支付成功后应用需要参见“对结果验签”的方法使用支付公钥对inAppPurchaseData的JSON字符串进行验签。 |
| inAppPurchaseData | string | 包含购买订单详情的JSON 字符串,详细信息请参见“inAppPurchaseData参数说明”。 |
| 参数 | 类型 | 是否必填 | 说明 |
|---|---|---|---|
| applicationId | string | 是 | 应用ID。 |
| autoRenewing | boolean | 是 |
如果提供了宽限期,只要宽限期未过,此值会对所有订阅保持设置为true。下一次结算日期每天都会自动延长,直至宽限期结束,或者用户更改他们的付款方式。 |
| orderId | string | 否 | 华为支付服务器侧的订单ID,唯一标识一次交易,由华为支付服务器在支付时生成。 |
| kind | number | 是 | 商品类型。
|
| packageName | string | 否 | 快应用中心包名。 |
| productId | string | 是 | 商品ID。每个商品必须有唯一的ID,由应用在PMS中维护。 |
| productName | string | 否 | 商品名称。 |
| purchaseTime | string | 否 | 商品购买时间的时间戳,即自1970年1月1日0时起到商品购买时间的毫秒数。 |
| purchaseState | string | 是 | 订单交易状态。
|
| developerPayload | string | 否 | 商户侧保留信息,由开发者在调用支付接口时传入。 |
| developerChallenge | string | 否 | 应用发起消耗请求时自定义的挑战字,可唯一标识此次消耗请求。 说明: 非订阅类商品才存在此字段。 |
| consumptionState | string | 否 | 消费状态。
|
| purchaseToken | string | 否 | 用于唯一标识商品和用户对应关系的购买令牌,在支付完成时由华为支付服务器生成。 说明: 该字段唯一标识商品和用户的对应关系,订阅类商品正常订阅时不会发生改变。当前该字段为92位,后续可能扩展,如开发者需要存储此信息,建议预留128位的长度。 |
| purchaseType | number | 否 | 购买类型,正常购买不返回此参数。
|
| currency | string | 否 | 定价货币的币种,参见“ISO 4217标准”。 |
| price | number | 否 | 商品实际价格*100以后的值。 |
| country | string | 是 | 国家码,用于区分国家信息,参见“ISO 3166标准”。 |
| payType | string | 否 | 支付方式。
|
| 以下参数只有查询订阅类商品时才返回 | |||
| lastOrderId | string | 是 | 上次续期收款的订单ID,由支付服务器在续期扣费时生成。首次购买订阅商品时的lastOrderId与orderId相同。 |
| productGroup | string | 否 | 订阅商品所属的订阅组ID。 |
| purchaseTime | number | 否 | 商品购买时间的时间戳,即自1970年1月1日0时起到商品购买时间的毫秒数。如果没有完成购买,则没有值。 |
| oriPurchaseTime | number | 否 | 原购买时间的时间戳,即本订阅商品首次成功收费时间距离1970年1月1日0点的毫秒数。 |
| subscriptionId | string | 否 | 订阅ID。 |
| oriSubscriptionId | string | 否 | 原订阅ID。返回该参数信息时表示当前订阅从其他商品切换而来,该参数值可以关联切换前的商品订阅信息。 |
| quantity | number | 否 | 购买数量。 |
| daysLasted | number | 否 | 已经付费订阅的天数。免费试用和促销期周期除外。 |
| numOfPeriods | number | 否 | 成功标准续期(不包括设置促销的续期)的期数,为0或者不存在表示还没有成功续期。 |
| numOfDiscount | number | 否 | 成功促销续期期数。 |
| expirationDate | number | 否 | 订阅商品过期时间的时间戳。对于一个成功收费的自动续订收据,该时间表示续期日期或者超期日期。如果该时间是一个过去的时间,则表示订阅已经过期。 |
| expirationIntent | number | 否 | 对于已经过期的订阅,表示过期原因。取值包括:
同时有多个异常时,根据优先级 1 > 2 > 3… 的原则,返回一个优先级最高的异常。 |
| retryFlag | number | 否 | 一个过期的订阅,系统是否仍然在尝试自动完成续期处理。
|
| introductoryFlag | number | 否 | 是否处于促销价续期周期内。
|
| trialFlag | number | 否 | 是否处于免费试用周期内。
|
| cancelTime | number | 否 | 取消时间的时间戳。在顾客投诉通过客服取消订阅,或者顾客升级、跨级到同组其他商品并且立即生效场景下,需要取消原有订阅的上次收据时有值。 说明: 已经取消的收据等同于没有完成购买。 |
| cancelReason | number | 否 | 取消原因。
|
| renewStatus | number | 否 | 续期状态。
通常,取值为0时,应用可以给用户提供其他的订阅选项,例如推荐一个同组更低级别的商品。该值为0通常代表用户主动取消了该订阅。 |
| priceConsentStatus | number | 否 | 商品提价时的用户意见。
|
| renewPrice | number | 否 | 下次续期价格。在有priceConsentStatus情况下,供客户端参考,用于提示用户新的续期价格。 |
| subIsvalid | boolean | 否 |
|
| cancelledSubKeepDays | number | 否 | 用户取消后订阅关系保留的天数,并不表示本订阅已经取消。 |
| resumeTime | number | 否 | 订阅商品暂停订阅后的恢复时间。 |
fail返回值
| 参数 | 类型 | 说明 |
|---|---|---|
| data | string | 错误描述。请先判断类型后,再获取值。 |
| code | number | 错误码。 |
示例代码
pay.createPurchaseIntent({
purchaseIntentReq: {
"applicationID": "101315751",
"productId": "dmy001",
"priceType": 0,
"developerPayload": "testPurchase",
"publicKey": "MIIBojANBgkqhkiG9w0BAQEFAAOCAY8AMIIBigKCAYEAnLLFO6c8d1x6jdbZ8PkNtrLtRMiFaRqWZgEjC4Vj9QXnPCmDZoPO5A5TSwzlWjYL5ktbbDnZC6Vfp8VI8nTMm8DvbGsJ+1ihru31vG1gqvUgOaXESqBhdpMrKFEgNBV8zlalLpcCU6Gayd8QJCxXRPcUisHLTQFJHjTMOWmvOcKiSxt1VmG3dvfWVkoMeKyerZy4qHEWM/asJihPZATBQ7puMC/kOh6i8V2gv4w/74KWifpBr3J5RN+PK6E7yWUqIALFTnN5vOIif2HELvgt+S6uaGpRydhSwu1xtV7bPtXQY20ollYo4BUi+AvM16iBCa1+1Mdw0y6Y9gZAtpHRK1Pf+yea4aoY4y/bZ6EX21wucvbzxexDcBkGn0DVvNHKr3usmUmq/yfMMmDPqPujv3iDWKFENfL4Agugo7I8etCF8vVYDOT5J8gXupgGLiritkfALZD8HgNZADyM+NnvQBJrdeVoHxCYoQMCS2hySPf2AaZWT7PzVAeGidLcEeKlAgMBAAE="
},
success: function (data) {
that.inAppPurchaseData = data;
console.debug("createPurchaseIntent success =" + JSON.stringify(data));
prompt.showToast({
message: "createPurchaseIntent success!"
})
},
fail: function (data, code) {
console.log("createPurchaseIntent fail data =" + data, "code =" + code);
prompt.showToast({
message: "createPurchaseIntent fail!"
})
}
}) 描述
针对消耗型商品,在商品支付成功后,应用需要在发放商品之后调用此接口对消耗商品执行消耗操作。
OBJECT参数
| 参数 | 类型 | 是否必填 | 说明 |
|---|---|---|---|
| consumeOwnedPurchaseReq | json | 是 | 消耗商品请求,详细信息请参见“consumeOwnedPurchaseReq参数说明”。 |
| success | function | 否 | 成功回调。 |
| fail | function | 否 | 失败回调。 |
| complete | function | 否 | 完成回调。 |
consumeOwnedPurchaseReq参数说明
| 参数 | 类型 | 是否必填 | 说明 |
|---|---|---|---|
| applicationID | json | 是 | 在华为开发者联盟上创建快应用后分配的唯一标识。获取方式请参见“创建快应用”中的“获取APP ID”章节。 |
| developerChallenge | string | 否 | 开发者自定义的挑战字,唯一标识此次消耗请求。消耗成功后此挑战字会记录在购买信息中并返回。该参数长度限制为(0, 64)。 |
| purchaseToken | string | 是 | 用户购买商品的标识,在支付商品时由支付服务器生成并在InAppPurchaseData中返回给应用。应用传入此参数供支付服务器对订单状态进行更新后再发放商品。 |
| publicKey | string | 是 | 开通支付服务时获取的支付公钥。获取方式请参见“开通支付服务”中的“获取支付公钥”章节。 |
success返回值
| 参数 | 类型 | 说明 |
|---|---|---|
| returnCode | Number | 返回码。 |
| errMsg | string | 返回码描述信息。 |
| consumePurchaseData | string | 包含消耗结果数据的JSON字符串。 |
| dataSignature | string | consumePurchaseData基于支付私钥的签名字符串。 |
consumePurchaseData参数说明
| 参数 | 类型 | 是否必填 | 说明 |
|---|---|---|---|
| applicationId | string | 是 | 在华为开发者联盟上创建快应用后分配的唯一标识。获取方式请参见“创建快应用”中的“获取APP ID”章节。 |
| autoRenewing | boolean | 是 | 订阅是否自动续订。
|
| orderId | string | 是 | 华为支付服务器侧的订单ID,唯一标识一次交易,由华为支付服务器在支付时生成。 |
| packageName | string | 是 | 快应用中心包名。 |
| productId | string | 是 | 商品ID。 |
| purchaseTime | number | 是 | 商品购买时间的时间戳,即1970年1月1日0点距离购买时间的毫秒数。 |
| purchaseState | number | 是 | 订单状态。
|
| developerPayload | string | 否 | 商户侧保留信息,由应用在支付时传入。 |
| purchaseToken | string | 是 | 用于唯一标识商品和用户对应关系的购买令牌,在支付完成时由华为支付服务器生成。 |
| developerChallenge | string | 否 | 应用发起消耗请求时自定义的挑战字,唯一标识此次消耗请求。 |
| consumptionState | number | 是 | 消费状态。
|
| currency | string | 是 | 币种。参见“ISO 4217标准”,例如USD、CNY、MYR。 |
| price | number | 是 | 商品价格,精确到小数点后2位,例如5.00*100=500。 |
| country | string | 是 | 用户服务地国家码,参见必须符合“ISO 3166标准”,如US、CN、MY。 |
| responseCode | string | 是 | 响应码,成功返回为0。 |
| responseMessage | string | 否 | 响应信息。 |
fail返回值
| 参数 | 类型 | 说明 |
|---|---|---|
| data | string | 错误描述。请先判断类型后,再获取值。 |
| code | number | 错误码。 |
示例代码
pay.consumeOwnedPurchase({
consumeOwnedPurchaseReq: {
"applicationID": "101315751",
"developerPayload": "testPurchase",
"purchaseToken": "0000017297d6a4faa22aaa2fa705e96247231b89ec228b3fd05e378b70e4c7d023a9c972c540e3d0x434e.1.101315751",
"publicKey": "MIIBojANBgkqhkiG9w0BAQEFAAOCAY8AMIIBigKCAYEAnLLFO6c8d1x6jdbZ8PkNtrLtRMiFaRqWZgEjC4Vj9QXnPCmDZoPO5A5TSwzlWjYL5ktbbDnZC6Vfp8VI8nTMm8DvbGsJ+1ihru31vG1gqvUgOaXESqBhdpMrKFEgNBV8zlalLpcCU6Gayd8QJCxXRPcUisHLTQFJHjTMOWmvOcKiSxt1VmG3dvfWVkoMeKyerZy4qHEWM/asJihPZATBQ7puMC/kOh6i8V2gv4w/74KWifpBr3J5RN+PK6E7yWUqIALFTnN5vOIif2HELvgt+S6uaGpRydhSwu1xtV7bPtXQY20ollYo4BUi+AvM16iBCa1+1Mdw0y6Y9gZAtpHRK1Pf+yea4aoY4y/bZ6EX21wucvbzxexDcBkGn0DVvNHKr3usmUmq/yfMMmDPqPujv3iDWKFENfL4Agugo7I8etCF8vVYDOT5J8gXupgGLiritkfALZD8HgNZADyM+NnvQBJrdeVoHxCYoQMCS2hySPf2AaZWT7PzVAeGidLcEeKlAgMBAAE="
},
success: function (data) {
console.debug("consumeOwnedPurchase data =", JSON.stringify(data));
prompt.showToast({
message: "consumeOwnedPurchase success!"
})
},
fail: function (data, code) {
console.log("consumeOwnedPurchase fail data =" + JSON.stringify(data), "code =" + code);
prompt.showToast({
message: "consumeOwnedPurchase fail!"
})
}
}) 描述
此接口用于获取消耗型商品的历史消耗商品信息或订阅商品的所有订阅收据。
OBJECT参数
| 参数 | 类型 | 是否必填 | 说明 |
|---|---|---|---|
| ownedPurchasesRecordReq | json | 是 | 查询已订购商品请求,详细信息请参见“ownedPurchasesRecordReq参数说明”。 |
| success | function | 否 | 成功回调。 |
| fail | function | 否 | 失败回调。 |
| complete | function | 否 | 完成回调。 |
ownedPurchasesRecordReq参数说明
| 参数 | 类型 | 是否必填 | 说明 |
|---|---|---|---|
| applicationID | string | 是 | 在华为开发者联盟上创建快应用后分配的唯一标识。获取方式请参见“创建快应用”中的“获取APP ID”章节。 |
| priceType | number | 是 | 商品类型。
|
| publicKey | string | 是 | 开通支付服务时获取的支付公钥。获取方式请参见“开通支付服务”中的“获取支付公钥”章节。 |
| continuationToken | string | 否 | 分页查询的定位标志。该参数第一次查询时不需要传入,如果第一次查询数据量很大超过200条,会在查询后返回该参数,第二次查询时需要携带该参数。 |
success返回值
| 参数 | 类型 | 说明 |
|---|---|---|
| returnCode | number | 查询结果的返回码。 |
| errMsg | string | 返回码描述信息。 |
| itemList | array | 以String数组方式返回用户已购买的商品ID列表。 |
| inAppPurchaseDataList | array | 以String数组方式返回用户已购买商品的详情信息列表。数组中每个String元素为JSON格式。 |
| inAppSignature | array | 包含已使用支付私钥签名的购买数据(inAppPurchaseDataList)签名字符串。签名算法为SHA256WITHRSA,签名字符串与 inAppPurchaseDataList中的商品详细信息为一一对应关系,即inAppSignature中的第1个签名字符串对应inAppPurchaseDataList中第1条商品的详情信息,依次类推。应用需要对inAppPurchaseDataList中的每个JSON字符串都进行验签,如果验签不通过则需要重新获取该商品信息,验签方法请参见“对结果验签”。 |
| continuationToken | string | 数据定位标志。如果用户拥有的商品数量非常大,当响应中存在continuationToken时,应用必须对当前方法发起另一次调用,并传入本次接收到的continuationToken。如果商品仍未查完,需要继续发起调用,直到不再返回continuationToken,表示已经返回全部商品。 |
| placedInappPurchaseDataList | array | 以JSON字符串数组方式返回用户发生过订阅商品切换时的订阅关系信息,每个JSON字符串包含的参数请参见“InAppPurchaseData”。商品切换是指用户购买了订阅商品A后,在下一个周期购买了同一个订阅组下的商品B,则此时A的订阅关系将取消,用户转而与商品B建立订阅关系。则查询时此字段将返回商品B的订阅关系信息。该值仅在priceType为2且用户存在订阅商品切换时才会返回。 |
| placedInappSignatureList | array | 对应placedInappPurchaseDataList中订阅关系的签名字符串。应用需要对placedInappPurchaseDataList中的每个JSON字符串都进行验签,如果验签不通过则需要重新获取该订阅关系,验签方法请参见“对结果验签”。该值仅在priceType为2且用户存在订阅商品切换时才会返回。 |
fail返回值
| 参数 | 类型 | 说明 |
|---|---|---|
| data | string | 错误描述。请先判断类型后,再获取值。 |
| code | number | 错误码。 |
示例代码
pay.obtainOwnedPurchaseRecord({
ownedPurchasesRecordReq: {
"applicationID": "101315751",
"priceType": 2,
"publicKey": "MIIBojANBgkqhkiG9w0BAQEFAAOCAY8AMIIBigKCAYEAnLLFO6c8d1x6jdbZ8PkNtrLtRMiFaRqWZgEjC4Vj9QXnPCmDZoPO5A5TSwzlWjYL5ktbbDnZC6Vfp8VI8nTMm8DvbGsJ+1ihru31vG1gqvUgOaXESqBhdpMrKFEgNBV8zlalLpcCU6Gayd8QJCxXRPcUisHLTQFJHjTMOWmvOcKiSxt1VmG3dvfWVkoMeKyerZy4qHEWM/asJihPZATBQ7puMC/kOh6i8V2gv4w/74KWifpBr3J5RN+PK6E7yWUqIALFTnN5vOIif2HELvgt+S6uaGpRydhSwu1xtV7bPtXQY20ollYo4BUi+AvM16iBCa1+1Mdw0y6Y9gZAtpHRK1Pf+yea4aoY4y/bZ6EX21wucvbzxexDcBkGn0DVvNHKr3usmUmq/yfMMmDPqPujv3iDWKFENfL4Agugo7I8etCF8vVYDOT5J8gXupgGLiritkfALZD8HgNZADyM+NnvQBJrdeVoHxCYoQMCS2hySPf2AaZWT7PzVAeGidLcEeKlAgMBAAE="
},
success: function (data) {
console.debug("obtainOwnedPurchaseRecord data =", JSON.stringify(data));
prompt.showToast({
message: "obtainOwnedPurchaseRecord success!"
})
},
fail: function (data, code) {
console.log("obtainOwnedPurchaseRecord fail data =" + JSON.stringify(data), "code =" + code);
prompt.showToast({
message: "obtainOwnedPurchaseRecord fail!"
})
}
}) 描述
拉起华为应用内支付的相关订阅页面,包括:
OBJECT参数
| 参数 | 类型 | 是否必填 | 说明 |
|---|---|---|---|
| startIapActivityReq | json | 是 | 跳转订阅页面请求,详细信息请参见“startIapActivityReq参数说明”。 |
| success | function | 否 | 成功回调。 |
| fail | function | 否 | 失败回调。 |
| complete | function | 否 | 完成回调。 |
startIapActivityReq参数说明
| 参数 | 类型 | 是否必填 | 说明 |
|---|---|---|---|
| applicationID | string | 是 | 在华为开发者联盟上创建快应用后分配的唯一标识。获取方式请参见“创建快应用”中的“获取APP ID”章节。 |
| type | number | 是 | 跳转界面。
|
| subscribeProductId | string | 否 | 已经订阅商品的id。type设置为3必须带id,type为2不需要带id。 |
success 返回值
无。
fail返回值
| 参数 | 类型 | 说明 |
|---|---|---|
| data | string | 错误描述。请先判断类型后,再获取值。 |
| code | number | 错误码。 |
示例代码
pay.startIapActivity({
startIapActivityReq: {
"applicationID": "101315751",
"type": 2,
"subscribeProductId":"dy1"
},
success: function () {
prompt.showToast({
message: "startIapActivity success!"
})
},
fail: function (data, code) {
console.log("startIapActivity fail data =" + JSON.stringify(data), "code =" + code);
prompt.showToast({
message: "createPurchaseIntent fail!"
})
}
}) 描述
创建非PMS商品订单,支持购买消耗型商品、非消耗型商品,不支持购买订阅类商品。
应用可以调用此接口自行传入商品价格并完成支付,而不是从PMS获取价格。
OBJECT参数
| 参数 | 类型 | 是否必填 | 说明 |
|---|---|---|---|
| purchaseIntentWithPriceReq | json | 是 | 购买商品请求信息,详细信息请参见“purchaseIntentWithPriceReq参数说明”。 |
| success | function | 否 | 成功回调。 |
| fail | function | 否 | 失败回调。 |
| complete | function | 否 | 完成回调。 |
purchaseIntentWithPriceReq参数说明
| 参数 | 类型 | 是否必填 | 说明 |
|---|---|---|---|
| applicationID | string | 是 | 在华为开发者联盟上创建快应用后分配的唯一标识。获取方式请参见“创建快应用”中的“获取APP ID”章节。 |
| publicKey | string | 是 | 开通支付服务时获取的支付公钥。获取方式请参见“开通支付服务”中的“获取支付公钥”章节。 |
| productId | string | 是 | 应用自定义的商品ID。商品ID用于唯一标识一个商品,不能重复。 说明: 该参数长度限制为(0,148]。 |
| priceType | string | 是 | 商品类型。
|
| developerPayload | string | 否 | 商户侧保留信息。若该字段有值,在支付成功后的回调结果中会原样返回给应用。 说明: 该参数长度限制为[0, 256]。 |
| amount | string | 是 | 商品金额,中国大陆该字段单位为元。此金额将会在支付时显示给用户确认。 说明: 配置商品金额时:
|
| country | string | 是 | 国家/地区码,用于区分国家/地区信息,必须符合ISO 3166标准。 说明: 中国大陆传值为CN,其余国家/地区请参见“华为IAP范围覆盖”。 |
| currency | string | 是 | 用于支付该商品的币种,必须符合ISO 4217标准。 说明: 中国大陆传值为CNY,其余国家/地区请参见“华为IAP范围覆盖”。 |
| productName | string | 是 | 商品名称,由应用自定义。 说明: 该参数长度限制为(0,64],且不能包含以下特殊字符: # " & / ? $ ^ * : ) \ < > , | % |
| reservedInfor | string | 否 | 要求为JSON String格式,商户可以将额外需要传入的字段以key-value的形式设置在JSON String中,并通过该参数传入。示例: String reservedInfor = "{"key1":"value1","key2":"value2"}"; 说明: 该字段为预留字段,可选传入,您暂时无需关注。 |
| sdkChannel | string | 是 | 渠道信息。 ● 0:自有应用,无渠道 ● 1:应用市场渠道 ● 2:预装渠道 ● 3:游戏中心 |
| serviceCatalog | string | 是 | 商品类型。
应用设置为"X5"。 |
success 返回值
| 参数 | 类型 | 说明 |
|---|---|---|
| returnCode | number | 返回码。 |
| errMsg | string | 返回码描述信息。 |
| inAppDataSignature | string | 包含已使用应用私钥签名的购买数据(inAppPurchaseData)的签名字符串。签名算法为SHA256WITHRSA。支付成功后应用需要参见“对结果验签”的方法使用支付公钥对inAppPurchaseData的JSON字符串进行验签。 |
| inAppPurchaseData | string | 包含购买订单详情的JSON 字符串,详细信息请参见“inAppPurchaseData参数说明”。 |
| 参数 | 类型 | 是否必填 | 说明 |
|---|---|---|---|
| applicationId | string | 是 | 应用ID。 |
| autoRenewing | boolean | 是 | 是否自动续订。非订阅类商品始终为false。 |
| orderId | string | 否 | 华为支付服务器侧的订单ID,唯一标识一次交易,由华为支付服务器在支付时生成。 |
| kind | number | 是 | 商品类型。
|
| packageName | string | 否 | 应用安装包名,此处固定为快应用中心包名。 |
| productId | string | 是 | 商品ID。每个商品必须有唯一的ID,由应用在PMS中维护。 |
| productName | string | 否 | 商品名称。 |
| purchaseTime | number | 否 | 商品购买时间的时间戳,即自1970年1月1日0时起到商品购买时间的毫秒数。 |
| purchaseTimeMillis | number | 否 | 用于兼容历史接口,同purchaseTime,新接入无需关注本字段。 |
| purchaseState | string | 是 | 订单交易状态。
|
| developerPayload | string | 否 | 商户侧保留信息,是您在调用支付接口时传入的值。 |
| developerChallenge | string | 否 | 应用发起消耗请求时自定义的挑战字,是您在调用 pay.consumeOwnedPurchase传入的值,可唯一标识此次消耗请求。 说明: 非订阅类商品才存在此字段。 |
| consumptionState | string | 否 | 消费状态。
|
| confirmed | integer | 否 | 确认状态。
说明: 该字段当前仅做兼容使用,您无需关注。 |
| purchaseToken | string | 否 | 用于唯一标识商品和用户对应关系的购买令牌,在支付完成时由华为支付服务器生成。 说明: 当前该字段为92位,后续可能扩展,如果您需要存储此信息,建议预留128位的长度。 |
| purchaseType | number | 否 | 购买类型,正常购买不返回此参数。
|
| currency | string | 否 | 定价货币的币种,参见“ISO 4217标准”。 |
| price | number | 否 | 商品实际价格*100以后的值。 |
| country | string | 是 | 国家码,用于区分国家信息,参见“ISO 3166标准”。 |
| payType | string | 否 | 支付方式。
|
| payOrderId | string | 否 | 交易订单号。 |
| accountFlag | number | 否 | 账号类型。
|
fail返回值
| 参数 | 类型 | 说明 |
|---|---|---|
| data | string | 错误描述。请先判断类型后,再获取值。 |
| code | number | 错误码。 |
示例代码
pay.createPurchaseIntentWithPrice({
purchaseIntentWithPriceReq: {
"applicationID": "101315751",
"amount":"0.01",
"country":"CN",
"currency":"CNY",
"developerPayload": "testPurchase",
"priceType": "0",
"productId": "abc22",
"productName":"零食大礼包",
"reservedInfor":"{}",
"sdkChannel":"0",
"serviceCatalog":"X5",
"publicKey": "MIIBojANBgkqhkiG9w0BAQEFAAOCAY8AMIIBigKCAYEAnLLFO6c8d1x6jdbZ8PkNtrLtRMiFaRqWZgEjC4Vj9QXnPCmDZoPO5A5TSwzlWjYL5ktbbDnZC6Vfp8VI8nTMm8DvbGsJ+1ihru31vG1gqvUgOaXESqBhdpMrKFEgNBV8zlalLpcCU6Gayd8QJCxXRPcUisHLTQFJHjTMOWmvOcKiSxt1VmG3dvfWVkoMeKyerZy4qHEWM/asJihPZATBQ7puMC/kOh6i8V2gv4w/74KWifpBr3J5RN+PK6E7yWUqIALFTnN5vOIif2HELvgt+S6uaGpRydhSwu1xtV7bPtXQY20ollYo4BUi+AvM16iBCa1+1Mdw0y6Y9gZAtpHRK1Pf+yea4aoY4y/bZ6EX21wucvbzxexDcBkGn0DVvNHKr3usmUmq/yfMMmDPqPujv3iDWKFENfL4Agugo7I8etCF8vVYDOT5J8gXupgGLiritkfALZD8HgNZADyM+NnvQBJrdeVoHxCYoQMCS2hySPf2AaZWT7PzVAeGidLcEeKlAgMBAAE="
},
success: function (data) {
that.inAppPurchaseData = data.inAppPurchaseData;
console.log('createPurchaseIntentWithPrice data = ', JSON.stringify(data));
},
fail: function (data, code) {
console.log("createPurchaseIntentWithPrice fail data =" + JSON.stringify(data), "code =" + code);
prompt.showToast({
message: "createPurchaseIntentWithPrice fail!"
})
that.retdata = "createPurchaseIntentWithPrice fail data =" + JSON.stringify(data) + "----code =" + code
}
})