package wechatpayapiv3 import ( "context" "github.com/dtapps/go-library/utils/gojson" "github.com/dtapps/go-library/utils/gorequest" "net/http" ) type TransferDetailElectronicReceiptsPostResponse struct { AcceptType string `json:"accept_type"` // 电子回单受理类型:BATCH_TRANSFER:批量转账明细电子回单 TRANSFER_TO_POCKET:企业付款至零钱电子回单 TRANSFER_TO_BANK:企业付款至银行卡电子回单 OutBatchNo string `json:"out_batch_no"` // 需要电子回单的批量转账明细单所在的转账批次的单号,该单号为商户申请转账时生成的商户单号。受理类型为BATCH_TRANSFER时该单号必填,否则该单号留空。 OutDetailNo string `json:"out_detail_no"` // 该单号为商户申请转账时生成的商家转账明细单号。 1.受理类型为BATCH_TRANSFER时填写商家批量转账明细单号。2. 受理类型为TRANSFER_TO_POCKET或TRANSFER_TO_BANK时填写商家转账单号。 SignatureNo string `json:"signature_no"` // 电子回单受理单号,受理单据的唯一标识 SignatureStatus string `json:"signature_status"` // 枚举值: ACCEPTED:已受理,电子签章已受理成功 FINISHED:已完成。电子签章已处理完成 HashType string `json:"hash_type"` // 电子回单文件的hash方法,回单状态为:FINISHED时返回 HashValue string `json:"hash_value"` // 电子回单文件的hash值,用于下载之后验证文件的完整、正确性,回单状态为:FINISHED时返回 DownloadUrl string `json:"download_url"` // 电子回单文件的下载地址,回单状态为:FINISHED时返回。URL有效时长为10分钟,10分钟后需要重新去获取下载地址(但不需要走受理) } type TransferDetailElectronicReceiptsPostResult struct { Result TransferDetailElectronicReceiptsPostResponse // 结果 Body []byte // 内容 Http gorequest.Response // 请求 Err error // 错误 } func newTransferDetailElectronicReceiptsPostResult(result TransferDetailElectronicReceiptsPostResponse, body []byte, http gorequest.Response, err error) *TransferDetailElectronicReceiptsPostResult { return &TransferDetailElectronicReceiptsPostResult{Result: result, Body: body, Http: http, Err: err} } // TransferDetailElectronicReceiptsPost 受理转账明细电子回单API // https://pay.weixin.qq.com/docs/merchant/apis/batch-transfer-to-balance/electronic-receipt-api/create-electronic-receipt.html func (c *Client) TransferDetailElectronicReceiptsPost(ctx context.Context, notMustParams ...gorequest.Params) *TransferDetailElectronicReceiptsPostResult { // 参数 params := gorequest.NewParamsWith(notMustParams...) // 请求 request, err := c.request(ctx, apiUrl+"/v3/transfer-detail/electronic-receipts", params, http.MethodPost, false) if err != nil { return newTransferDetailElectronicReceiptsPostResult(TransferDetailElectronicReceiptsPostResponse{}, request.ResponseBody, request, err) } // 定义 var response TransferDetailElectronicReceiptsPostResponse err = gojson.Unmarshal(request.ResponseBody, &response) return newTransferDetailElectronicReceiptsPostResult(response, request.ResponseBody, request, err) }