diff --git a/service/wechatpayapiv3/transfer.bill-receipt.go b/service/wechatpayapiv3/transfer.bill-receipt.go new file mode 100644 index 00000000..9408cc86 --- /dev/null +++ b/service/wechatpayapiv3/transfer.bill-receipt.go @@ -0,0 +1,47 @@ +package wechatpayapiv3 + +import ( + "context" + "encoding/json" + "github.com/dtapps/go-library/utils/gorequest" + "net/http" + "time" +) + +type TransferBillReceiptResponse struct { + OutBatchNo string `json:"out_batch_no"` // 商户系统内部的商家批次单号,在商户系统内部唯一。需要电子回单的批次单号 + SignatureNo string `json:"signature_no"` // 电子回单申请单号,申请单据的唯一标识 + SignatureStatus string `json:"signature_status"` // ACCEPTED:已受理,电子签章已受理成功 FINISHED:已完成。电子签章已处理完成 + HashType string `json:"hash_type"` // 电子回单文件的hash方法 + HashValue string `json:"hash_value"` // 电子回单文件的hash值,用于下载之后验证文件的完整、正确性 + DownloadUrl string `json:"download_url"` // 电子回单文件的下载地址 + CreateTime time.Time `json:"create_time"` // 电子签章单创建时间,按照使用rfc3339所定义的格式,格式为YYYY-MM-DDThh:mm:ss+TIMEZONE + UpdateTime time.Time `json:"update_time"` // 电子签章单最近一次状态变更的时间,按照使用rfc3339所定义的格式,格式为YYYY-MM-DDThh:mm:ss+TIMEZONE +} + +type TransferBillReceiptResult struct { + Result TransferBillReceiptResponse // 结果 + Body []byte // 内容 + Http gorequest.Response // 请求 + Err error // 错误 +} + +func newTransferBillReceiptResult(result TransferBillReceiptResponse, body []byte, http gorequest.Response, err error) *TransferBillReceiptResult { + return &TransferBillReceiptResult{Result: result, Body: body, Http: http, Err: err} +} + +// TransferBillReceipt 转账账单电子回单申请受理接口 +// https://pay.weixin.qq.com/docs/merchant/apis/batch-transfer-to-balance/transfer-batch/get-transfer-batch-by-no.html +func (c *Client) TransferBillReceipt(ctx context.Context, notMustParams ...gorequest.Params) *TransferBillReceiptResult { + // 参数 + params := gorequest.NewParamsWith(notMustParams...) + // 请求 + request, err := c.request(ctx, apiUrl+"/v3/transfer/bill-receipt", params, http.MethodPost, false) + if err != nil { + return newTransferBillReceiptResult(TransferBillReceiptResponse{}, request.ResponseBody, request, err) + } + // 定义 + var response TransferBillReceiptResponse + err = json.Unmarshal(request.ResponseBody, &response) + return newTransferBillReceiptResult(response, request.ResponseBody, request, err) +}