本文档阐述了服务器端IAP验证的步骤。
now.gg无代码支付(No Code Payment)实现了服务器端验证以确定购买的真实性。若验证成功,游戏可以将购买的产品分配给用户,并将购买标记为已消费(consumed)。
要在您的应用内实现无代码支付:
此处为now.gg无代码支付关联的工作流:
通过此步骤,您可以使用now.gg无代码支付验证应用内购买。
purchase token
。-nowgg-
作为前缀。您可以用它识别now.gg的应用内购买。以下示例代码演示了验证应用内购买的实现:
def verify_purchase(package_name, product_id, purchase_token): # 游戏特定的验证代码 if purchase_token.startswith("-nowgg-"): response = verify_purchase_with_nowgg( package_name, product_id, purchase_token) else: # 继续同其它提供商验证 # 游戏特定的响应处理代码
以下示例代码演示了使用 verifyPurchase
API的相关请求。
import requests url = "https://cloud-api.bluestacks.cn/v2/seller/order/verifyPurchase" payload = 'purchaseToken=<nowgg_purchase_token>' headers = { 'Authorization': '<payment_api_key_here>', 'Content-Type': 'application/x-www-form-urlencoded' } response = requests.request("POST", url, headers=headers, data=payload) print(response.text)
purchaseToken
。Payments API Key
可以在 nowStudio 的证书章节找到 更多信息。以下是 verifyPurchase
API的示例响应。
{ "success": true, "code": 0, "codeMsg": "success", "data": { "purchaseTimeMillis": "1630529397125", // 此字段已弃用,请使用 purchaseTime 代替。 "purchaseTime": "1630529397125", "purchaseState": 0, "consumptionState": 0, "developerPayload": "<developer_payload>", "orderId": "<orderId_here>", "kind": "nowgg#productPurchase", "regionCode": "US", "currency": "USD", "packageName": "<package_name>", "payStatusTxt": "Paid", "orderAmount": "25.15", "isTestOrder": false, "payTimeTxt": "2024 - 10 - 3006: 08: 01", "sellerGoodsId": "11223343" } }
参数 | 类型 | 描述 |
---|---|---|
success | boolean | 返回是否成功,true或false。 |
code | int | 成功返回0,失败返回非0。 |
codeMsg | string | 返回错误码关联的消息。(错误码参考此处) |
purchaseTimeMillis(弃用) | string | 购买产品的时间,以自纪元(epoch)以来的毫秒数表示。此字段已弃用,请使用 purchaseTime 代替。 |
purchaseTime | string | 产品的购买时间,自纪元以来的秒数。 |
purchaseState | int | 订单的购买状态。可能的取值有: 0:未支付,1:已支付,2:失败 |
consumptionState | int | 应用内产品的消费状态。可能的取值有: 0:还未消费,1:已消费 |
developerPayload | string | 由开发者指定的字符串,包含订单的补充信息。 |
orderId | string | 关联每个应用内购买产品的订单ID(唯一交易标识符)。 |
kind | string | 购买的应用内产品的硬编码类型 nowgg#productPurchase 。 |
regionCode | string | 产品被授予时,用户的计费区域代码(ISO 3166-1 alpha-2)。 |
currency | string | 购买使用的货币。如 – USD, INR等。 |
packageName | string | 您应用关联的 packageName 。 |
payStatusTxt | string | 已支付或未支付的状态。 |
orderAmount | string | 您购买的 orderAmount 。 |
isTestOrder | boolean | 返回是否是测试订单。 |
payTimeTxt | string | 购买关联的支付日期和时间。 |
sellerGoodsId | string | 已购买产品关联的产品ID。 |
在您验证购买后,您应将其标记为已消费。
购买的消费包括:
以下示例代码演示了使用 consumePurchase
API的相关请求。
import requests url = "https://cloud-api.bluestacks.cn/v2/order/consumePurchase" payload = 'purchaseToken=nowgg-_purchase_token' headers = { 'Authorization': 'payment_api_key_here', 'Content-Type': 'application/x-www-form-urlencoded' } response = requests.request("POST", url, headers=headers, data=payload) print(response.text)
purchaseToken
。Payments API Key
可以在 nowStudio 的证书章节找到。更多信息。以下是 consumePurchase
API的示例响应。
} "success": true, "code": 0, "codeMsg": "success", "data": {} }
参数 | 类型 | 描述 |
---|---|---|
success | boolean | 返回是否成功,true或false。 |
code | int | 成功返回0,失败返回非0。 |
codeMsg | string | 返回错误码关联的消息。(此处提供) |
data | object | 作为响应返回的数据。 |
错误码 | 消息 | 描述 |
---|---|---|
3800 | ERROR_CONSUMING_PRODUCT | 消费产品发生错误。 |
3900 | INVALID_AUTHORIZATION_KEY | 提供的用于授权的API秘钥无效。 |
3901 | INVALID_PURCHASE_TOKEN | 提供的购买令牌无效。 |
下面的序列图展示了完整的无代码支付(’No Code Payment’)相关流程。