php微信支付的分账,微信支付分账,就是这么简单!
原标题:微信支付分账,就是这么简单!
产品介绍
直连商户分账主要用于商户将交易成功的资金,按照一定的周期,分账给其他方,可以是合作伙伴、员工、用户或者其他分润方。
使用场景举例
员工奖励:零售、餐饮等行业中,当销售人员销售完成后,达到可奖励的条件,可以通过分账,将销售奖励分给员工。
管理资金到账时间:在酒店行业中,利用分账功能中的“冻结/解冻“能力,当用户预订/入住酒店时,交易资金先冻结在酒店的账户中,当用户确认消费离店后,再利用“分账“功能中的”分账完结“解冻资金到酒店的账户中。这样可以避免用户退款时商户账户资金不足的情况。
分润给合作伙伴:在与他方合作的情况下,可以用“分账”功能,将交易资金分给合作伙伴,例如物流合作商。
相信不少小伙伴都推荐过一些IT培训的课程,比如你推荐成功以后,你会收到一笔佣金,其实他们也是使用了微信的分账功能。
产品特点
分账方:交易收款方,这里指直连商户本身
分账接收方:接收资金的一方,可以是商户,可以是个人
代码集成
对于分账微信提供了不少接口,比如,添加分账接收方、删除分账接收方、请求单次分账、请求多次分账、完结分账等等,具体可以去查看官网文档。
这里需要注意的是,分账接口不再是MD5加密,而是使用了HMAC-SHA256加密。上一坨伪代码:
/**
* 绑定分账账号
* @param allocation
* @param config
*/
public voidaddWx(Allocation allocation, WxPayConfig config){
try{
Stringkey = config.getApiKey;
SortedMap< String, String> packageParams = newTreeMap<>;
wxPayUtil.commonParams(packageParams,config);
packageParams.put( "sign_type",SystemConstant.SIGN_HMAC);
JSONObject receiver = newJSONObject;
receiver.put( "type",allocation.getAccountType);
receiver.put( "account",allocation.getAccount);
receiver.put( "name",allocation.getName);
receiver.put( "relation_type", RelationType.HEADQUARTER.getCode);
packageParams.put( "receiver",receiver.toJSONString);
Stringsign = PayCommonUtil.createSign(packageParams, key, SystemConstant.SIGN_HMAC);
packageParams.put( "sign", sign);
StringrequestXML = PayCommonUtil.getRequestXml(packageParams);
StringresXml = HttpUtil.postData(WxPayUrl.PROFIT_SHARING_ADD_URL, requestXML);
Mapmap = XMLUtil.doXMLParse(resXml);
StringreturnCode = ( String) map.get( "return_code");
if(SystemConstant.SUCCESS.equalsIgnoreCase(returnCode)){
StringresultCode = ( String) map.get( "result_code");
if(!SystemConstant.SUCCESS.equalsIgnoreCase(resultCode)){
StringerrCodeDes = ( String) map.get( "err_code_des");
log.error( "微信分账绑定失败:{}",errCodeDes);
thrownewRrException( "微信分账绑定失败");
}
} else{
StringreturnMsg = ( String) map.get( "return_msg");
log.error( "微信分账绑定(通信)失败:{}",returnMsg);
thrownewRrException( "微信分账绑定失败");
}
} catch(Exception e) {
e.printStackTrace;
log.error( "绑定微信支付账号异常:{}",e.getMessage);
thrownewRrException( "微信分账绑定失败");
}
}
加密方式:
/**
* HmacSHA256 加密
*/
publicclassHMACUtil{
publicstaticString HMACSHA256( String data, String key){
try{
Mac sha256_HMAC = Mac.getInstance( "HmacSHA256");
SecretKeySpec secret_key = newSecretKeySpec(key.getBytes( "UTF-8"), "HmacSHA256");
sha256_HMAC.init(secret_key);
byte[] array = sha256_HMAC.doFinal(data.getBytes( "UTF-8"));
StringBuilder sb = newStringBuilder;
for( byteitem : array) {
sb.append(Integer.toHexString((item & 0xFF) | 0x100), 1, 3);
}
returnsb.toString.toUpperCase;
} catch(Exception e) {
e.printStackTrace;
}
return"";
}
}
需要注意的是,在调用下单的逻辑中,需要新增以下逻辑:
/**
* 是否分账,并且为sign加密参数
* 业务数据请自行关联,比如分账接收方数据
* 这个在微信支付成功以后,自动或者手动调用分账会用到
*/
if(分账){
packageParams.put( "profit_sharing",SystemConstant.Y);
}
支付成功之后,调用分账接口,微信建议在支付回调成功1分钟后或30天内调用分账接口。
截图
参考
https://paycloud.vip/docs/
https://pay.weixin.qq.com/wiki/doc/api/allocation.php?chapter=26_1
牛逼,CTO点名要搞个灰度发布系统返回搜狐,查看更多
责任编辑:
php微信支付的分账,微信支付分账,就是这么简单!相关推荐
- 怎么看安装包是什么bit的_微信分付和支付分有什么区别 分付额度怎么看
阅读本文前,请您先点击上面的蓝色字体,再点击"关注",这样您就可以免费收到最新内容了.每天都有分享,完全是免费订阅,请放心关注! ...
- 微信支付分免密支付接口服务如何开通?
1.支付分免密扣款的实现流程: 用户使用完服务,商户调用支付分完结接口发起扣款,微信支付将代商户进行免密代扣. 若扣款失败,商户无需再次发起扣款申请,微信支付将按一定频次,再次发起免密代扣,直到扣款成 ...
- 微信支付分(三)--完结支付分订单
文章目录 1.介绍 2.代码 3.注意点 1.介绍 代码地址: https://github.com/xm646236438/wechat_pay_score/tree/master SpringBo ...
- 微信支付分(二)--查询支付分订单
文章目录 1.介绍 2.代码 3.注意点 1.介绍 代码地址: https://github.com/xm646236438/wechat_pay_score/tree/master SpringBo ...
- 微信支付分(四)--取消支付分订单
文章目录 1.介绍 2.代码 3.注意点 1.介绍 代码地址: https://github.com/xm646236438/wechat_pay_score/tree/master SpringBo ...
- 微信支付分计算机,微信支付分付怎么开通?微信分付可用额度从这里看
在讲微信支付分付怎么开通之前,我们先来了解下什么是微信分付,其实温馨的这个分付产品其实就相当于支付宝的花呗,这么说大家应该都明白了吧.微信的分付也是一种支付方式,先付款后还款的方式,这样大家买东西的时 ...
- 电商线上支付 -- --支付宝, 微信和账期支付等 以及 线下支付(转账,汇票,货到付款)流程梳理
线上 --支付宝 微信-账期 1,订单和钱 生成支付单 -成功 , 2,(输入密码后)生成支付流水单号(如果是账期支付)- 支付结果查询(在线支付) 3, =-调起微信支付- // 将该app注册到微 ...
- C#开发微信门户及应用(32)--微信支付接入和API封装使用
C#开发微信门户及应用(32)--微信支付接入和API封装使用 在微信的应用上,微信支付是一个比较有用的部分,但也是比较复杂的技术要点,在微商大行其道的年代,自己的商店没有增加微信支付好像也说不过去, ...
- 10 分钟了解微信分账 | 微信生态下的最优资金清分方案
一.什么是微信分账 微信分账即微信推出的交易资金再分配产品,收款后按照平台的业务规则,无需中转直接进行资金分配:主要用于服务商帮助特约商户完成订单收单后的资金分配. 微信分账的推出主要有三个方面的原因 ...
- 支付宝微信推出高速收费新服务器,高速收费迎来巨变,微信支付宝同时开启“无感支付”...
原标题:高速收费迎来巨变,微信支付宝同时开启"无感支付" 当你还在惊叹手机支付带来的改变的时候,马云.马化腾已经开始脱离手机了!这个时代变化究竟有多快? 近日,微信.支付宝同时宣布 ...
最新文章
- 斯坦福2021版图机器学习课程完结,视频、PPT全放送,大神主讲
- 用WEB技术栈开发NATIVE应用(二):WEEX 前端SDK原理详解
- Algorithm学习笔记 --- 迷宫问题
- CoreGraphics之CGContextSaveGState与UIGraphicsPushContext
- oracle ola_Ola HallengrenSQL Server维护解决方案–数据库完整性检查
- 少有人挖但仍可获得奖金的10类Web 漏洞(下)
- 35. 内容协商和转码
- 注释(/**/) 给CSS带来的麻烦
- JSP 获取Request 经常使用參数
- 树莓派 kali系统默认密码
- python 百度脑图json数据转Excel
- 简易购物车实体类的设计
- java 第六次实验_操作系统第六次实验报告——使用信号量解决哲学家进餐问题...
- SpringDataJPA -06- specification的基本使用
- 【MySQL】MyCat分库分表分片规则配置详解与实战(MySQL专栏启动)
- 计算机应用技术专业名词解释,计算机应用技术名词解释--02316(26页)-原创力文档...
- 家用智能洗地机哪个牌子好、这几款旗舰机好用又实惠
- zynq linux内核出错,Xilinx Zynq Linux内核源码编译过程
- 华为无线设备配置WIDS和WIPS
- 火山PC_sqlserver数据库的操作