1 Star 0 Fork 0

eden-w2w / wechatpay-go

加入 Gitee
与超过 1200万 开发者一起发现、参与优秀开源项目,私有仓库也完全免费 :)
免费加入
克隆/下载
api_transfer_batch.go 11.22 KB
一键复制 编辑 原始数据 按行查看 历史
文兄 提交于 2022-01-07 17:45 . change mod name
// Copyright 2021 Tencent Inc. All rights reserved.
//
// 商家转账对外API
//
// - 场景及业务流程: 商户可通过该产品实现同时向多个用户微信零钱进行转账的操作,可用于发放奖金补贴、佣金货款结算、员工报销等场景。 [https://pay.weixin.qq.com/index.php/public/product/detail?pid=108&productType=0](https://pay.weixin.qq.com/index.php/public/product/detail?pid=108&productType=0) - 接入步骤: - 商户在微信支付商户平台开通“批量转账到零钱”产品权限,并勾选“使用API方式发起转账”。 - 调用批量转账接口,对多个用户微信零钱发起转账。 - 调用查询批次接口,可获取到转账批次详情及当前状态。 - 调用查询明细接口,可获取到单条转账明细详情及当前状态。
//
// API version: 1.0.0
// Code generated by WechatPay APIv3 Generator based on [OpenAPI Generator](https://openapi-generator.tech); DO NOT EDIT.
package transferbatch
import (
"context"
"fmt"
nethttp "net/http"
neturl "net/url"
"strings"
"gitee.com/eden-w2w/wechatpay-go/core"
"gitee.com/eden-w2w/wechatpay-go/core/consts"
"gitee.com/eden-w2w/wechatpay-go/services"
)
type TransferBatchApiService services.Service
// GetTransferBatchByNo 通过微信批次单号查询批次单
//
// ## 查询接口说明
// 微信批次单号查单接口。商户可以通过该接口查询转账批次单以及指定状态的转账明细单。返回消息中包含微信批次单号、批次状态、批次类型、转账总金额、转账总笔数、成功金额、失败金额等信息。
//
// 接口限频:
// 单个商户(查询转账批次单)50QPS,如果超过频率限制,会报错FREQUENCY_LIMITED,请降低频率请求。
//
// 注意事项:
// - API只支持查询最近30天内的转账批次单,30天之前的转账批次单请登录商户平台查询。
// - 转账明细单只会在批次单完成的情况下返回,如果需要在批次处理过程中查询转账明细单,请通过转账明细单查询接口来查询。
// - 转账批次单中涉及金额的字段单位为“分”。
// - 如果查询单号对应的数据不存在,那么数据不存在的原因可能是:(1)批次还在受理中;(2)批次受理失败导致转账批次单没有落地。在上述情况下,商户首先需要检查该微信批次单号是否确实是自己发起的,如果商户确认是自己发起的,则请商户不要直接当做受理失败处理,请商户隔几分钟再尝试查询(请勿转账和查询并发处理),或者商户可以通过相同的商家批次单号再次发起转账。如果商户误把还在受理中的批次单直接当受理失败处理,商户应当自行承担因此产生的所有损失和责任。
func (a *TransferBatchApiService) GetTransferBatchByNo(ctx context.Context, req GetTransferBatchByNoRequest) (resp *TransferBatchEntity, result *core.APIResult, err error) {
var (
localVarHTTPMethod = nethttp.MethodGet
localVarPostBody interface{}
localVarQueryParams neturl.Values
localVarHeaderParams = nethttp.Header{}
)
// Make sure Path Params are properly set
if req.BatchId == nil {
return nil, nil, fmt.Errorf("field `BatchId` is required and must be specified in GetTransferBatchByNoRequest")
}
localVarPath := consts.WechatPayAPIServer + "/v3/transfer/batches/batch-id/{batch_id}"
// Build Path with Path Params
localVarPath = strings.Replace(localVarPath, "{"+"batch_id"+"}", neturl.PathEscape(core.ParameterToString(*req.BatchId, "")), -1)
// Make sure All Required Params are properly set
if req.NeedQueryDetail == nil {
return nil, nil, fmt.Errorf("field `NeedQueryDetail` is required and must be specified in GetTransferBatchByNoRequest")
}
// Setup Query Params
localVarQueryParams = neturl.Values{}
localVarQueryParams.Add("need_query_detail", core.ParameterToString(*req.NeedQueryDetail, ""))
if req.Offset != nil {
localVarQueryParams.Add("offset", core.ParameterToString(*req.Offset, ""))
}
if req.Limit != nil {
localVarQueryParams.Add("limit", core.ParameterToString(*req.Limit, ""))
}
if req.DetailStatus != nil {
localVarQueryParams.Add("detail_status", core.ParameterToString(*req.DetailStatus, ""))
}
// Determine the Content-Type Header
localVarHTTPContentTypes := []string{}
// Setup Content-Type
localVarHTTPContentType := core.SelectHeaderContentType(localVarHTTPContentTypes)
// Perform Http Request
result, err = a.Client.Request(ctx, localVarHTTPMethod, localVarPath, localVarHeaderParams, localVarQueryParams, localVarPostBody, localVarHTTPContentType)
if err != nil {
return nil, result, err
}
// Extract TransferBatchEntity from Http Response
resp = new(TransferBatchEntity)
err = core.UnMarshalResponse(result.Response, resp)
if err != nil {
return nil, result, err
}
return resp, result, nil
}
// GetTransferBatchByOutNo 通过商家批次单号查询批次单
//
// ## 查询接口说明
// 商家明细单号查单接口。商户可以通过该接口查询转账批次单以及指定状态的转账明细单。返回消息中包含微信批次单号、批次状态、批次类型、转账总金额、转账总笔数、成功金额、失败金额等信息。
//
// 接口限频:
// 单个商户(查询转账批次单)50QPS,如果超过频率限制,会报错FREQUENCY_LIMITED,请降低频率请求。
//
// 注意事项:
// - API只支持查询最近30天内的转账批次单,30天之前的转账批次单请登录商户平台查询。
// - 转账明细单只会在批次单完成的情况下返回,如果需要在批次处理过程中查询转账明细单,请通过转账明细单查询接口来查询。
// - 转账批次单中涉及金额的字段单位为“分”。
// - 如果查询单号对应的数据不存在,那么数据不存在的原因可能是:(1)批次还在受理中;(2)批次受理失败导致转账批次单没有落地。在上述情况下,商户首先需要检查该商家批次单号是否确实是自己发起的,如果商户确认是自己发起的,则请商户不要直接当做受理失败处理,请商户隔几分钟再尝试查询(请勿转账和查询并发处理),或者商户可以通过相同的商家批次单号再次发起转账。如果商户误把还在受理中的批次单直接当受理失败处理,商户应当自行承担因此产生的所有损失和责任。
func (a *TransferBatchApiService) GetTransferBatchByOutNo(ctx context.Context, req GetTransferBatchByOutNoRequest) (resp *TransferBatchEntity, result *core.APIResult, err error) {
var (
localVarHTTPMethod = nethttp.MethodGet
localVarPostBody interface{}
localVarQueryParams neturl.Values
localVarHeaderParams = nethttp.Header{}
)
// Make sure Path Params are properly set
if req.OutBatchNo == nil {
return nil, nil, fmt.Errorf("field `OutBatchNo` is required and must be specified in GetTransferBatchByOutNoRequest")
}
localVarPath := consts.WechatPayAPIServer + "/v3/transfer/batches/out-batch-no/{out_batch_no}"
// Build Path with Path Params
localVarPath = strings.Replace(localVarPath, "{"+"out_batch_no"+"}", neturl.PathEscape(core.ParameterToString(*req.OutBatchNo, "")), -1)
// Make sure All Required Params are properly set
if req.NeedQueryDetail == nil {
return nil, nil, fmt.Errorf("field `NeedQueryDetail` is required and must be specified in GetTransferBatchByOutNoRequest")
}
// Setup Query Params
localVarQueryParams = neturl.Values{}
localVarQueryParams.Add("need_query_detail", core.ParameterToString(*req.NeedQueryDetail, ""))
if req.Offset != nil {
localVarQueryParams.Add("offset", core.ParameterToString(*req.Offset, ""))
}
if req.Limit != nil {
localVarQueryParams.Add("limit", core.ParameterToString(*req.Limit, ""))
}
if req.DetailStatus != nil {
localVarQueryParams.Add("detail_status", core.ParameterToString(*req.DetailStatus, ""))
}
// Determine the Content-Type Header
localVarHTTPContentTypes := []string{}
// Setup Content-Type
localVarHTTPContentType := core.SelectHeaderContentType(localVarHTTPContentTypes)
// Perform Http Request
result, err = a.Client.Request(ctx, localVarHTTPMethod, localVarPath, localVarHeaderParams, localVarQueryParams, localVarPostBody, localVarHTTPContentType)
if err != nil {
return nil, result, err
}
// Extract TransferBatchEntity from Http Response
resp = new(TransferBatchEntity)
err = core.UnMarshalResponse(result.Response, resp)
if err != nil {
return nil, result, err
}
return resp, result, nil
}
// InitiateBatchTransfer 发起批量转账
//
// ## 发起转账接口说明
// 发起批量转账接口。商户可以通过该接口同时向多个用户微信零钱进行转账操作。请求消息中应包含商家批次单号、转账名称、appid、转账总金额、转账总笔数、转账openid、收款用户姓名等信息。
//
// 接口限频:
// 单个商户(发起批量转账)50QPS,如果超过频率限制,会报错FREQUENCY_LIMITED,请降低频率请求。
//
// 注意事项:
// - 批量转账一旦发起后,不允许撤销,批次受理成功后开始执行转账。
// - 转账批次单中涉及金额的字段单位为“分”。
// - 当返回错误码为“SYSTEM_ERROR”时,请不要更换商家批次单号,一定要使用原商家批次单号重试,否则可能造成重复转账等资金风险。
// - 微信支付视任何不同“商家批次单号(out_batch_no)”的请求为一个全新的批次。在未查询到明确的转账批次单处理结果之前,请勿修改商家批次单号重新提交!如有发生,商户应当自行承担因此产生的所有损失和责任。
// - 请商户在自身的系统中合理设置转账频次并做好并发控制,防范错付风险。
// - 因商户自身系统设置存在问题导致的资金损失,由商户自行承担。
func (a *TransferBatchApiService) InitiateBatchTransfer(ctx context.Context, req InitiateBatchTransferRequest) (resp *InitiateBatchTransferResponse, result *core.APIResult, err error) {
var (
localVarHTTPMethod = nethttp.MethodPost
localVarPostBody interface{}
localVarQueryParams neturl.Values
localVarHeaderParams = nethttp.Header{}
)
// 对请求中敏感字段进行加密
encReq := req.Clone()
encryptCertificate, err := a.Client.EncryptRequest(ctx, encReq)
if err != nil {
return nil, nil, fmt.Errorf("encrypt request failed: %v", err)
}
if encryptCertificate != "" {
localVarHeaderParams.Set(consts.WechatPaySerial, encryptCertificate)
}
req = *encReq
localVarPath := consts.WechatPayAPIServer + "/v3/transfer/batches"
// Make sure All Required Params are properly set
// Setup Body Params
localVarPostBody = req
// Determine the Content-Type Header
localVarHTTPContentTypes := []string{"application/json"}
// Setup Content-Type
localVarHTTPContentType := core.SelectHeaderContentType(localVarHTTPContentTypes)
// Perform Http Request
result, err = a.Client.Request(ctx, localVarHTTPMethod, localVarPath, localVarHeaderParams, localVarQueryParams, localVarPostBody, localVarHTTPContentType)
if err != nil {
return nil, result, err
}
// Extract InitiateBatchTransferResponse from Http Response
resp = new(InitiateBatchTransferResponse)
err = core.UnMarshalResponse(result.Response, resp)
if err != nil {
return nil, result, err
}
return resp, result, nil
}
1
https://gitee.com/eden-w2w/wechatpay-go.git
git@gitee.com:eden-w2w/wechatpay-go.git
eden-w2w
wechatpay-go
wechatpay-go
v0.2.12

搜索帮助