本页面向分销商(reseller)——通过 API、凭预付余额从 Waffo Point Topup 采购点卡库存的一方。它不属于商户支付 API,也不是Point Topup 集成概览中供应商侧的 Mode A/B/C 集成。
code / msg / data 信封结构以及 RSA 密钥交换与 Point Topup 其余部分相同——见Point Topup API 通用规范。
我可以调用哪些接口?
六个接口全部是POST,请求体为 JSON。Sandbox 和生产环境的基础 URL 在入网时下发。
分销商认证和 order/create 有什么不同?
传输方式相同——X-API-KEY 加上对原始请求体计算的 X-SIGNATURE,用你在入网时交换的公钥验证,并返回一个供你反向验证的签名响应。有三点不同:
resellerId 与密钥不匹配属于参数错误;调用密钥范围之外的接口返回 A0004。
怎么拉取商品目录,priceStrategy 是什么?
products 返回你的分销合同上处于生效状态的商品。传 itemId 可缩小到单个商品,不传则返回全部;未知或未生效的 itemId 返回空列表,而不是报错。
随后
balance 按币种各返回一条记录,给出当前可用余额。请与 SKU 的币种对应:订单按 SKU 自身的币种计费。
create 需要哪些字段?
有两个行为需要知道:
buyerInfo.userEmail 总是会被替换为你分销商账户上的邮箱,所以你在其中填写的客户地址不起作用;订单币种下的可用余额会在订单被接受之前校验,因此余额不足的账户会以 A0009 快速失败,而不会生成订单。
为什么 create 总是返回 IN_PROGRESS?
因为接受和履约是分开的。create 返回 resellerRequestId、Waffo 的 orderId 以及 status 为 IN_PROGRESS;扣款和供货在之后进行,结果会到达你的 notifyUrl 或通过 inquiry 获取。永远不要把 create 的响应当作采购结果。
重复发送同一个 resellerRequestId 会按 resellerId + resellerRequestId 去重:你会拿回原来的 orderId,状态仍为 IN_PROGRESS,即使该订单已经完成——所以重复请求之后请跟一次 inquiry。不会创建第二个订单,重复请求中的其他字段会被忽略。两个完全相同的请求并行竞争时返回 A0010;稍后重试即可。
怎么查询一笔订单,或者查多笔?
inquiry 接受 orderId 或 resellerRequestId——至少传一个,且订单必须属于你。把 returnGameCard 设为 true 可获得 gameCardList:序列号、密码(SKU 使用密码时)、expiryType(FROM_PURCHASE 或 FROM_REDEMPTION)以及 expiry。卡信息仅在订单为 SUCCESS 后才出现。
orders-inquiry 是分页形式。page、pageSize、startTime 和 endTime 全部必填;时间窗口按 requestedAt——你发送请求的时间——过滤,采用相同的 ISO 8601 格式,且应保持在 6 个月以内。resellerRequestId、orderId 和 status 可进一步缩小范围。records 包裹在 total、size、current 和 pages 中,每条形状与单笔 inquiry 相同,但不含卡密序列号。
订单状态和金额各是什么意思?
totalAmount 是你所购内容的标价,totalAmountAfterDiscount 是你的合同实际收取的金额,currency 对两者都适用。completedTime 在订单为最终状态后出现。
fulfillment-inquiry 属于直充(Mode C)流程,而不是采购流程,所以它的形状不同:调用方以 supplierId 标识自己,订单以 salesOrderId 或 payOrderId(至少一个)标识,返回的是 fulfillmentStatus——IN_PROGRESS、SUCCESS、PAY_SUCCESS、PAY_SUCCESS_SUPPLY_FAILED 或 PAYMENT_FAILED——而不是上面的四个值。见
Mode C:直充。
我的 notifyUrl 会收到什么?
订单进入最终状态后,Waffo 会 POST 一个带签名的 JSON 请求体:
result 是完整的 inquiry 载荷,包含卡密序列号。用 Waffo 的公钥验证 X-SIGNATURE,然后以严格的 {"message": "success"} 进行确认——任何其他响应体或非 2xx 响应都算投递失败并会被重试。重试不会无限进行,所以请保留一个以 inquiry 为事实来源的对账轮询。
这些接口会返回哪些错误码?
有对不上的地方?请联系支持,并提供你的
resellerId 以及 orderId 或 resellerRequestId 之一。