67 lines
2.2 KiB
Go
67 lines
2.2 KiB
Go
package wechat
|
||
|
||
import (
|
||
"context"
|
||
"encoding/xml"
|
||
"fmt"
|
||
|
||
"github.com/go-pay/gopay"
|
||
)
|
||
|
||
// 订单附加信息提交(正式环境)
|
||
// 文档地址:https://pay.weixin.qq.com/wiki/doc/api/external/declarecustom.php?chapter=18_1
|
||
func (w *Client) CustomsDeclareOrder(ctx context.Context, bm gopay.BodyMap) (wxRsp *CustomsDeclareOrderResponse, err error) {
|
||
err = bm.CheckEmptyError("out_trade_no", "transaction_id", "customs", "mch_customs_no")
|
||
if err != nil {
|
||
return nil, err
|
||
}
|
||
bm.Set("sign_type", SignType_MD5)
|
||
bs, err := w.doProdPost(ctx, bm, customsDeclareOrder, nil)
|
||
if err != nil {
|
||
return nil, err
|
||
}
|
||
wxRsp = new(CustomsDeclareOrderResponse)
|
||
if err = xml.Unmarshal(bs, wxRsp); err != nil {
|
||
return nil, fmt.Errorf("[%w]: %v, bytes: %s", gopay.UnmarshalErr, err, string(bs))
|
||
}
|
||
return wxRsp, nil
|
||
}
|
||
|
||
// 订单附加信息查询(正式环境)
|
||
// 文档地址:https://pay.weixin.qq.com/wiki/doc/api/external/declarecustom.php?chapter=18_2
|
||
func (w *Client) CustomsDeclareQuery(ctx context.Context, bm gopay.BodyMap) (wxRsp *CustomsDeclareQueryResponse, err error) {
|
||
err = bm.CheckEmptyError("customs")
|
||
if err != nil {
|
||
return nil, err
|
||
}
|
||
bm.Set("sign_type", SignType_MD5)
|
||
bs, err := w.doProdPost(ctx, bm, customsDeclareQuery, nil)
|
||
if err != nil {
|
||
return nil, err
|
||
}
|
||
wxRsp = new(CustomsDeclareQueryResponse)
|
||
if err = xml.Unmarshal(bs, wxRsp); err != nil {
|
||
return nil, fmt.Errorf("[%w]: %v, bytes: %s", gopay.UnmarshalErr, err, string(bs))
|
||
}
|
||
return wxRsp, nil
|
||
}
|
||
|
||
// 订单附加信息重推(正式环境)
|
||
// 文档地址:https://pay.weixin.qq.com/wiki/doc/api/external/declarecustom.php?chapter=18_4&index=3
|
||
func (w *Client) CustomsReDeclareOrder(ctx context.Context, bm gopay.BodyMap) (wxRsp *CustomsReDeclareOrderResponse, err error) {
|
||
err = bm.CheckEmptyError("customs", "mch_customs_no")
|
||
if err != nil {
|
||
return nil, err
|
||
}
|
||
bm.Set("sign_type", SignType_MD5)
|
||
bs, err := w.doProdPost(ctx, bm, customsReDeclareOrder, nil)
|
||
if err != nil {
|
||
return nil, err
|
||
}
|
||
wxRsp = new(CustomsReDeclareOrderResponse)
|
||
if err = xml.Unmarshal(bs, wxRsp); err != nil {
|
||
return nil, fmt.Errorf("[%w]: %v, bytes: %s", gopay.UnmarshalErr, err, string(bs))
|
||
}
|
||
return wxRsp, nil
|
||
}
|