diff --git a/core/consts/const.go b/core/consts/const.go index d14d0d9..1234bac 100644 --- a/core/consts/const.go +++ b/core/consts/const.go @@ -13,7 +13,7 @@ const ( // SDK 相关信息 const ( - Version = "0.2.10" // SDK 版本 + Version = "0.2.11" // SDK 版本 UserAgentFormat = "WechatPay-Go/%s (%s) GO/%s" // UserAgent中的信息 ) diff --git a/docs/transferbatch/CloseReasonType.md b/docs/transferbatch/CloseReasonType.md index 9d16301..1afa39b 100644 --- a/docs/transferbatch/CloseReasonType.md +++ b/docs/transferbatch/CloseReasonType.md @@ -1,6 +1,6 @@ # CloseReasonType -* `MERCHANT_REVOCATION` - 商户主动撤销, 商户主动撤销(页面方式) * `OVERDUE_CLOSE` - 系统超时关闭, 系统超时关闭,可能原因账户余额不足或其他错误 + MERCHANT_REVOCATION - 商户主动撤销,商户主动撤销(页面方式) OVERDUE_CLOSE - 系统超时关闭,系统超时关闭,可能原因账户余额不足或其他错误 ## 枚举 diff --git a/docs/transferbatch/FailReasonType.md b/docs/transferbatch/FailReasonType.md index b8db45d..439e3ef 100644 --- a/docs/transferbatch/FailReasonType.md +++ b/docs/transferbatch/FailReasonType.md @@ -1,6 +1,6 @@ # FailReasonType -* `ACCOUNT_FROZEN` - 账户冻结, 该用户账户被冻结 * `REAL_NAME_CHECK_FAIL` - 用户未实名, 收款人未实名认证,需要用户完成微信实名认证 * `NAME_NOT_CORRECT` - 用户姓名校验失败, 收款人姓名校验不通过,请核实信息 * `OPENID_INVALID` - Openid校验失败, Openid格式错误或者不属于商家公众账号 * `TRANSFER_QUOTA_EXCEED` - 超过用户单笔收款额度, 超过用户单笔收款额度,核实产品设置是否准确 * `DAY_RECEIVED_QUOTA_EXCEED` - 超过用户单日收款额度, 超过用户单日收款额度,核实产品设置是否准确 * `MONTH_RECEIVED_QUOTA_EXCEED` - 超过用户单月收款额度, 超过用户单月收款额度,核实产品设置是否准确 * `DAY_RECEIVED_COUNT_EXCEED` - 超过用户单日收款次数, 超过用户单日收款次数,核实产品设置是否准确 * `PRODUCT_AUTH_CHECK_FAIL` - 产品权限校验失败, 未开通该权限或权限被冻结,请核实产品权限状态 * `OVERDUE_CLOSE` - 转账关闭, 超过系统重试期,系统自动关闭 * `ID_CARD_NOT_CORRECT` - 用户身份证校验失败, 收款人身份证校验不通过,请核实信息 * `ACCOUNT_NOT_EXIST` - 用户账户不存在, 该用户账户不存在 * `TRANSFER_RISK` - 转账存在风险, 该笔转账可能存在风险,已被微信拦截 + ACCOUNT_FROZEN - 账户冻结,该用户账户被冻结 REAL_NAME_CHECK_FAIL - 用户未实名,收款人未实名认证,需要用户完成微信实名认证 NAME_NOT_CORRECT - 用户姓名校验失败,收款人姓名校验不通过,请核实信息 OPENID_INVALID - Openid校验失败,Openid格式错误或者不属于商家公众账号 TRANSFER_QUOTA_EXCEED - 超过用户单笔收款额度,超过用户单笔收款额度,核实产品设置是否准确 DAY_RECEIVED_QUOTA_EXCEED - 超过用户单日收款额度,超过用户单日收款额度,核实产品设置是否准确 MONTH_RECEIVED_QUOTA_EXCEED - 超过用户单月收款额度,超过用户单月收款额度,核实产品设置是否准确 DAY_RECEIVED_COUNT_EXCEED - 超过用户单日收款次数,超过用户单日收款次数,核实产品设置是否准确 PRODUCT_AUTH_CHECK_FAIL - 产品权限校验失败,未开通该权限或权限被冻结,请核实产品权限状态 OVERDUE_CLOSE - 转账关闭,超过系统重试期,系统自动关闭 ID_CARD_NOT_CORRECT - 用户身份证校验失败,收款人身份证校验不通过,请核实信息 ACCOUNT_NOT_EXIST - 用户账户不存在,该用户账户不存在 TRANSFER_RISK - 转账存在风险,该笔转账可能存在风险,已被微信拦截 REALNAME_ACCOUNT_RECEIVED_QUOTA_EXCEED - 用户账户收款受限,请引导用户在微信支付查看详情 ## 枚举 @@ -31,6 +31,8 @@ * `TRANSFER_RISK` (value: `"TRANSFER_RISK"`) +* `REALNAME_ACCOUNT_RECEIVED_QUOTA_EXCEED` (value: `"REALNAME_ACCOUNT_RECEIVED_QUOTA_EXCEED"`) + [\[返回类型列表\]](README.md#类型列表) [\[返回接口列表\]](README.md#接口列表) diff --git a/docs/transferbatch/GetTransferBatchByNoRequest.md b/docs/transferbatch/GetTransferBatchByNoRequest.md index ab15b42..c086f01 100644 --- a/docs/transferbatch/GetTransferBatchByNoRequest.md +++ b/docs/transferbatch/GetTransferBatchByNoRequest.md @@ -4,11 +4,11 @@ 名称 | 类型 | 描述 | 补充说明 ------------ | ------------- | ------------- | ------------- -**BatchId** | **string** | 微信批次单号,微信商家转账系统返回的唯一标识 | -**NeedQueryDetail** | **bool** | true-是;false-否,默认否。商户可选择是否查询指定状态的转账明细单,当转账批次单状态为“FINISHED”(已完成)时,才会返回满足条件的转账明细单 | -**Offset** | **int64** | 该次请求资源的起始位置。返回的明细是按照设置的明细条数进行分页展示的,一次查询可能无法返回所有明细,我们使用该参数标识查询开始位置,默认值为0 | [可选] -**Limit** | **int64** | 该次请求可返回的最大明细条数,最小20条,最大100条,不传则默认20条。不足20条按实际条数返回 | [可选] -**DetailStatus** | **string** | 查询指定状态的转账明细单 ALL:全部。需要同时查询转账成功和转账失败的明细单 SUCCESS:转账成功。只查询转账成功的明细单 FAIL:转账失败。只查询转账失败的明细单 | [可选] +**BatchId** | **string** | 微信批次单号,微信商家转账系统返回的唯一标识 | +**NeedQueryDetail** | **bool** | true-是;false-否,默认否。商户可选择是否查询指定状态的转账明细单,当转账批次单状态为“FINISHED”(已完成)时,才会返回满足条件的转账明细单 | +**Offset** | **int64** | 该次请求资源的起始位置。返回的明细是按照设置的明细条数进行分页展示的,一次查询可能无法返回所有明细,我们使用该参数标识查询开始位置,默认值为0 | [可选] +**Limit** | **int64** | 该次请求可返回的最大明细条数,最小20条,最大100条,不传则默认20条。不足20条按实际条数返回 | [可选] +**DetailStatus** | **string** | 查询指定状态的转账明细单 ALL:全部。需要同时查询转账成功和转账失败的明细单 SUCCESS:转账成功。只查询转账成功的明细单 FAIL:转账失败。只查询转账失败的明细单 | [可选] [\[返回类型列表\]](README.md#类型列表) [\[返回接口列表\]](README.md#接口列表) diff --git a/docs/transferbatch/GetTransferBatchByOutNoRequest.md b/docs/transferbatch/GetTransferBatchByOutNoRequest.md index aff5928..5dc98e9 100644 --- a/docs/transferbatch/GetTransferBatchByOutNoRequest.md +++ b/docs/transferbatch/GetTransferBatchByOutNoRequest.md @@ -4,11 +4,11 @@ 名称 | 类型 | 描述 | 补充说明 ------------ | ------------- | ------------- | ------------- -**OutBatchNo** | **string** | 商户系统内部的商家批次单号,在商户系统内部唯一 | -**NeedQueryDetail** | **bool** | true-是;false-否,默认否。商户可选择是否查询指定状态的转账明细单,当转账批次单状态为“FINISHED”(已完成)时,才会返回满足条件的转账明细单 | -**Offset** | **int64** | 该次请求资源(转账明细单)的起始位置,从0开始,默认值为0 | [可选] -**Limit** | **int64** | 该次请求可返回的最大资源(转账明细单)条数,最小20条,最大100条,不传则默认20条。不足20条按实际条数返回 | [可选] -**DetailStatus** | **string** | 查询指定状态的转账明细单 ALL:全部。需要同时查询转账成功和转账失败的明细单 SUCCESS:转账成功。只查询转账成功的明细单 FAIL:转账失败。只查询转账失败的明细单 | [可选] +**OutBatchNo** | **string** | 商户系统内部的商家批次单号,在商户系统内部唯一 | +**NeedQueryDetail** | **bool** | true-是;false-否,默认否。商户可选择是否查询指定状态的转账明细单,当转账批次单状态为“FINISHED”(已完成)时,才会返回满足条件的转账明细单 | +**Offset** | **int64** | 该次请求资源(转账明细单)的起始位置,从0开始,默认值为0 | [可选] +**Limit** | **int64** | 该次请求可返回的最大资源(转账明细单)条数,最小20条,最大100条,不传则默认20条。不足20条按实际条数返回 | [可选] +**DetailStatus** | **string** | 查询指定状态的转账明细单 ALL:全部。需要同时查询转账成功和转账失败的明细单 SUCCESS:转账成功。只查询转账成功的明细单 FAIL:转账失败。只查询转账失败的明细单 | [可选] [\[返回类型列表\]](README.md#类型列表) [\[返回接口列表\]](README.md#接口列表) diff --git a/docs/transferbatch/GetTransferDetailByNoRequest.md b/docs/transferbatch/GetTransferDetailByNoRequest.md index dedc5b0..b1ce21a 100644 --- a/docs/transferbatch/GetTransferDetailByNoRequest.md +++ b/docs/transferbatch/GetTransferDetailByNoRequest.md @@ -4,8 +4,8 @@ 名称 | 类型 | 描述 | 补充说明 ------------ | ------------- | ------------- | ------------- -**BatchId** | **string** | 微信批次单号,微信商家转账系统返回的唯一标识 | -**DetailId** | **string** | 微信支付系统内部区分转账批次单下不同转账明细单的唯一标识 | +**BatchId** | **string** | 微信批次单号,微信商家转账系统返回的唯一标识 | +**DetailId** | **string** | 微信支付系统内部区分转账批次单下不同转账明细单的唯一标识 | [\[返回类型列表\]](README.md#类型列表) [\[返回接口列表\]](README.md#接口列表) diff --git a/docs/transferbatch/GetTransferDetailByOutNoRequest.md b/docs/transferbatch/GetTransferDetailByOutNoRequest.md index 4eaa849..8c47ca2 100644 --- a/docs/transferbatch/GetTransferDetailByOutNoRequest.md +++ b/docs/transferbatch/GetTransferDetailByOutNoRequest.md @@ -4,8 +4,8 @@ 名称 | 类型 | 描述 | 补充说明 ------------ | ------------- | ------------- | ------------- -**OutDetailNo** | **string** | 商户系统内部区分转账批次单下不同转账明细单的唯一标识 | -**OutBatchNo** | **string** | 商户系统内部的商家批次单号,在商户系统内部唯一 | +**OutDetailNo** | **string** | 商户系统内部区分转账批次单下不同转账明细单的唯一标识 | +**OutBatchNo** | **string** | 商户系统内部的商家批次单号,在商户系统内部唯一 | [\[返回类型列表\]](README.md#类型列表) [\[返回接口列表\]](README.md#接口列表) diff --git a/docs/transferbatch/InitiateBatchTransferRequest.md b/docs/transferbatch/InitiateBatchTransferRequest.md index b132135..438797e 100644 --- a/docs/transferbatch/InitiateBatchTransferRequest.md +++ b/docs/transferbatch/InitiateBatchTransferRequest.md @@ -4,13 +4,13 @@ 名称 | 类型 | 描述 | 补充说明 ------------ | ------------- | ------------- | ------------- -**Appid** | **string** | 申请商户号的appid或商户号绑定的appid(企业号corpid即为此appid) | -**OutBatchNo** | **string** | 商户系统内部的商家批次单号,在商户系统内部唯一 | -**BatchName** | **string** | 该笔批量转账的名称 | -**BatchRemark** | **string** | 转账说明,UTF8编码,最多允许32个字符 | -**TotalAmount** | **int64** | 转账金额单位为“分”。转账总金额必须与批次内所有明细转账金额之和保持一致,否则无法发起转账操作 | -**TotalNum** | **int64** | 一个转账批次单最多发起三千笔转账。转账总笔数必须与批次内所有明细之和保持一致,否则无法发起转账操作 | -**TransferDetailList** | [**[]TransferDetailInput**](TransferDetailInput.md) | 发起批量转账的明细列表,最多三千笔 | [可选] +**Appid** | **string** | 申请商户号的appid或商户号绑定的appid(企业号corpid即为此appid) | +**OutBatchNo** | **string** | 商户系统内部的商家批次单号,在商户系统内部唯一 | +**BatchName** | **string** | 该笔批量转账的名称 | +**BatchRemark** | **string** | 转账说明,UTF8编码,最多允许32个字符 | +**TotalAmount** | **int64** | 转账金额单位为“分”。转账总金额必须与批次内所有明细转账金额之和保持一致,否则无法发起转账操作 | +**TotalNum** | **int64** | 一个转账批次单最多发起三千笔转账。转账总笔数必须与批次内所有明细之和保持一致,否则无法发起转账操作 | +**TransferDetailList** | [**[]TransferDetailInput**](TransferDetailInput.md) | 发起批量转账的明细列表,最多三千笔 | [可选] [\[返回类型列表\]](README.md#类型列表) [\[返回接口列表\]](README.md#接口列表) diff --git a/docs/transferbatch/InitiateBatchTransferResponse.md b/docs/transferbatch/InitiateBatchTransferResponse.md index 48bfb64..89eeb05 100644 --- a/docs/transferbatch/InitiateBatchTransferResponse.md +++ b/docs/transferbatch/InitiateBatchTransferResponse.md @@ -4,9 +4,9 @@ 名称 | 类型 | 描述 | 补充说明 ------------ | ------------- | ------------- | ------------- -**OutBatchNo** | **string** | 商户系统内部的商家批次单号,在商户系统内部唯一 | -**BatchId** | **string** | 微信批次单号,微信商家转账系统返回的唯一标识 | -**CreateTime** | **time.Time** | 批次受理成功时返回,按照使用rfc3339所定义的格式,格式为YYYY-MM-DDThh:mm:ss+TIMEZONE | +**OutBatchNo** | **string** | 商户系统内部的商家批次单号,在商户系统内部唯一 | +**BatchId** | **string** | 微信批次单号,微信商家转账系统返回的唯一标识 | +**CreateTime** | **time.Time** | 批次受理成功时返回,按照使用rfc3339所定义的格式,格式为YYYY-MM-DDThh:mm:ss+TIMEZONE | [\[返回类型列表\]](README.md#类型列表) [\[返回接口列表\]](README.md#接口列表) diff --git a/docs/transferbatch/README.md b/docs/transferbatch/README.md index f6f1cd9..2dea44c 100644 --- a/docs/transferbatch/README.md +++ b/docs/transferbatch/README.md @@ -9,11 +9,10 @@ - 调用查询批次接口,可获取到转账批次详情及当前状态。 - 调用查询明细接口,可获取到单条转账明细详情及当前状态。 - ## 总览 本 SDK 由 WechatPay APIv3 SDK 生成器生成。生成器基于 [OpenAPI Generator](https://openapi-generator.tech) 构建。 -- API 版本: 1.0.0 +- API 版本: 1.0.1 ## 接口列表 diff --git a/docs/transferbatch/TransferBatchApi.md b/docs/transferbatch/TransferBatchApi.md index 4ae2e8b..bb33273 100644 --- a/docs/transferbatch/TransferBatchApi.md +++ b/docs/transferbatch/TransferBatchApi.md @@ -232,18 +232,18 @@ func main() { resp, result, err := svc.InitiateBatchTransfer(ctx, transferbatch.InitiateBatchTransferRequest{ Appid: core.String("wxf636efh567hg4356"), - OutBatchNo: core.String("plfk2020042013"), BatchName: core.String("2019年1月深圳分部报销单"), BatchRemark: core.String("2019年1月深圳分部报销单"), + OutBatchNo: core.String("plfk2020042013"), TotalAmount: core.Int64(4000000), TotalNum: core.Int64(200), TransferDetailList: []transferbatch.TransferDetailInput{transferbatch.TransferDetailInput{ - Openid: core.String("o-MYE42l80oelYMDE34nYD456Xoy"), - OutDetailNo: core.String("x23zy545Bd5436"), TransferAmount: core.Int64(200000), + UserName: core.String("757b340b45ebef5467rter35gf464344v3542sdf4t6re4tb4f54ty45t4yyry45"), + OutDetailNo: core.String("x23zy545Bd5436"), + UserIdCard: core.String("8609cb22e1774a50a930e414cc71eca06121bcd266335cda230d24a7886a8d9f"), TransferRemark: core.String("2020年4月报销"), - UserIdCard: core.String("UserIdCard_example"), - UserName: core.String("UserName_example"), + Openid: core.String("o-MYE42l80oelYMDE34nYD456Xoy"), }}, }, ) diff --git a/docs/transferbatch/TransferBatchEntity.md b/docs/transferbatch/TransferBatchEntity.md index 6e82fc4..f50c9bb 100644 --- a/docs/transferbatch/TransferBatchEntity.md +++ b/docs/transferbatch/TransferBatchEntity.md @@ -4,8 +4,8 @@ 名称 | 类型 | 描述 | 补充说明 ------------ | ------------- | ------------- | ------------- -**TransferBatch** | [**TransferBatchGet**](TransferBatchGet.md) | 转账批次单基本信息 | -**TransferDetailList** | [**[]TransferDetailCompact**](TransferDetailCompact.md) | 当批次状态为“FINISHED”(已完成),且成功查询到转账明细单时返回。包括微信明细单号、明细状态信息 | [可选] +**TransferDetailList** | [**[]TransferDetailCompact**](TransferDetailCompact.md) | 当批次状态为“FINISHED”(已完成),且成功查询到转账明细单时返回。包括微信明细单号、明细状态信息 | +**TransferBatch** | [**TransferBatchGet**](TransferBatchGet.md) | 转账批次单基本信息 | [\[返回类型列表\]](README.md#类型列表) [\[返回接口列表\]](README.md#接口列表) diff --git a/docs/transferbatch/TransferBatchGet.md b/docs/transferbatch/TransferBatchGet.md index 1e19c85..5df0a35 100644 --- a/docs/transferbatch/TransferBatchGet.md +++ b/docs/transferbatch/TransferBatchGet.md @@ -4,23 +4,23 @@ 名称 | 类型 | 描述 | 补充说明 ------------ | ------------- | ------------- | ------------- -**Mchid** | **string** | 微信支付分配的商户号 | -**OutBatchNo** | **string** | 商户系统内部的商家批次单号,在商户系统内部唯一 | -**BatchId** | **string** | 微信批次单号,微信商家转账系统返回的唯一标识 | -**Appid** | **string** | 申请商户号的appid或商户号绑定的appid(企业号corpid即为此appid) | -**BatchStatus** | **string** | ACCEPTED:已受理。批次已受理成功,若发起批量转账的30分钟后,转账批次单仍处于该状态,可能原因是商户账户余额不足等。商户可查询账户资金流水,若该笔转账批次单的扣款已经发生,则表示批次已经进入转账中,请再次查单确认 PROCESSING:转账中。已开始处理批次内的转账明细单 FINISHED:已完成。批次内的所有转账明细单都已处理完成 CLOSED:已关闭。可查询具体的批次关闭原因确认 | -**BatchType** | **string** | API:API方式发起 WEB:页面方式发起 | -**BatchName** | **string** | 该笔批量转账的名称 | -**BatchRemark** | **string** | 转账说明,UTF8编码,最多允许32个字符 | -**CloseReason** | [**CloseReasonType**](CloseReasonType.md) | 如果批次单状态为“CLOSED”(已关闭),则有关闭原因 * `MERCHANT_REVOCATION` - 商户主动撤销 * `OVERDUE_CLOSE` - 系统超时关闭 | [可选] -**TotalAmount** | **int64** | 转账金额单位为“分” | -**TotalNum** | **int64** | 一个转账批次单最多发起三千笔转账 | -**CreateTime** | **time.Time** | 批次受理成功时返回,按照使用rfc3339所定义的格式,格式为YYYY-MM-DDThh:mm:ss+TIMEZONE | [可选] -**UpdateTime** | **time.Time** | 批次最近一次状态变更的时间,按照使用rfc3339所定义的格式,格式为YYYY-MM-DDThh:mm:ss+TIMEZONE | [可选] -**SuccessAmount** | **int64** | 转账成功的金额,单位为“分”。当批次状态为“PROCESSING”(转账中)时,转账成功金额随时可能变化 | [可选] -**SuccessNum** | **int64** | 转账成功的笔数。当批次状态为“PROCESSING”(转账中)时,转账成功笔数随时可能变化 | [可选] -**FailAmount** | **int64** | 转账失败的金额,单位为“分” | [可选] -**FailNum** | **int64** | 转账失败的笔数 | [可选] +**Mchid** | **string** | 微信支付分配的商户号 | +**OutBatchNo** | **string** | 商户系统内部的商家批次单号,在商户系统内部唯一 | +**BatchId** | **string** | 微信批次单号,微信商家转账系统返回的唯一标识 | +**Appid** | **string** | 申请商户号的appid或商户号绑定的appid(企业号corpid即为此appid) | +**BatchStatus** | **string** | ACCEPTED:已受理。批次已受理成功,若发起批量转账的30分钟后,转账批次单仍处于该状态,可能原因是商户账户余额不足等。商户可查询账户资金流水,若该笔转账批次单的扣款已经发生,则表示批次已经进入转账中,请再次查单确认 PROCESSING:转账中。已开始处理批次内的转账明细单 FINISHED:已完成。批次内的所有转账明细单都已处理完成 CLOSED:已关闭。可查询具体的批次关闭原因确认 | +**BatchType** | **string** | API:API方式发起 WEB:页面方式发起 | +**BatchName** | **string** | 该笔批量转账的名称 | +**BatchRemark** | **string** | 转账说明,UTF8编码,最多允许32个字符 | +**TotalAmount** | **int64** | 转账金额单位为“分” | +**TotalNum** | **int64** | 一个转账批次单最多发起三千笔转账 | +**CreateTime** | **time.Time** | 批次受理成功时返回,按照使用rfc3339所定义的格式,格式为YYYY-MM-DDThh:mm:ss+TIMEZONE | [可选] +**UpdateTime** | **time.Time** | 批次最近一次状态变更的时间,按照使用rfc3339所定义的格式,格式为YYYY-MM-DDThh:mm:ss+TIMEZONE | [可选] +**SuccessAmount** | **int64** | 转账成功的金额,单位为“分”。当批次状态为“PROCESSING”(转账中)时,转账成功金额随时可能变化 | [可选] +**SuccessNum** | **int64** | 转账成功的笔数。当批次状态为“PROCESSING”(转账中)时,转账成功笔数随时可能变化 | [可选] +**FailAmount** | **int64** | 转账失败的金额,单位为“分” | [可选] +**FailNum** | **int64** | 转账失败的笔数 | [可选] +**CloseReason** | [**CloseReasonType**](CloseReasonType.md) | 如果批次单状态为“CLOSED”(已关闭),则有关闭原因 | [可选] [\[返回类型列表\]](README.md#类型列表) [\[返回接口列表\]](README.md#接口列表) diff --git a/docs/transferbatch/TransferDetailCompact.md b/docs/transferbatch/TransferDetailCompact.md index f8c957f..760c453 100644 --- a/docs/transferbatch/TransferDetailCompact.md +++ b/docs/transferbatch/TransferDetailCompact.md @@ -4,9 +4,9 @@ 名称 | 类型 | 描述 | 补充说明 ------------ | ------------- | ------------- | ------------- -**DetailId** | **string** | 微信支付系统内部区分转账批次单下不同转账明细单的唯一标识 | -**OutDetailNo** | **string** | 商户系统内部区分转账批次单下不同转账明细单的唯一标识 | -**DetailStatus** | **string** | PROCESSING:转账中。正在处理中,转账结果尚未明确 SUCCESS:转账成功 FAIL:转账失败。需要确认失败原因后,再决定是否重新发起对该笔明细单的转账(并非整个转账批次单) | +**DetailId** | **string** | 微信支付系统内部区分转账批次单下不同转账明细单的唯一标识 | +**OutDetailNo** | **string** | 商户系统内部区分转账批次单下不同转账明细单的唯一标识 | +**DetailStatus** | **string** | PROCESSING:转账中。正在处理中,转账结果尚未明确 SUCCESS:转账成功 FAIL:转账失败。需要确认失败原因后,再决定是否重新发起对该笔明细单的转账(并非整个转账批次单) | [\[返回类型列表\]](README.md#类型列表) [\[返回接口列表\]](README.md#接口列表) diff --git a/docs/transferbatch/TransferDetailEntity.md b/docs/transferbatch/TransferDetailEntity.md index 7dd7bf8..310e97f 100644 --- a/docs/transferbatch/TransferDetailEntity.md +++ b/docs/transferbatch/TransferDetailEntity.md @@ -4,20 +4,20 @@ 名称 | 类型 | 描述 | 补充说明 ------------ | ------------- | ------------- | ------------- -**Mchid** | **string** | 微信支付分配的商户号 | -**OutBatchNo** | **string** | 商户系统内部的商家批次单号,在商户系统内部唯一 | -**BatchId** | **string** | 微信批次单号,微信商家转账系统返回的唯一标识 | -**Appid** | **string** | 申请商户号的appid或商户号绑定的appid(企业号corpid即为此appid) | -**OutDetailNo** | **string** | 商户系统内部区分转账批次单下不同转账明细单的唯一标识 | -**DetailId** | **string** | 微信支付系统内部区分转账批次单下不同转账明细单的唯一标识 | -**DetailStatus** | **string** | PROCESSING:转账中。正在处理中,转账结果尚未明确 SUCCESS:转账成功 FAIL:转账失败。需要确认失败原因后,再决定是否重新发起对该笔明细单的转账(并非整个转账批次单) | -**TransferAmount** | **int64** | 转账金额单位为“分” | -**TransferRemark** | **string** | 单条转账备注(微信用户会收到该备注),UTF8编码,最多允许32个字符 | -**FailReason** | [**FailReasonType**](FailReasonType.md) | 如果转账失败则有失败原因 * `ACCOUNT_FROZEN` - 账户冻结 * `REAL_NAME_CHECK_FAIL` - 用户未实名 * `NAME_NOT_CORRECT` - 用户姓名校验失败 * `OPENID_INVALID` - Openid校验失败 * `TRANSFER_QUOTA_EXCEED` - 超过用户单笔收款额度 * `DAY_RECEIVED_QUOTA_EXCEED` - 超过用户单日收款额度 * `MONTH_RECEIVED_QUOTA_EXCEED` - 超过用户单月收款额度 * `DAY_RECEIVED_COUNT_EXCEED` - 超过用户单日收款次数 * `PRODUCT_AUTH_CHECK_FAIL` - 产品权限校验失败 * `OVERDUE_CLOSE` - 转账关闭 * `ID_CARD_NOT_CORRECT` - 用户身份证校验失败 * `ACCOUNT_NOT_EXIST` - 用户账户不存在 * `TRANSFER_RISK` - 转账存在风险 | [可选] -**Openid** | **string** | 商户appid下,某用户的openid | -**UserName** | **string** | 收款方姓名。采用标准RSA算法,公钥由微信侧提供 | -**InitiateTime** | **time.Time** | 转账发起的时间,按照使用rfc3339所定义的格式,格式为YYYY-MM-DDThh:mm:ss+TIMEZONE | -**UpdateTime** | **time.Time** | 明细最后一次状态变更的时间,按照使用rfc3339所定义的格式,格式为YYYY-MM-DDThh:mm:ss+TIMEZONE | +**Mchid** | **string** | 微信支付分配的商户号 | +**OutBatchNo** | **string** | 商户系统内部的商家批次单号,在商户系统内部唯一 | +**BatchId** | **string** | 微信批次单号,微信商家转账系统返回的唯一标识 | +**Appid** | **string** | 申请商户号的appid或商户号绑定的appid(企业号corpid即为此appid) | +**OutDetailNo** | **string** | 商户系统内部区分转账批次单下不同转账明细单的唯一标识 | +**DetailId** | **string** | 微信支付系统内部区分转账批次单下不同转账明细单的唯一标识 | +**DetailStatus** | **string** | PROCESSING:转账中。正在处理中,转账结果尚未明确 SUCCESS:转账成功 FAIL:转账失败。需要确认失败原因后,再决定是否重新发起对该笔明细单的转账(并非整个转账批次单) | +**TransferAmount** | **int64** | 转账金额单位为“分” | +**TransferRemark** | **string** | 单条转账备注(微信用户会收到该备注),UTF8编码,最多允许32个字符 | +**Openid** | **string** | 商户appid下,某用户的openid | +**UserName** | **string** | 收款方姓名。采用标准RSA算法,公钥由微信侧提供 商户转账时传入了收款用户姓名、查询时会返回收款用户姓名 | [可选] +**InitiateTime** | **time.Time** | 转账发起的时间,按照使用rfc3339所定义的格式,格式为YYYY-MM-DDThh:mm:ss+TIMEZONE | +**UpdateTime** | **time.Time** | 明细最后一次状态变更的时间,按照使用rfc3339所定义的格式,格式为YYYY-MM-DDThh:mm:ss+TIMEZONE | +**FailReason** | [**FailReasonType**](FailReasonType.md) | 如果转账失败则有失败原因 | [可选] [\[返回类型列表\]](README.md#类型列表) [\[返回接口列表\]](README.md#接口列表) diff --git a/docs/transferbatch/TransferDetailInput.md b/docs/transferbatch/TransferDetailInput.md index a9a4470..a63e810 100644 --- a/docs/transferbatch/TransferDetailInput.md +++ b/docs/transferbatch/TransferDetailInput.md @@ -4,12 +4,12 @@ 名称 | 类型 | 描述 | 补充说明 ------------ | ------------- | ------------- | ------------- -**OutDetailNo** | **string** | 商户系统内部区分转账批次单下不同转账明细单的唯一标识 | -**TransferAmount** | **int64** | 转账金额单位为“分” | -**TransferRemark** | **string** | 单条转账备注(微信用户会收到该备注),UTF8编码,最多允许32个字符 | -**Openid** | **string** | 商户appid下,某用户的openid | -**UserName** | **string** | 收款方姓名。采用标准RSA算法,公钥由微信侧提供 | -**UserIdCard** | **string** | 收款方身份证号,可不用填(采用标准RSA算法,公钥由微信侧提供) | [可选] +**OutDetailNo** | **string** | 商户系统内部区分转账批次单下不同转账明细单的唯一标识 | +**TransferAmount** | **int64** | 转账金额单位为“分” | +**TransferRemark** | **string** | 单条转账备注(微信用户会收到该备注),UTF8编码,最多允许32个字符 | +**Openid** | **string** | 商户appid下,某用户的openid | +**UserName** | **string** | 收款方姓名。采用标准RSA算法,公钥由微信侧提供 明细转账金额 >= 2,000时,该笔明细必须填写收款用户姓名 同一批次转账明细中的姓名字段传入规则需保持一致,也即全部填写、或全部不填写 若商户传入收款用户姓名,微信支付会校验用户openID与姓名是否一致,并提供电子回单 | [可选] +**UserIdCard** | **string** | 收款方身份证号,可不用填(采用标准RSA算法,公钥由微信侧提供) 当填入收款方身份证号时,姓名字段必须填入。 | [可选] [\[返回类型列表\]](README.md#类型列表) [\[返回接口列表\]](README.md#接口列表) diff --git a/services/transferbatch/api_transfer_batch.go b/services/transferbatch/api_transfer_batch.go index f7eccca..c86f382 100644 --- a/services/transferbatch/api_transfer_batch.go +++ b/services/transferbatch/api_transfer_batch.go @@ -4,7 +4,7 @@ // // - 场景及业务流程: 商户可通过该产品实现同时向多个用户微信零钱进行转账的操作,可用于发放奖金补贴、佣金货款结算、员工报销等场景。 [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 +// API version: 1.0.1 // Code generated by WechatPay APIv3 Generator based on [OpenAPI Generator](https://openapi-generator.tech); DO NOT EDIT. diff --git a/services/transferbatch/api_transfer_batch_example_test.go b/services/transferbatch/api_transfer_batch_example_test.go index faa7bf5..3299a62 100644 --- a/services/transferbatch/api_transfer_batch_example_test.go +++ b/services/transferbatch/api_transfer_batch_example_test.go @@ -4,7 +4,7 @@ // // - 场景及业务流程: 商户可通过该产品实现同时向多个用户微信零钱进行转账的操作,可用于发放奖金补贴、佣金货款结算、员工报销等场景。 [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 +// API version: 1.0.1 // Code generated by WechatPay APIv3 Generator based on [OpenAPI Generator](https://openapi-generator.tech); DO NOT EDIT. @@ -133,18 +133,18 @@ func ExampleTransferBatchApiService_InitiateBatchTransfer() { resp, result, err := svc.InitiateBatchTransfer(ctx, transferbatch.InitiateBatchTransferRequest{ Appid: core.String("wxf636efh567hg4356"), - OutBatchNo: core.String("plfk2020042013"), BatchName: core.String("2019年1月深圳分部报销单"), BatchRemark: core.String("2019年1月深圳分部报销单"), + OutBatchNo: core.String("plfk2020042013"), TotalAmount: core.Int64(4000000), TotalNum: core.Int64(200), TransferDetailList: []transferbatch.TransferDetailInput{transferbatch.TransferDetailInput{ - Openid: core.String("o-MYE42l80oelYMDE34nYD456Xoy"), - OutDetailNo: core.String("x23zy545Bd5436"), TransferAmount: core.Int64(200000), + UserName: core.String("757b340b45ebef5467rter35gf464344v3542sdf4t6re4tb4f54ty45t4yyry45"), + OutDetailNo: core.String("x23zy545Bd5436"), + UserIdCard: core.String("8609cb22e1774a50a930e414cc71eca06121bcd266335cda230d24a7886a8d9f"), TransferRemark: core.String("2020年4月报销"), - UserIdCard: core.String("UserIdCard_example"), - UserName: core.String("UserName_example"), + Openid: core.String("o-MYE42l80oelYMDE34nYD456Xoy"), }}, }, ) diff --git a/services/transferbatch/api_transfer_detail.go b/services/transferbatch/api_transfer_detail.go index a0904ab..a650f5f 100644 --- a/services/transferbatch/api_transfer_detail.go +++ b/services/transferbatch/api_transfer_detail.go @@ -4,7 +4,7 @@ // // - 场景及业务流程: 商户可通过该产品实现同时向多个用户微信零钱进行转账的操作,可用于发放奖金补贴、佣金货款结算、员工报销等场景。 [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 +// API version: 1.0.1 // Code generated by WechatPay APIv3 Generator based on [OpenAPI Generator](https://openapi-generator.tech); DO NOT EDIT. diff --git a/services/transferbatch/api_transfer_detail_example_test.go b/services/transferbatch/api_transfer_detail_example_test.go index bf3f3fb..f4411c4 100644 --- a/services/transferbatch/api_transfer_detail_example_test.go +++ b/services/transferbatch/api_transfer_detail_example_test.go @@ -4,7 +4,7 @@ // // - 场景及业务流程: 商户可通过该产品实现同时向多个用户微信零钱进行转账的操作,可用于发放奖金补贴、佣金货款结算、员工报销等场景。 [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 +// API version: 1.0.1 // Code generated by WechatPay APIv3 Generator based on [OpenAPI Generator](https://openapi-generator.tech); DO NOT EDIT. diff --git a/services/transferbatch/models.go b/services/transferbatch/models.go index a11b0da..5ffae2d 100644 --- a/services/transferbatch/models.go +++ b/services/transferbatch/models.go @@ -4,7 +4,7 @@ // // - 场景及业务流程: 商户可通过该产品实现同时向多个用户微信零钱进行转账的操作,可用于发放奖金补贴、佣金货款结算、员工报销等场景。 [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 +// API version: 1.0.1 // Code generated by WechatPay APIv3 Generator based on [OpenAPI Generator](https://openapi-generator.tech); DO NOT EDIT. @@ -16,7 +16,7 @@ import ( "time" ) -// CloseReasonType * `MERCHANT_REVOCATION` - 商户主动撤销, 商户主动撤销(页面方式) * `OVERDUE_CLOSE` - 系统超时关闭, 系统超时关闭,可能原因账户余额不足或其他错误 +// CloseReasonType MERCHANT_REVOCATION - 商户主动撤销,商户主动撤销(页面方式) OVERDUE_CLOSE - 系统超时关闭,系统超时关闭,可能原因账户余额不足或其他错误 type CloseReasonType string func (e CloseReasonType) Ptr() *CloseReasonType { @@ -29,7 +29,7 @@ const ( CLOSEREASONTYPE_OVERDUE_CLOSE CloseReasonType = "OVERDUE_CLOSE" ) -// FailReasonType * `ACCOUNT_FROZEN` - 账户冻结, 该用户账户被冻结 * `REAL_NAME_CHECK_FAIL` - 用户未实名, 收款人未实名认证,需要用户完成微信实名认证 * `NAME_NOT_CORRECT` - 用户姓名校验失败, 收款人姓名校验不通过,请核实信息 * `OPENID_INVALID` - Openid校验失败, Openid格式错误或者不属于商家公众账号 * `TRANSFER_QUOTA_EXCEED` - 超过用户单笔收款额度, 超过用户单笔收款额度,核实产品设置是否准确 * `DAY_RECEIVED_QUOTA_EXCEED` - 超过用户单日收款额度, 超过用户单日收款额度,核实产品设置是否准确 * `MONTH_RECEIVED_QUOTA_EXCEED` - 超过用户单月收款额度, 超过用户单月收款额度,核实产品设置是否准确 * `DAY_RECEIVED_COUNT_EXCEED` - 超过用户单日收款次数, 超过用户单日收款次数,核实产品设置是否准确 * `PRODUCT_AUTH_CHECK_FAIL` - 产品权限校验失败, 未开通该权限或权限被冻结,请核实产品权限状态 * `OVERDUE_CLOSE` - 转账关闭, 超过系统重试期,系统自动关闭 * `ID_CARD_NOT_CORRECT` - 用户身份证校验失败, 收款人身份证校验不通过,请核实信息 * `ACCOUNT_NOT_EXIST` - 用户账户不存在, 该用户账户不存在 * `TRANSFER_RISK` - 转账存在风险, 该笔转账可能存在风险,已被微信拦截 +// FailReasonType ACCOUNT_FROZEN - 账户冻结,该用户账户被冻结 REAL_NAME_CHECK_FAIL - 用户未实名,收款人未实名认证,需要用户完成微信实名认证 NAME_NOT_CORRECT - 用户姓名校验失败,收款人姓名校验不通过,请核实信息 OPENID_INVALID - Openid校验失败,Openid格式错误或者不属于商家公众账号 TRANSFER_QUOTA_EXCEED - 超过用户单笔收款额度,超过用户单笔收款额度,核实产品设置是否准确 DAY_RECEIVED_QUOTA_EXCEED - 超过用户单日收款额度,超过用户单日收款额度,核实产品设置是否准确 MONTH_RECEIVED_QUOTA_EXCEED - 超过用户单月收款额度,超过用户单月收款额度,核实产品设置是否准确 DAY_RECEIVED_COUNT_EXCEED - 超过用户单日收款次数,超过用户单日收款次数,核实产品设置是否准确 PRODUCT_AUTH_CHECK_FAIL - 产品权限校验失败,未开通该权限或权限被冻结,请核实产品权限状态 OVERDUE_CLOSE - 转账关闭,超过系统重试期,系统自动关闭 ID_CARD_NOT_CORRECT - 用户身份证校验失败,收款人身份证校验不通过,请核实信息 ACCOUNT_NOT_EXIST - 用户账户不存在,该用户账户不存在 TRANSFER_RISK - 转账存在风险,该笔转账可能存在风险,已被微信拦截 REALNAME_ACCOUNT_RECEIVED_QUOTA_EXCEED - 用户账户收款受限,请引导用户在微信支付查看详情 type FailReasonType string func (e FailReasonType) Ptr() *FailReasonType { @@ -38,19 +38,20 @@ func (e FailReasonType) Ptr() *FailReasonType { // Enums of FailReasonType const ( - FAILREASONTYPE_ACCOUNT_FROZEN FailReasonType = "ACCOUNT_FROZEN" - FAILREASONTYPE_REAL_NAME_CHECK_FAIL FailReasonType = "REAL_NAME_CHECK_FAIL" - FAILREASONTYPE_NAME_NOT_CORRECT FailReasonType = "NAME_NOT_CORRECT" - FAILREASONTYPE_OPENID_INVALID FailReasonType = "OPENID_INVALID" - FAILREASONTYPE_TRANSFER_QUOTA_EXCEED FailReasonType = "TRANSFER_QUOTA_EXCEED" - FAILREASONTYPE_DAY_RECEIVED_QUOTA_EXCEED FailReasonType = "DAY_RECEIVED_QUOTA_EXCEED" - FAILREASONTYPE_MONTH_RECEIVED_QUOTA_EXCEED FailReasonType = "MONTH_RECEIVED_QUOTA_EXCEED" - FAILREASONTYPE_DAY_RECEIVED_COUNT_EXCEED FailReasonType = "DAY_RECEIVED_COUNT_EXCEED" - FAILREASONTYPE_PRODUCT_AUTH_CHECK_FAIL FailReasonType = "PRODUCT_AUTH_CHECK_FAIL" - FAILREASONTYPE_OVERDUE_CLOSE FailReasonType = "OVERDUE_CLOSE" - FAILREASONTYPE_ID_CARD_NOT_CORRECT FailReasonType = "ID_CARD_NOT_CORRECT" - FAILREASONTYPE_ACCOUNT_NOT_EXIST FailReasonType = "ACCOUNT_NOT_EXIST" - FAILREASONTYPE_TRANSFER_RISK FailReasonType = "TRANSFER_RISK" + FAILREASONTYPE_ACCOUNT_FROZEN FailReasonType = "ACCOUNT_FROZEN" + FAILREASONTYPE_REAL_NAME_CHECK_FAIL FailReasonType = "REAL_NAME_CHECK_FAIL" + FAILREASONTYPE_NAME_NOT_CORRECT FailReasonType = "NAME_NOT_CORRECT" + FAILREASONTYPE_OPENID_INVALID FailReasonType = "OPENID_INVALID" + FAILREASONTYPE_TRANSFER_QUOTA_EXCEED FailReasonType = "TRANSFER_QUOTA_EXCEED" + FAILREASONTYPE_DAY_RECEIVED_QUOTA_EXCEED FailReasonType = "DAY_RECEIVED_QUOTA_EXCEED" + FAILREASONTYPE_MONTH_RECEIVED_QUOTA_EXCEED FailReasonType = "MONTH_RECEIVED_QUOTA_EXCEED" + FAILREASONTYPE_DAY_RECEIVED_COUNT_EXCEED FailReasonType = "DAY_RECEIVED_COUNT_EXCEED" + FAILREASONTYPE_PRODUCT_AUTH_CHECK_FAIL FailReasonType = "PRODUCT_AUTH_CHECK_FAIL" + FAILREASONTYPE_OVERDUE_CLOSE FailReasonType = "OVERDUE_CLOSE" + FAILREASONTYPE_ID_CARD_NOT_CORRECT FailReasonType = "ID_CARD_NOT_CORRECT" + FAILREASONTYPE_ACCOUNT_NOT_EXIST FailReasonType = "ACCOUNT_NOT_EXIST" + FAILREASONTYPE_TRANSFER_RISK FailReasonType = "TRANSFER_RISK" + FAILREASONTYPE_REALNAME_ACCOUNT_RECEIVED_QUOTA_EXCEED FailReasonType = "REALNAME_ACCOUNT_RECEIVED_QUOTA_EXCEED" ) // GetTransferBatchByNoRequest @@ -598,31 +599,32 @@ func (o InitiateBatchTransferResponse) Clone() *InitiateBatchTransferResponse { // TransferBatchEntity type TransferBatchEntity struct { + // 当批次状态为“FINISHED”(已完成),且成功查询到转账明细单时返回。包括微信明细单号、明细状态信息 + TransferDetailList []TransferDetailCompact `json:"transfer_detail_list"` // 转账批次单基本信息 TransferBatch *TransferBatchGet `json:"transfer_batch"` - // 当批次状态为“FINISHED”(已完成),且成功查询到转账明细单时返回。包括微信明细单号、明细状态信息 - TransferDetailList []TransferDetailCompact `json:"transfer_detail_list,omitempty"` } func (o TransferBatchEntity) MarshalJSON() ([]byte, error) { toSerialize := map[string]interface{}{} + if o.TransferDetailList == nil { + return nil, fmt.Errorf("field `TransferDetailList` is required and must be specified in TransferBatchEntity") + } + toSerialize["transfer_detail_list"] = o.TransferDetailList + if o.TransferBatch == nil { return nil, fmt.Errorf("field `TransferBatch` is required and must be specified in TransferBatchEntity") } toSerialize["transfer_batch"] = o.TransferBatch - - if o.TransferDetailList != nil { - toSerialize["transfer_detail_list"] = o.TransferDetailList - } return json.Marshal(toSerialize) } func (o TransferBatchEntity) String() string { var ret string - ret += fmt.Sprintf("TransferBatch:%v, ", o.TransferBatch) + ret += fmt.Sprintf("TransferDetailList:%v, ", o.TransferDetailList) - ret += fmt.Sprintf("TransferDetailList:%v", o.TransferDetailList) + ret += fmt.Sprintf("TransferBatch:%v", o.TransferBatch) return fmt.Sprintf("TransferBatchEntity{%s}", ret) } @@ -630,10 +632,6 @@ func (o TransferBatchEntity) String() string { func (o TransferBatchEntity) Clone() *TransferBatchEntity { ret := TransferBatchEntity{} - if o.TransferBatch != nil { - ret.TransferBatch = o.TransferBatch.Clone() - } - if o.TransferDetailList != nil { ret.TransferDetailList = make([]TransferDetailCompact, len(o.TransferDetailList)) for i, item := range o.TransferDetailList { @@ -641,6 +639,10 @@ func (o TransferBatchEntity) Clone() *TransferBatchEntity { } } + if o.TransferBatch != nil { + ret.TransferBatch = o.TransferBatch.Clone() + } + return &ret } @@ -662,8 +664,6 @@ type TransferBatchGet struct { BatchName *string `json:"batch_name"` // 转账说明,UTF8编码,最多允许32个字符 BatchRemark *string `json:"batch_remark"` - // 如果批次单状态为“CLOSED”(已关闭),则有关闭原因 * `MERCHANT_REVOCATION` - 商户主动撤销 * `OVERDUE_CLOSE` - 系统超时关闭 - CloseReason *CloseReasonType `json:"close_reason,omitempty"` // 转账金额单位为“分” TotalAmount *int64 `json:"total_amount"` // 一个转账批次单最多发起三千笔转账 @@ -680,6 +680,8 @@ type TransferBatchGet struct { FailAmount *int64 `json:"fail_amount,omitempty"` // 转账失败的笔数 FailNum *int64 `json:"fail_num,omitempty"` + // 如果批次单状态为“CLOSED”(已关闭),则有关闭原因 + CloseReason *CloseReasonType `json:"close_reason,omitempty"` } func (o TransferBatchGet) MarshalJSON() ([]byte, error) { @@ -725,10 +727,6 @@ func (o TransferBatchGet) MarshalJSON() ([]byte, error) { } toSerialize["batch_remark"] = o.BatchRemark - if o.CloseReason != nil { - toSerialize["close_reason"] = o.CloseReason - } - if o.TotalAmount == nil { return nil, fmt.Errorf("field `TotalAmount` is required and must be specified in TransferBatchGet") } @@ -762,6 +760,10 @@ func (o TransferBatchGet) MarshalJSON() ([]byte, error) { if o.FailNum != nil { toSerialize["fail_num"] = o.FailNum } + + if o.CloseReason != nil { + toSerialize["close_reason"] = o.CloseReason + } return json.Marshal(toSerialize) } @@ -815,12 +817,6 @@ func (o TransferBatchGet) String() string { ret += fmt.Sprintf("BatchRemark:%v, ", *o.BatchRemark) } - if o.CloseReason == nil { - ret += "CloseReason:, " - } else { - ret += fmt.Sprintf("CloseReason:%v, ", *o.CloseReason) - } - if o.TotalAmount == nil { ret += "TotalAmount:, " } else { @@ -864,9 +860,15 @@ func (o TransferBatchGet) String() string { } if o.FailNum == nil { - ret += "FailNum:" + ret += "FailNum:, " + } else { + ret += fmt.Sprintf("FailNum:%v, ", *o.FailNum) + } + + if o.CloseReason == nil { + ret += "CloseReason:" } else { - ret += fmt.Sprintf("FailNum:%v", *o.FailNum) + ret += fmt.Sprintf("CloseReason:%v", *o.CloseReason) } return fmt.Sprintf("TransferBatchGet{%s}", ret) @@ -915,11 +917,6 @@ func (o TransferBatchGet) Clone() *TransferBatchGet { *ret.BatchRemark = *o.BatchRemark } - if o.CloseReason != nil { - ret.CloseReason = new(CloseReasonType) - *ret.CloseReason = *o.CloseReason - } - if o.TotalAmount != nil { ret.TotalAmount = new(int64) *ret.TotalAmount = *o.TotalAmount @@ -960,6 +957,11 @@ func (o TransferBatchGet) Clone() *TransferBatchGet { *ret.FailNum = *o.FailNum } + if o.CloseReason != nil { + ret.CloseReason = new(CloseReasonType) + *ret.CloseReason = *o.CloseReason + } + return &ret } @@ -1057,16 +1059,16 @@ type TransferDetailEntity struct { TransferAmount *int64 `json:"transfer_amount"` // 单条转账备注(微信用户会收到该备注),UTF8编码,最多允许32个字符 TransferRemark *string `json:"transfer_remark"` - // 如果转账失败则有失败原因 * `ACCOUNT_FROZEN` - 账户冻结 * `REAL_NAME_CHECK_FAIL` - 用户未实名 * `NAME_NOT_CORRECT` - 用户姓名校验失败 * `OPENID_INVALID` - Openid校验失败 * `TRANSFER_QUOTA_EXCEED` - 超过用户单笔收款额度 * `DAY_RECEIVED_QUOTA_EXCEED` - 超过用户单日收款额度 * `MONTH_RECEIVED_QUOTA_EXCEED` - 超过用户单月收款额度 * `DAY_RECEIVED_COUNT_EXCEED` - 超过用户单日收款次数 * `PRODUCT_AUTH_CHECK_FAIL` - 产品权限校验失败 * `OVERDUE_CLOSE` - 转账关闭 * `ID_CARD_NOT_CORRECT` - 用户身份证校验失败 * `ACCOUNT_NOT_EXIST` - 用户账户不存在 * `TRANSFER_RISK` - 转账存在风险 - FailReason *FailReasonType `json:"fail_reason,omitempty"` // 商户appid下,某用户的openid Openid *string `json:"openid"` - // 收款方姓名。采用标准RSA算法,公钥由微信侧提供 - UserName *string `json:"user_name" encryption:"EM_APIV3"` + // 收款方姓名。采用标准RSA算法,公钥由微信侧提供 商户转账时传入了收款用户姓名、查询时会返回收款用户姓名 + UserName *string `json:"user_name,omitempty" encryption:"EM_APIV3"` // 转账发起的时间,按照使用rfc3339所定义的格式,格式为YYYY-MM-DDThh:mm:ss+TIMEZONE InitiateTime *time.Time `json:"initiate_time"` // 明细最后一次状态变更的时间,按照使用rfc3339所定义的格式,格式为YYYY-MM-DDThh:mm:ss+TIMEZONE UpdateTime *time.Time `json:"update_time"` + // 如果转账失败则有失败原因 + FailReason *FailReasonType `json:"fail_reason,omitempty"` } func (o TransferDetailEntity) MarshalJSON() ([]byte, error) { @@ -1117,19 +1119,14 @@ func (o TransferDetailEntity) MarshalJSON() ([]byte, error) { } toSerialize["transfer_remark"] = o.TransferRemark - if o.FailReason != nil { - toSerialize["fail_reason"] = o.FailReason - } - if o.Openid == nil { return nil, fmt.Errorf("field `Openid` is required and must be specified in TransferDetailEntity") } toSerialize["openid"] = o.Openid - if o.UserName == nil { - return nil, fmt.Errorf("field `UserName` is required and must be specified in TransferDetailEntity") + if o.UserName != nil { + toSerialize["user_name"] = o.UserName } - toSerialize["user_name"] = o.UserName if o.InitiateTime == nil { return nil, fmt.Errorf("field `InitiateTime` is required and must be specified in TransferDetailEntity") @@ -1140,6 +1137,10 @@ func (o TransferDetailEntity) MarshalJSON() ([]byte, error) { return nil, fmt.Errorf("field `UpdateTime` is required and must be specified in TransferDetailEntity") } toSerialize["update_time"] = o.UpdateTime.Format(time.RFC3339) + + if o.FailReason != nil { + toSerialize["fail_reason"] = o.FailReason + } return json.Marshal(toSerialize) } @@ -1199,12 +1200,6 @@ func (o TransferDetailEntity) String() string { ret += fmt.Sprintf("TransferRemark:%v, ", *o.TransferRemark) } - if o.FailReason == nil { - ret += "FailReason:, " - } else { - ret += fmt.Sprintf("FailReason:%v, ", *o.FailReason) - } - if o.Openid == nil { ret += "Openid:, " } else { @@ -1224,9 +1219,15 @@ func (o TransferDetailEntity) String() string { } if o.UpdateTime == nil { - ret += "UpdateTime:" + ret += "UpdateTime:, " + } else { + ret += fmt.Sprintf("UpdateTime:%v, ", *o.UpdateTime) + } + + if o.FailReason == nil { + ret += "FailReason:" } else { - ret += fmt.Sprintf("UpdateTime:%v", *o.UpdateTime) + ret += fmt.Sprintf("FailReason:%v", *o.FailReason) } return fmt.Sprintf("TransferDetailEntity{%s}", ret) @@ -1280,11 +1281,6 @@ func (o TransferDetailEntity) Clone() *TransferDetailEntity { *ret.TransferRemark = *o.TransferRemark } - if o.FailReason != nil { - ret.FailReason = new(FailReasonType) - *ret.FailReason = *o.FailReason - } - if o.Openid != nil { ret.Openid = new(string) *ret.Openid = *o.Openid @@ -1305,6 +1301,11 @@ func (o TransferDetailEntity) Clone() *TransferDetailEntity { *ret.UpdateTime = *o.UpdateTime } + if o.FailReason != nil { + ret.FailReason = new(FailReasonType) + *ret.FailReason = *o.FailReason + } + return &ret } @@ -1318,9 +1319,9 @@ type TransferDetailInput struct { TransferRemark *string `json:"transfer_remark"` // 商户appid下,某用户的openid Openid *string `json:"openid"` - // 收款方姓名。采用标准RSA算法,公钥由微信侧提供 - UserName *string `json:"user_name" encryption:"EM_APIV3"` - // 收款方身份证号,可不用填(采用标准RSA算法,公钥由微信侧提供) + // 收款方姓名。采用标准RSA算法,公钥由微信侧提供 明细转账金额 >= 2,000时,该笔明细必须填写收款用户姓名 同一批次转账明细中的姓名字段传入规则需保持一致,也即全部填写、或全部不填写 若商户传入收款用户姓名,微信支付会校验用户openID与姓名是否一致,并提供电子回单 + UserName *string `json:"user_name,omitempty" encryption:"EM_APIV3"` + // 收款方身份证号,可不用填(采用标准RSA算法,公钥由微信侧提供) 当填入收款方身份证号时,姓名字段必须填入。 UserIdCard *string `json:"user_id_card,omitempty" encryption:"EM_APIV3"` } @@ -1347,10 +1348,9 @@ func (o TransferDetailInput) MarshalJSON() ([]byte, error) { } toSerialize["openid"] = o.Openid - if o.UserName == nil { - return nil, fmt.Errorf("field `UserName` is required and must be specified in TransferDetailInput") + if o.UserName != nil { + toSerialize["user_name"] = o.UserName } - toSerialize["user_name"] = o.UserName if o.UserIdCard != nil { toSerialize["user_id_card"] = o.UserIdCard