托管收银台
有三个接口专门给你展示给付款人的收银台页面用。页面上没有商户私钥,所以这些调用不签名、不加密;SDK 仍然提供它们,方便后端做对账或代付款人完成订单。
| 用途 | Go | JavaScript | Python | PHP | Java |
|---|---|---|---|---|---|
| 读取收银台状态 | GetPaymentCheckout(orderNo) | getPaymentCheckout(orderNo) | get_payment_checkout(order_no) | getPaymentCheckout($orderNo) | getPaymentCheckout(orderNo) |
| 付款人上报转账流水号(UTR) | SubmitPaymentTradeNo(orderNo, tradeNo) | submitPaymentTradeNo(orderNo, tradeNo) | submit_payment_trade_no(order_no, trade_no) | submitPaymentTradeNo($orderNo, $tradeNo) | submitPaymentTradeNo(orderNo, tradeNo) |
| 付款人补充"先创建后填"订单的信息 | AddPaymentExtraInfo(orderNo, payMethod, extra) | addPaymentExtraInfo(orderNo, payMethod, extra) | add_payment_extra_info(order_no, pay_method, extra) | addPaymentExtraInfo($orderNo, $payMethod, $extra) | addPaymentExtraInfo(orderNo, payMethod, extra) |
status 才是结果,不是 HTTP 状态码
两个 POST 接口即使平台拒绝了请求,也返回 HTTP 200、envelope code 200。结果在返回对象里:
status | 含义 |
|---|---|
1 | 已接受 |
0 | 已拒绝,message 说明原因(状态不对、限流……) |
只检查有没有抛异常的调用方会把拒绝当成功。务必检查 status。
- Go
- JavaScript
- Python
- PHP
- Java
res, err := c.SubmitPaymentTradeNo(ctx, orderNo, utr)
if err != nil { /* 传输或 envelope 问题 */ }
if !res.Ok() { // Status != 1
show(res.Message)
}
Go 返回类型化的 SubmitTradeNoResult 和 AddExtraInfoResult,带 Ok() 辅助方法。
const res = await client.submitPaymentTradeNo(orderNo, utr);
if (res.status !== 1) show(res.message);
res = client.submit_payment_trade_no(order_no, utr)
if res.get("status") != 1:
show(res.get("message"))
$res = $client->submitPaymentTradeNo($orderNo, $utr);
if (($res['status'] ?? 0) !== 1) show($res['message'] ?? '');
Map<String, Object> res = client.submitPaymentTradeNo(orderNo, utr);
if (!Integer.valueOf(1).equals(res.get("status"))) show((String) res.get("message"));
先创建,后补信息
部分方式允许不带付款人信息先创建订单,再在你自己的页面上收集。addPaymentExtraInfo 把这些信息送上去并触发真正的上游下单;响应里随后带 paymentUrl,即要把付款人重定向到的页面。payMethod 和 extra 可选,省略的字段不会发送。
收银台状态
getPaymentCheckout 返回收银台视角的订单:orderNo、status、orderStatus、amount、currency、payMethod、returnUrl,以及 params 里的 payContent(要渲染的二维码或转账内容)和 reusable(支付成功后内容是否可以继续展示)。注意 orderStatus 用的是收银台词汇(CREATED、PENDING……),与 Merchant API 的状态字符串不同。