Skip to content

Commit

Permalink
add 统一收单交易订单支付接口
Browse files Browse the repository at this point in the history
  • Loading branch information
iGoogle-ink committed Apr 19, 2024
1 parent 55c244a commit d7df019
Show file tree
Hide file tree
Showing 3 changed files with 44 additions and 3 deletions.
22 changes: 20 additions & 2 deletions alipay/model_payment.go
Original file line number Diff line number Diff line change
Expand Up @@ -22,6 +22,13 @@ type TradeCreateResponse struct {
Sign string `json:"sign"`
}

type TradeOrderPayResponse struct {
Response *TradeOrderPay `json:"alipay_trade_order_pay_response"`
AlipayCertSn string `json:"alipay_cert_sn,omitempty"`
SignData string `json:"-"`
Sign string `json:"sign"`
}

type TradeQueryResponse struct {
Response *TradeQuery `json:"alipay_trade_query_response"`
AlipayCertSn string `json:"alipay_cert_sn,omitempty"`
Expand Down Expand Up @@ -155,8 +162,19 @@ type TradePrecreate struct {

type TradeCreate struct {
ErrorResponse
TradeNo string `json:"trade_no,omitempty"`
OutTradeNo string `json:"out_trade_no,omitempty"`
TradeNo string `json:"trade_no"`
OutTradeNo string `json:"out_trade_no"`
}

type TradeOrderPay struct {
ErrorResponse
TradeNo string `json:"trade_no"`
OutTradeNo string `json:"out_trade_no"`
FulfillmentAmount string `json:"fulfillment_amount"`
OutRequestNo string `json:"out_request_no"`
TotalAmount string `json:"total_amount"`
GmtPayment string `json:"gmt_payment"`
AsyncPaymentMode string `json:"async_payment_mode"`
}

type TradeQuery struct {
Expand Down
23 changes: 23 additions & 0 deletions alipay/payment_api.go
Original file line number Diff line number Diff line change
Expand Up @@ -129,6 +129,29 @@ func (a *Client) TradeCreate(ctx context.Context, bm gopay.BodyMap) (aliRsp *Tra
return aliRsp, a.autoVerifySignByCert(aliRsp.Sign, signData, signDataErr)
}

// alipay.trade.order.pay(统一收单交易订单支付接口)
// 文档地址:https://opendocs.alipay.com/open/03vtew
func (a *Client) TradeOrderPay(ctx context.Context, bm gopay.BodyMap) (aliRsp *TradeOrderPayResponse, err error) {
err = bm.CheckEmptyError("trade_no")
if err != nil {
return nil, err
}
var bs []byte
if bs, err = a.doAliPay(ctx, bm, "alipay.trade.order.pay"); err != nil {
return nil, err
}
aliRsp = new(TradeOrderPayResponse)
if err = json.Unmarshal(bs, aliRsp); err != nil || aliRsp.Response == nil {
return nil, fmt.Errorf("[%w], bytes: %s", gopay.UnmarshalErr, string(bs))
}
if err = bizErrCheck(aliRsp.Response.ErrorResponse); err != nil {
return aliRsp, err
}
signData, signDataErr := a.getSignData(bs, aliRsp.AlipayCertSn)
aliRsp.SignData = signData
return aliRsp, a.autoVerifySignByCert(aliRsp.Sign, signData, signDataErr)
}

// alipay.trade.query(统一收单线下交易查询)
// 文档地址:https://opendocs.alipay.com/open/02e7gm
func (a *Client) TradeQuery(ctx context.Context, bm gopay.BodyMap) (aliRsp *TradeQueryResponse, err error) {
Expand Down
2 changes: 1 addition & 1 deletion doc/alipay.md
Original file line number Diff line number Diff line change
Expand Up @@ -246,7 +246,7 @@ xlog.Infof("%+v", phone)
* 资金授权冻结接口:`client.FundAuthOrderFreeze()`
* 交易
* 统一收单交易创建接口:`client.TradeCreate()`
* 统一收单交易订单支付接口:TODO:https://opendocs.alipay.com/open/03vtew
* 统一收单交易订单支付接口:`client.TradeOrderPay()`
* 统一收单线下交易查询: `client.TradeQuery()`
* 统一收单交易退款接口: `client.TradeRefund()`
* 统一收单交易退款查询: `client.TradeFastPayRefundQuery()`
Expand Down

0 comments on commit d7df019

Please sign in to comment.