Skip to content

Commit d7df019

Browse files
committed
add 统一收单交易订单支付接口
1 parent 55c244a commit d7df019

File tree

3 files changed

+44
-3
lines changed

3 files changed

+44
-3
lines changed

alipay/model_payment.go

+20-2
Original file line numberDiff line numberDiff line change
@@ -22,6 +22,13 @@ type TradeCreateResponse struct {
2222
Sign string `json:"sign"`
2323
}
2424

25+
type TradeOrderPayResponse struct {
26+
Response *TradeOrderPay `json:"alipay_trade_order_pay_response"`
27+
AlipayCertSn string `json:"alipay_cert_sn,omitempty"`
28+
SignData string `json:"-"`
29+
Sign string `json:"sign"`
30+
}
31+
2532
type TradeQueryResponse struct {
2633
Response *TradeQuery `json:"alipay_trade_query_response"`
2734
AlipayCertSn string `json:"alipay_cert_sn,omitempty"`
@@ -155,8 +162,19 @@ type TradePrecreate struct {
155162

156163
type TradeCreate struct {
157164
ErrorResponse
158-
TradeNo string `json:"trade_no,omitempty"`
159-
OutTradeNo string `json:"out_trade_no,omitempty"`
165+
TradeNo string `json:"trade_no"`
166+
OutTradeNo string `json:"out_trade_no"`
167+
}
168+
169+
type TradeOrderPay struct {
170+
ErrorResponse
171+
TradeNo string `json:"trade_no"`
172+
OutTradeNo string `json:"out_trade_no"`
173+
FulfillmentAmount string `json:"fulfillment_amount"`
174+
OutRequestNo string `json:"out_request_no"`
175+
TotalAmount string `json:"total_amount"`
176+
GmtPayment string `json:"gmt_payment"`
177+
AsyncPaymentMode string `json:"async_payment_mode"`
160178
}
161179

162180
type TradeQuery struct {

alipay/payment_api.go

+23
Original file line numberDiff line numberDiff line change
@@ -129,6 +129,29 @@ func (a *Client) TradeCreate(ctx context.Context, bm gopay.BodyMap) (aliRsp *Tra
129129
return aliRsp, a.autoVerifySignByCert(aliRsp.Sign, signData, signDataErr)
130130
}
131131

132+
// alipay.trade.order.pay(统一收单交易订单支付接口)
133+
// 文档地址:https://opendocs.alipay.com/open/03vtew
134+
func (a *Client) TradeOrderPay(ctx context.Context, bm gopay.BodyMap) (aliRsp *TradeOrderPayResponse, err error) {
135+
err = bm.CheckEmptyError("trade_no")
136+
if err != nil {
137+
return nil, err
138+
}
139+
var bs []byte
140+
if bs, err = a.doAliPay(ctx, bm, "alipay.trade.order.pay"); err != nil {
141+
return nil, err
142+
}
143+
aliRsp = new(TradeOrderPayResponse)
144+
if err = json.Unmarshal(bs, aliRsp); err != nil || aliRsp.Response == nil {
145+
return nil, fmt.Errorf("[%w], bytes: %s", gopay.UnmarshalErr, string(bs))
146+
}
147+
if err = bizErrCheck(aliRsp.Response.ErrorResponse); err != nil {
148+
return aliRsp, err
149+
}
150+
signData, signDataErr := a.getSignData(bs, aliRsp.AlipayCertSn)
151+
aliRsp.SignData = signData
152+
return aliRsp, a.autoVerifySignByCert(aliRsp.Sign, signData, signDataErr)
153+
}
154+
132155
// alipay.trade.query(统一收单线下交易查询)
133156
// 文档地址:https://opendocs.alipay.com/open/02e7gm
134157
func (a *Client) TradeQuery(ctx context.Context, bm gopay.BodyMap) (aliRsp *TradeQueryResponse, err error) {

doc/alipay.md

+1-1
Original file line numberDiff line numberDiff line change
@@ -246,7 +246,7 @@ xlog.Infof("%+v", phone)
246246
* 资金授权冻结接口:`client.FundAuthOrderFreeze()`
247247
* 交易
248248
* 统一收单交易创建接口:`client.TradeCreate()`
249-
* 统一收单交易订单支付接口:TODO:https://opendocs.alipay.com/open/03vtew
249+
* 统一收单交易订单支付接口:`client.TradeOrderPay()`
250250
* 统一收单线下交易查询: `client.TradeQuery()`
251251
* 统一收单交易退款接口: `client.TradeRefund()`
252252
* 统一收单交易退款查询: `client.TradeFastPayRefundQuery()`

0 commit comments

Comments
 (0)