跳到主要内容

托管收银台

有三个接口专门给你展示给付款人的收银台页面用。页面上没有商户私钥,所以这些调用不签名、不加密;SDK 仍然提供它们,方便后端做对账或代付款人完成订单。

用途GoJavaScriptPythonPHPJava
读取收银台状态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。

res, err := c.SubmitPaymentTradeNo(ctx, orderNo, utr)
if err != nil { /* 传输或 envelope 问题 */ }
if !res.Ok() { // Status != 1
show(res.Message)
}

Go 返回类型化的 SubmitTradeNoResult 和 AddExtraInfoResult,带 Ok() 辅助方法。

先创建,后补信息​

部分方式允许不带付款人信息先创建订单,再在你自己的页面上收集。addPaymentExtraInfo 把这些信息送上去并触发真正的上游下单;响应里随后带 paymentUrl,即要把付款人重定向到的页面。payMethod 和 extra 可选,省略的字段不会发送。

收银台状态​

getPaymentCheckout 返回收银台视角的订单:orderNo、status、orderStatus、amount、currency、payMethod、returnUrl,以及 params 里的 payContent(要渲染的二维码或转账内容)和 reusable(支付成功后内容是否可以继续展示)。注意 orderStatus 用的是收银台词汇(CREATED、PENDING……),与 Merchant API 的状态字符串不同。

打开收银台或回到你的站点都不代表支付完成。以 webhook 或订单查询为准。