c# 微信支付V3商家转账到零钱避坑宝典(一)

一、首先开通微信支付,在微信支付商户平台,产品中心,找到商家转账到零钱

开通条件:入账方式为即时入账至商户号,结算周期为T+1的商户,需满足三个条件:1)入驻满90天,2)连续正常交易30天,3)保持正常健康交易。其余结算周期的商户无90天/30天开通限制,但仍需保持正常健康交易。

注意:连续正常交易30天,不含退款的订单。

开通后,进行设置,设置方式如下:

1.直连模式免密设置:

商户平台-产品中心-商家转账到零钱-产品设置

2.服务商模式免密设置:

①不含资金授权:服务商平台-产品中心-服务商批量转账到零钱-产品设置

②资金授权:商户平台-产品中心-商家转账到零钱-产品设置

准备工作:微信支付商户平台-->账户中心-->账户设置-->API安全-->申请API证书并设置APIv3密钥

安全证书和APIv3密钥申请:

1)申请API安全证书

2)APIv3密钥设置

二、接口说明(商家转账到零钱-文档中心-微信支付商户平台)

适用对象:直连商户

请求URL:https://api.mch.weixin.qq.com/v3/transfer/batches

请求方式:POST

接口限频: 单个商户 50QPS,如果超过频率限制,会报错FREQUENCY_LIMITED,请降低频率请求。

是否需要证书:

请求参数

参数名变量类型[长度限制]必填描述
直连商户的appidappidstring[1,32]body申请商户号的appid或商户号绑定的appid(企业号corpid即为此appid)
示例值:wxf636efh567hg4356
商家批次单号out_batch_nostring[1,32]body商户系统内部的商家批次单号,要求此参数只能由数字、大小写字母组成,在商户系统内部唯一
示例值:plfk2020042013
批次名称batch_namestring[1,32]body该笔批量转账的名称
示例值:2019年1月深圳分部报销单
批次备注batch_remarkstring[1,32]body转账说明,UTF8编码,最多允许32个字符
示例值:2019年1月深圳分部报销单
转账总金额total_amountintbody转账金额单位为“分”。转账总金额必须与批次内所有明细转账金额之和保持一致,否则无法发起转账操作
示例值:4000000
转账总笔数total_numintbody一个转账批次单最多发起三千笔转账。转账总笔数必须与批次内所有明细之和保持一致,否则无法发起转账操作
示例值:200
-转账明细列表transfer_detail_listarraybody发起批量转账的明细列表,最多三千笔
参数名变量类型[长度限制]必填描述
商家明细单号out_detail_nostring[1,32]商户系统内部区分转账批次单下不同转账明细单的唯一标识,要求此参数只能由数字、大小写字母组成
示例值:x23zy545Bd5436
转账金额transfer_amountint转账金额单位为分
示例值:200000
转账备注transfer_remarkstring[1,32]单条转账备注(微信用户会收到该备注),UTF8编码,最多允许32个字符
示例值:2020年4月报销
用户在直连商户应用下的用户标示openidstring[1,128]openid是微信用户在公众号appid下的唯一用户标识(appid不同,则获取到的openid就不同),可用于永久标记一个用户
获取openid
示例值:o-MYE42l80oelYMDE34nYD456Xoy
收款用户姓名user_namestring[2,30]1、明细转账金额 >= 2,000元,收款用户姓名必填;
2、同一批次转账明细中,收款用户姓名字段需全部填写、或全部不填写;
3、 若传入收款用户姓名,微信支付会校验用户openID与姓名是否一致,并提供电子回单;
4、收款方姓名。采用标准RSA算法,公钥由微信侧提供
5、该字段需进行加密处理,加密方法详见敏感信息加密说明。(提醒:必须在HTTP头中上送Wechatpay-Serial)
6、商户需确保收集用户的姓名信息,以及向微信支付传输用户姓名和账号标识信息做一致性校验已合法征得用户授权
示例值:757b340b45ebef5467rter35gf464344v3542sdf4t6re4tb4f54ty45t4yyry45

请求示例

  • JSON

{
  "appid": "wxf636efh567hg4356",
  "out_batch_no": "plfk2020042013",
  "batch_name": "2019年1月深圳分部报销单",
  "batch_remark": "2019年1月深圳分部报销单",
  "total_amount": 4000000,
  "total_num": 200,
  "transfer_detail_list": [
    {
      "out_detail_no": "x23zy545Bd5436",
      "transfer_amount": 200000,
      "transfer_remark": "2020年4月报销",
      "openid": "o-MYE42l80oelYMDE34nYD456Xoy",
      "user_name": "757b340b45ebef5467rter35gf464344v3542sdf4t6re4tb4f54ty45t4yyry45"
    }
  ]
}

!!!特别注意!!!参数名字一定要检查,确保无误,要不一定会报错

SortedDictionary  dic = new SortedDictionary();
dic.Add("appid", appid);
dic.Add("out_batch_no", partnerTradeNo);
dic.Add("batch_name",DateTime.Now.ToString("D")+"提现记录");
dic.Add("batch_remark", DateTime.Now.ToString("D") + "提现记录");
dic.Add("total_amount",totalFee);
dic.Add("total_num", 1);
Log.Info("开始申请商户转账到零钱,参数1", Newtonsoft.Json.JsonConvert.SerializeObject(dic));
List list = new List();
SortedDictionary dic1 = new SortedDictionary();
dic1.Add("out_detail_no", partnerTradeNo);
dic1.Add("transfer_amount",totalFee);
dic1.Add("transfer_remark", "提现记录"); 
dic1.Add("openid", openID);
list.Add(dic1);
dic.Add("transfer_detail_list",list);
Log.Info("开始申请商户转账到零钱,参数2", Newtonsoft.Json.JsonConvert.SerializeObject(dic));

返回参数

参数名变量类型[长度限制]必填描述
商家批次单号out_batch_nostring[1,32]商户系统内部的商家批次单号
示例值:plfk2020042013
微信批次单号batch_idstring[1,64]微信批次单号,微信商家转账系统返回的唯一标识
示例值:1030000071100999991182020050700019480001
批次创建时间create_timestring[1,32]批次受理成功时返回,遵循rfc3339标准格式,格式为yyyy-MM-DDTHH:mm:ss.sss+TIMEZONE,yyyy-MM-DD表示年月日,T出现在字符串中,表示time元素的开头,HH:mm:ss.sss表示时分秒毫秒,TIMEZONE表示时区(+08:00表示东八区时间,领先UTC 8小时,即北京时间)。例如:2015-05-20T13:29:35.120+08:00表示北京时间2015年05月20日13点29分35秒
示例值:2015-05-20T13:29:35.120+08:00

返回示例

  • 正常示例

{
  "out_batch_no": "plfk2020042013",
  "batch_id": "1030000071100999991182020050700019480001",
  "create_time": "2015-05-20T13:29:35.120+08:00"
}
                    

后续将更新代码片段以及代码解读

  • 2
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

ZQC-JXT

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值