Skip to content

Commit 566d9c1

Browse files
authored
Feat/new alipay api (#270)
* v1.5.83
1 parent 22f7629 commit 566d9c1

File tree

11 files changed

+247
-68
lines changed

11 files changed

+247
-68
lines changed

alipay/ant.go

Lines changed: 5 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -29,7 +29,7 @@ func (a *Client) AntMerchantShopModify(ctx context.Context, bm gopay.BodyMap) (a
2929

3030
// ant.merchant.expand.shop.create(蚂蚁店铺创建)
3131
//
32-
// 文档地址:https://opendocs.alipay.com/apis/api_1/ant.merchant.expand.shop.create
32+
//文档地址:https://opendocs.alipay.com/apis/api_1/ant.merchant.expand.shop.create
3333
func (a *Client) AntMerchantShopCreate(ctx context.Context, bm gopay.BodyMap) (aliRsp *AntMerchantShopCreateRsp, err error) {
3434
err = bm.CheckEmptyError("business_address", "shop_category", "store_id", "shop_type", "ip_role_id", "shop_name")
3535
if err != nil {
@@ -52,8 +52,7 @@ func (a *Client) AntMerchantShopCreate(ctx context.Context, bm gopay.BodyMap) (a
5252
}
5353

5454
// ant.merchant.expand.shop.consult(蚂蚁店铺创建咨询)
55-
//
56-
// 文档地址:https://opendocs.alipay.com/apis/014yig
55+
// 文档地址:https://opendocs.alipay.com/apis/014yig
5756
func (a *Client) AntMerchantShopConsult(ctx context.Context, bm gopay.BodyMap) (aliRsp *AntMerchantShopConsultRsp, err error) {
5857
err = bm.CheckEmptyError("business_address", "shop_category", "store_id", "shop_type", "ip_role_id", "shop_name")
5958
if err != nil {
@@ -76,8 +75,7 @@ func (a *Client) AntMerchantShopConsult(ctx context.Context, bm gopay.BodyMap) (
7675
}
7776

7877
// ant.merchant.expand.order.query(商户申请单查询)
79-
//
80-
// 文档地址:https://opendocs.alipay.com/apis/api_1/ant.merchant.expand.order.query
78+
// 文档地址:https://opendocs.alipay.com/apis/api_1/ant.merchant.expand.order.query
8179
func (a *Client) AntMerchantOrderQuery(ctx context.Context, bm gopay.BodyMap) (aliRsp *AntMerchantOrderQueryRsp, err error) {
8280
err = bm.CheckEmptyError("order_id")
8381
if err != nil {
@@ -100,8 +98,7 @@ func (a *Client) AntMerchantOrderQuery(ctx context.Context, bm gopay.BodyMap) (a
10098
}
10199

102100
// ant.merchant.expand.shop.query(店铺查询接口)
103-
//
104-
// 文档地址:https://opendocs.alipay.com/apis/api_1/ant.merchant.expand.shop.query
101+
// 文档地址:https://opendocs.alipay.com/apis/api_1/ant.merchant.expand.shop.query
105102
func (a *Client) AntMerchantShopQuery(ctx context.Context, bm gopay.BodyMap) (aliRsp *AntMerchantShopQueryRsp, err error) {
106103
var bs []byte
107104
if bs, err = a.doAliPay(ctx, bm, "ant.merchant.expand.shop.query"); err != nil {
@@ -120,8 +117,7 @@ func (a *Client) AntMerchantShopQuery(ctx context.Context, bm gopay.BodyMap) (al
120117
}
121118

122119
// ant.merchant.expand.shop.close(蚂蚁店铺关闭)
123-
//
124-
// 文档地址:https://opendocs.alipay.com/apis/api_1/ant.merchant.expand.shop.close
120+
// 文档地址:https://opendocs.alipay.com/apis/api_1/ant.merchant.expand.shop.close
125121
func (a *Client) AntMerchantShopClose(ctx context.Context, bm gopay.BodyMap) (aliRsp *AntMerchantShopCloseRsp, err error) {
126122
var bs []byte
127123
if bs, err = a.doAliPay(ctx, bm, "ant.merchant.expand.shop.close"); err != nil {

alipay/data_api.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -30,7 +30,7 @@ func (a *Client) DataBillBalanceQuery(ctx context.Context, bm gopay.BodyMap) (al
3030
}
3131

3232
// alipay.data.dataservice.bill.downloadurl.query(查询对账单下载地址)
33-
// 文档地址:https://opendocs.alipay.com/apis/api_15/alipay.data.dataservice.bill.downloadurl.query
33+
// 文档地址:https://opendocs.alipay.com/open/02e7gr
3434
func (a *Client) DataBillDownloadUrlQuery(ctx context.Context, bm gopay.BodyMap) (aliRsp *DataBillDownloadUrlQueryResponse, err error) {
3535
err = bm.CheckEmptyError("bill_type", "bill_date")
3636
if err != nil {

alipay/funds_api.go

Lines changed: 8 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,7 @@ import (
1010
)
1111

1212
// alipay.fund.trans.uni.transfer(单笔转账接口)
13-
// 文档地址:https://opendocs.alipay.com/apis/api_28/alipay.fund.trans.uni.transfer
13+
// 文档地址:https://opendocs.alipay.com/open/02byuo
1414
func (a *Client) FundTransUniTransfer(ctx context.Context, bm gopay.BodyMap) (aliRsp *FundTransUniTransferResponse, err error) {
1515
err = bm.CheckEmptyError("out_biz_no", "trans_amount", "product_code", "payee_info")
1616
if err != nil {
@@ -33,7 +33,7 @@ func (a *Client) FundTransUniTransfer(ctx context.Context, bm gopay.BodyMap) (al
3333
}
3434

3535
// alipay.fund.account.query(支付宝资金账户资产查询接口)
36-
// 文档地址:https://opendocs.alipay.com/apis/api_28/alipay.fund.account.query
36+
// 文档地址:https://opendocs.alipay.com/open/02byuq
3737
func (a *Client) FundAccountQuery(ctx context.Context, bm gopay.BodyMap) (aliRsp *FundAccountQueryResponse, err error) {
3838
err = bm.CheckEmptyError("alipay_user_id")
3939
if err != nil {
@@ -56,7 +56,7 @@ func (a *Client) FundAccountQuery(ctx context.Context, bm gopay.BodyMap) (aliRsp
5656
}
5757

5858
// alipay.fund.trans.common.query(转账业务单据查询接口)
59-
// 文档地址:https://opendocs.alipay.com/apis/api_28/alipay.fund.trans.common.query
59+
// 文档地址:https://opendocs.alipay.com/open/02byup
6060
func (a *Client) FundTransCommonQuery(ctx context.Context, bm gopay.BodyMap) (aliRsp *FundTransCommonQueryResponse, err error) {
6161
var bs []byte
6262
if bs, err = a.doAliPay(ctx, bm, "alipay.fund.trans.common.query"); err != nil {
@@ -125,7 +125,7 @@ func (a *Client) FundTransRefund(ctx context.Context, bm gopay.BodyMap) (aliRsp
125125
}
126126

127127
// alipay.fund.auth.order.freeze(资金授权冻结接口)
128-
// 文档地址: https://opendocs.alipay.com/apis/api_28/alipay.fund.auth.order.freeze
128+
// 文档地址: https://opendocs.alipay.com/open/02fkb9
129129
func (a *Client) FundAuthOrderFreeze(ctx context.Context, bm gopay.BodyMap) (aliRsp *FundAuthOrderFreezeResponse, err error) {
130130
err = bm.CheckEmptyError("auth_code", "auth_code_type", "out_order_no", "out_request_no", "order_title", "amount")
131131
if err != nil {
@@ -148,7 +148,7 @@ func (a *Client) FundAuthOrderFreeze(ctx context.Context, bm gopay.BodyMap) (ali
148148
}
149149

150150
// alipay.fund.auth.order.voucher.create(资金授权发码接口)
151-
// 文档地址: https://opendocs.alipay.com/apis/api_28/alipay.fund.auth.order.voucher.create
151+
// 文档地址: https://opendocs.alipay.com/open/02fit5
152152
func (a *Client) FundAuthOrderVoucherCreate(ctx context.Context, bm gopay.BodyMap) (aliRsp *FundAuthOrderVoucherCreateResponse, err error) {
153153
err = bm.CheckEmptyError("out_order_no", "out_request_no", "order_title", "amount", "product_code")
154154
if err != nil {
@@ -186,7 +186,7 @@ func (a *Client) FundAuthOrderAppFreeze(ctx context.Context, bm gopay.BodyMap) (
186186
}
187187

188188
// alipay.fund.auth.order.unfreeze(资金授权解冻接口)
189-
// 文档地址: https://opendocs.alipay.com/apis/api_28/alipay.fund.auth.order.unfreeze
189+
// 文档地址: https://opendocs.alipay.com/open/02fkbc
190190
func (a *Client) FundAuthOrderUnfreeze(ctx context.Context, bm gopay.BodyMap) (aliRsp *FundAuthOrderUnfreezeResponse, err error) {
191191
err = bm.CheckEmptyError("auth_no", "out_request_no", "amount", "remark")
192192
if err != nil {
@@ -209,7 +209,7 @@ func (a *Client) FundAuthOrderUnfreeze(ctx context.Context, bm gopay.BodyMap) (a
209209
}
210210

211211
// alipay.fund.auth.operation.detail.query(资金授权操作查询接口)
212-
// 文档地址: https://opendocs.alipay.com/apis/api_28/alipay.fund.auth.operation.detail.query
212+
// 文档地址: https://opendocs.alipay.com/open/02fkbd
213213
func (a *Client) FundAuthOperationDetailQuery(ctx context.Context, bm gopay.BodyMap) (aliRsp *FundAuthOperationDetailQueryResponse, err error) {
214214
var bs []byte
215215
if bs, err = a.doAliPay(ctx, bm, "alipay.fund.auth.operation.detail.query"); err != nil {
@@ -228,7 +228,7 @@ func (a *Client) FundAuthOperationDetailQuery(ctx context.Context, bm gopay.Body
228228
}
229229

230230
// alipay.fund.auth.operation.cancel(资金授权撤销接口)
231-
// 文档地址: https://opendocs.alipay.com/apis/api_28/alipay.fund.auth.operation.cancel
231+
// 文档地址: https://opendocs.alipay.com/open/02fkbb
232232
func (a *Client) FundAuthOperationCancel(ctx context.Context, bm gopay.BodyMap) (aliRsp *FundAuthOperationCancelResponse, err error) {
233233
err = bm.CheckEmptyError("remark")
234234
if err != nil {

alipay/merchant_api.go

Lines changed: 124 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,124 @@
1+
package alipay
2+
3+
import (
4+
"context"
5+
"encoding/json"
6+
"fmt"
7+
8+
"github.com/go-pay/gopay"
9+
)
10+
11+
// alipay.trade.royalty.relation.bind(分账关系绑定)
12+
// 文档地址:https://opendocs.alipay.com/open/02c7hq
13+
func (a *Client) TradeRelationBind(ctx context.Context, bm gopay.BodyMap) (aliRsp *TradeRelationBindResponse, err error) {
14+
err = bm.CheckEmptyError("receiver_list", "out_request_no")
15+
if err != nil {
16+
return nil, err
17+
}
18+
var bs []byte
19+
if bs, err = a.doAliPay(ctx, bm, "alipay.trade.royalty.relation.bind"); err != nil {
20+
return nil, err
21+
}
22+
aliRsp = new(TradeRelationBindResponse)
23+
if err = json.Unmarshal(bs, aliRsp); err != nil || aliRsp.Response == nil {
24+
return nil, fmt.Errorf("[%w], bytes: %s", gopay.UnmarshalErr, string(bs))
25+
}
26+
if err = bizErrCheck(aliRsp.Response.ErrorResponse); err != nil {
27+
return aliRsp, err
28+
}
29+
signData, signDataErr := a.getSignData(bs, aliRsp.AlipayCertSn)
30+
aliRsp.SignData = signData
31+
return aliRsp, a.autoVerifySignByCert(aliRsp.Sign, signData, signDataErr)
32+
}
33+
34+
// alipay.trade.royalty.relation.unbind(分账关系解绑)
35+
// 文档地址:https://opendocs.alipay.com/open/02c7hr
36+
func (a *Client) TradeRelationUnbind(ctx context.Context, bm gopay.BodyMap) (aliRsp *TradeRelationUnbindResponse, err error) {
37+
err = bm.CheckEmptyError("receiver_list", "out_request_no")
38+
if err != nil {
39+
return nil, err
40+
}
41+
var bs []byte
42+
if bs, err = a.doAliPay(ctx, bm, "alipay.trade.royalty.relation.unbind"); err != nil {
43+
return nil, err
44+
}
45+
aliRsp = new(TradeRelationUnbindResponse)
46+
if err = json.Unmarshal(bs, aliRsp); err != nil || aliRsp.Response == nil {
47+
return nil, fmt.Errorf("[%w], bytes: %s", gopay.UnmarshalErr, string(bs))
48+
}
49+
if err = bizErrCheck(aliRsp.Response.ErrorResponse); err != nil {
50+
return aliRsp, err
51+
}
52+
signData, signDataErr := a.getSignData(bs, aliRsp.AlipayCertSn)
53+
aliRsp.SignData = signData
54+
return aliRsp, a.autoVerifySignByCert(aliRsp.Sign, signData, signDataErr)
55+
}
56+
57+
// alipay.trade.royalty.relation.batchquery(分账关系查询)
58+
// 文档地址:https://opendocs.alipay.com/open/02c7hs
59+
func (a *Client) TradeRelationBatchQuery(ctx context.Context, bm gopay.BodyMap) (aliRsp *TradeRelationBatchQueryResponse, err error) {
60+
err = bm.CheckEmptyError("out_request_no")
61+
if err != nil {
62+
return nil, err
63+
}
64+
var bs []byte
65+
if bs, err = a.doAliPay(ctx, bm, "alipay.trade.royalty.relation.batchquery"); err != nil {
66+
return nil, err
67+
}
68+
aliRsp = new(TradeRelationBatchQueryResponse)
69+
if err = json.Unmarshal(bs, aliRsp); err != nil || aliRsp.Response == nil {
70+
return nil, fmt.Errorf("[%w], bytes: %s", gopay.UnmarshalErr, string(bs))
71+
}
72+
if err = bizErrCheck(aliRsp.Response.ErrorResponse); err != nil {
73+
return aliRsp, err
74+
}
75+
signData, signDataErr := a.getSignData(bs, aliRsp.AlipayCertSn)
76+
aliRsp.SignData = signData
77+
return aliRsp, a.autoVerifySignByCert(aliRsp.Sign, signData, signDataErr)
78+
}
79+
80+
// alipay.trade.order.settle(统一收单交易结算接口)
81+
// 文档地址:https://opendocs.alipay.com/open/02j2bt
82+
func (a *Client) TradeOrderSettle(ctx context.Context, bm gopay.BodyMap) (aliRsp *TradeOrderSettleResponse, err error) {
83+
err = bm.CheckEmptyError("out_request_no", "trade_no", "royalty_parameters")
84+
if err != nil {
85+
return nil, err
86+
}
87+
var bs []byte
88+
if bs, err = a.doAliPay(ctx, bm, "alipay.trade.order.settle"); err != nil {
89+
return nil, err
90+
}
91+
aliRsp = new(TradeOrderSettleResponse)
92+
if err = json.Unmarshal(bs, aliRsp); err != nil || aliRsp.Response == nil {
93+
return nil, fmt.Errorf("[%w], bytes: %s", gopay.UnmarshalErr, string(bs))
94+
}
95+
if err = bizErrCheck(aliRsp.Response.ErrorResponse); err != nil {
96+
return aliRsp, err
97+
}
98+
signData, signDataErr := a.getSignData(bs, aliRsp.AlipayCertSn)
99+
aliRsp.SignData = signData
100+
return aliRsp, a.autoVerifySignByCert(aliRsp.Sign, signData, signDataErr)
101+
}
102+
103+
// alipay.trade.order.settle.query(交易分账查询接口)
104+
// 文档地址:https://opendocs.alipay.com/open/02pj6l
105+
func (a *Client) TradeOrderSettleQuery(ctx context.Context, bm gopay.BodyMap) (aliRsp *TradeOrderSettleQueryResponse, err error) {
106+
err = bm.CheckEmptyError("settle_no")
107+
if err != nil {
108+
return nil, err
109+
}
110+
var bs []byte
111+
if bs, err = a.doAliPay(ctx, bm, "alipay.trade.order.settle.query"); err != nil {
112+
return nil, err
113+
}
114+
aliRsp = new(TradeOrderSettleQueryResponse)
115+
if err = json.Unmarshal(bs, aliRsp); err != nil || aliRsp.Response == nil {
116+
return nil, fmt.Errorf("[%w], bytes: %s", gopay.UnmarshalErr, string(bs))
117+
}
118+
if err = bizErrCheck(aliRsp.Response.ErrorResponse); err != nil {
119+
return aliRsp, err
120+
}
121+
signData, signDataErr := a.getSignData(bs, aliRsp.AlipayCertSn)
122+
aliRsp.SignData = signData
123+
return aliRsp, a.autoVerifySignByCert(aliRsp.Sign, signData, signDataErr)
124+
}

alipay/model.go

Lines changed: 73 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -368,6 +368,34 @@ type TradeOrderSettle struct {
368368
TradeNo string `json:"trade_no,omitempty"`
369369
}
370370

371+
// ===================================================
372+
type TradeOrderSettleQueryResponse struct {
373+
Response *TradeOrderSettleQuery `json:"alipay_trade_order_settle_response"`
374+
AlipayCertSn string `json:"alipay_cert_sn,omitempty"`
375+
SignData string `json:"-"`
376+
Sign string `json:"sign"`
377+
}
378+
379+
type TradeOrderSettleQuery struct {
380+
ErrorResponse
381+
OutTradeNo string `json:"out_request_no"`
382+
OperationDt string `json:"operation_dt"`
383+
RoyaltyDetailList []*RoyaltyDetail `json:"royalty_detail_list"`
384+
}
385+
386+
type RoyaltyDetail struct {
387+
OperationType string `json:"operation_type"`
388+
ExecuteDt string `json:"execute_dt"`
389+
TransOut string `json:"trans_out"`
390+
TransOutType string `json:"trans_out_type"`
391+
TransIn string `json:"trans_in"`
392+
TransInType string `json:"trans_in_type"`
393+
Amount string `json:"amount"`
394+
State string `json:"state"`
395+
ErrorCode string `json:"error_code"`
396+
ErrorDesc string `json:"error_desc"`
397+
}
398+
371399
// ===================================================
372400
type TradePrecreateResponse struct {
373401
Response *TradePrecreate `json:"alipay_trade_precreate_response"`
@@ -2080,3 +2108,48 @@ type FundTransPagePay struct {
20802108
OrderID string `json:"order_id,omitempty"`
20812109
Status string `json:"status"`
20822110
}
2111+
2112+
// ===================================================
2113+
type TradeRelationBindResponse struct {
2114+
Response *TradeRelationBind `json:"alipay_trade_royalty_relation_bind_response"`
2115+
AlipayCertSn string `json:"alipay_cert_sn,omitempty"`
2116+
SignData string `json:"-"`
2117+
Sign string `json:"sign"`
2118+
}
2119+
2120+
type TradeRelationBind struct {
2121+
ErrorResponse
2122+
ResultCode string `json:"result_code"`
2123+
}
2124+
2125+
// ===================================================
2126+
type TradeRelationUnbindResponse struct {
2127+
Response *TradeRelationBind `json:"alipay_trade_royalty_relation_unbind_response"`
2128+
AlipayCertSn string `json:"alipay_cert_sn,omitempty"`
2129+
SignData string `json:"-"`
2130+
Sign string `json:"sign"`
2131+
}
2132+
2133+
// ===================================================
2134+
type TradeRelationBatchQueryResponse struct {
2135+
Response *TradeRelationBatchQuery `json:"alipay_trade_order_settle_response"`
2136+
AlipayCertSn string `json:"alipay_cert_sn,omitempty"`
2137+
SignData string `json:"-"`
2138+
Sign string `json:"sign"`
2139+
}
2140+
2141+
type TradeRelationBatchQuery struct {
2142+
ErrorResponse
2143+
ResultCode string `json:"result_code"`
2144+
ReceiverList []*Receiver `json:"receiver_list"`
2145+
TotalPageNum int `json:"total_page_num"`
2146+
TotalRecordNum int `json:"total_record_num"`
2147+
CurrentPageNum int `json:"current_page_num"`
2148+
CurrentPageSize int `json:"current_page_size"`
2149+
}
2150+
2151+
type Receiver struct {
2152+
Type string `json:"type"`
2153+
Account string `json:"account"`
2154+
Memo string `json:"memo"`
2155+
}

0 commit comments

Comments
 (0)