微信支付开发之平台给用户转账到零钱的功能
请求消息中应包含商家批次单号、转账名称、appid、转账总金额、转账总笔数、转账openid、收款用户姓名等信息。批次已受理成功,若发起批量转账的30分钟后,转账批次单仍处于该状态,可能原因是商户账户余额不足等。【转账场景ID】 该批次转账使用的转账场景,如不填写则使用商家的默认场景,如无默认场景可为空,可前往“商家转账到零钱-前往功能”中申请。【转账总笔数】 一个转账批次单最多发起一千笔转账。【
关于微信商家给用户转账到零钱
发起商家转账接口。这种需求在电商系统里,运营平台里很常见的。例如用户完成平台的活动,平台给用户奖励,发红包奖励,达成任务等等。
商户可以通过该接口同时向多个用户微信零钱进行转账操作。请求消息中应包含商家批次单号、转账名称、appid、转账总金额、转账总笔数、转账openid、收款用户姓名等信息。注意受理成功将返回批次单号,此时并不代表转账成功,请通过查单接口查询单据的付款状态。
转账接口说明
支持商户:
【普通商户】
请求方式:
【POST】/v3/transfer/batches
请求域名:
【主域名】
https://api.mch.weixin.qq.com
使用该域名将访问就近的接入点
【备域名】
https://api2.mch.weixin.qq.com
使用该域名将访问异地的接入点。
请求参数
Header HTTP头参数
Authorization 必填 string
Accept 必填 string 请设置为 application/json
Content-Type 必填 string 请设置为 application/json
Wechatpay-Serial 必填 string(【微信支付平台证书序列号】 请求参数中的敏感字段,需要使用微信支付平台证书公钥加密。请设置为该证书的证书序列号。详见敏感信息加解密)。
Body 包体参数
appid 必填 string(32)
【商户appid】 申请商户号的appid或商户号绑定的appid(企业号corpid即为此appid)
out_batch_no 必填 string(32)
【商家批次单号】 商户系统内部的商家批次单号,要求此参数只能由数字、大小写字母组成,在商户系统内部唯一
batch_name 必填 string(32)
【批次名称】 该笔批量转账的名称
batch_remark 必填 string(32)
【批次备注】 转账说明,UTF8编码,最多允许32个字符
total_amount 必填 integer
【转账总金额】 转账金额单位为“分”。转账总金额必须与批次内所有明细转账金额之和保持一致,否则无法发起转账操作
total_num 必填 integer
【转账总笔数】 一个转账批次单最多发起一千笔转账。转账总笔数必须与批次内所有明细之和保持一致,否则无法发起转账操作
transfer_detail_list 必填 array[TransferDetailInput]
【转账明细列表】 发起批量转账的明细列表,最多一千笔
transfer_scene_id 选填 string(36)
【转账场景ID】 该批次转账使用的转账场景,如不填写则使用商家的默认场景,如无默认场景可为空,可前往“商家转账到零钱-前往功能”中申请。
如:1001-现金营销
notify_url 选填 string(256)
【通知地址】 异步接收微信支付结果通知的回调地址,通知url必须为公网可访问的url,必须为https,不能携带参数。
请求实例(POST)
package com.wechat.pay.java.service.transferbatch;
import com.wechat.pay.java.core.Config;
import com.wechat.pay.java.core.RSAAutoCertificateConfig;
import com.wechat.pay.java.service.transferbatch.model.InitiateBatchTransferRequest;
import com.wechat.pay.java.service.transferbatch.model.InitiateBatchTransferResponse;
import com.wechat.pay.java.service.transferbatch.model.TransferDetailInput;
import java.util.ArrayList;
import java.util.List;
public class InitiateBatchTransfer { /** 商户号 */
public static String merchantId = "190000****"; /** 商户API私钥路径 */
public static String privateKeyPath =
"/Users/yourname/your/path/apiclient_key.pem"; /** 商户证书序列号 */
public static String merchantSerialNumber =
"5157F09EFDC096DE15EBE81A47057A72********"; /** 商户APIV3密钥 */
public static String apiV3Key = "...";
public static TransferBatchService service;
public static void main(String[] args) {
Config config = new RSAAutoCertificateConfig.Builder()
.merchantId(merchantId)
.privateKeyFromPath(privateKeyPath)
.merchantSerialNumber(merchantSerialNumber)
.apiV3Key(apiV3Key)
.build();
service = new TransferBatchService.Builder().config(config).build();
InitiateBatchTransferRequest initiateBatchTransferRequest =
new InitiateBatchTransferRequest();
initiateBatchTransferRequest.setAppid("wxf636efh567hg4356");
initiateBatchTransferRequest.setOutBatchNo("plfk2020042013");
initiateBatchTransferRequest.setBatchName("2019年1月深圳分部报销单");
initiateBatchTransferRequest.setBatchRemark("2019年1月深圳分部报销单");
initiateBatchTransferRequest.setTotalAmount(4000000L);
initiateBatchTransferRequest.setTotalNum(200);
{
List<TransferDetailInput> transferDetailListList = new ArrayList<>();
{
TransferDetailInput transferDetailInput = new TransferDetailInput();
transferDetailInput.setOutDetailNo("x23zy545Bd5436");
transferDetailInput.setTransferAmount(200000L);
transferDetailInput.setTransferRemark("2020年4月报销");
transferDetailInput.setOpenid("o-MYE42l80oelYMDE34nYD456Xoy");
transferDetailInput.setUserName(
"757b340b45ebef5467rter35gf464344v3542sdf4t6re4tb4f54ty45t4yyry45");
transferDetailListList.add(transferDetailInput);
}
initiateBatchTransferRequest.setTransferDetailList(
transferDetailListList);
}
initiateBatchTransferRequest.setTransferSceneId("1000");
initiateBatchTransferRequest.setNotifyUrl(
"https://www.weixin.qq.com/wxpay/pay.php");
InitiateBatchTransferResponse response =
service.initiateBatchTransfer(initiateBatchTransferRequest);
}
}
应答参数
200 OK
out_batch_no 必填 string(32)
【商家批次单号】 商户系统内部的商家批次单号,在商户系统内部唯一
batch_id 必填 string(64)
【微信批次单号】 微信批次单号,微信商家转账系统返回的唯一标识
create_time 必填 string(32)
【批次创建时间】 批次受理成功时返回,按照使用rfc3339所定义的格式,格式为YYYY-MM-DDThh:mm:ss+TIMEZONE
batch_status 选填 string
【批次状态】 ACCEPTED:已受理。批次已受理成功,若发起批量转账的30分钟后,转账批次单仍处于该状态,可能原因是商户账户余额不足等。商户可查询账户资金流水,若该笔转账批次单的扣款已经发生,则表示批次已经进入转账中,请再次查单确认
PROCESSING:转账中。已开始处理批次内的转账明细单
FINISHED:已完成。批次内的所有转账明细单都已处理完成
CLOSED:已关闭。可查询具体的批次关闭原因确认
应答实例(200 OK)
{
"out_batch_no" : "plfk2020042013",
"batch_id" : "1030000071100999991182020050700019480001",
"create_time" : "2015-05-20T13:29:35.120+08:00",
"batch_status" : "ACCEPTED"
}
转账零钱错误码
公共错误码
业务错误码
开放原子开发者工作坊旨在鼓励更多人参与开源活动,与志同道合的开发者们相互交流开发经验、分享开发心得、获取前沿技术趋势。工作坊有多种形式的开发者活动,如meetup、训练营等,主打技术交流,干货满满,真诚地邀请各位开发者共同参与!
更多推荐
所有评论(0)