原标题:微信支付分账,就是这么简单!

产品介绍

直连商户分账主要用于商户将交易成功的资金,按照一定的周期,分账给其他方,可以是合作伙伴、员工、用户或者其他分润方。

使用场景举例

员工奖励:零售、餐饮等行业中,当销售人员销售完成后,达到可奖励的条件,可以通过分账,将销售奖励分给员工。

管理资金到账时间:在酒店行业中,利用分账功能中的“冻结/解冻“能力,当用户预订/入住酒店时,交易资金先冻结在酒店的账户中,当用户确认消费离店后,再利用“分账“功能中的”分账完结“解冻资金到酒店的账户中。这样可以避免用户退款时商户账户资金不足的情况。

分润给合作伙伴:在与他方合作的情况下,可以用“分账”功能,将交易资金分给合作伙伴,例如物流合作商。

相信不少小伙伴都推荐过一些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微信支付的分账,微信支付分账,就是这么简单!相关推荐

  1. 怎么看安装包是什么bit的_微信分付和支付分有什么区别 分付额度怎么看

    阅读本文前,请您先点击上面的蓝色字体,再点击"关注",这样您就可以免费收到最新内容了.每天都有分享,完全是免费订阅,请放心关注!                          ...

  2. 微信支付分免密支付接口服务如何开通?

    1.支付分免密扣款的实现流程: 用户使用完服务,商户调用支付分完结接口发起扣款,微信支付将代商户进行免密代扣. 若扣款失败,商户无需再次发起扣款申请,微信支付将按一定频次,再次发起免密代扣,直到扣款成 ...

  3. 微信支付分(三)--完结支付分订单

    文章目录 1.介绍 2.代码 3.注意点 1.介绍 代码地址: https://github.com/xm646236438/wechat_pay_score/tree/master SpringBo ...

  4. 微信支付分(二)--查询支付分订单

    文章目录 1.介绍 2.代码 3.注意点 1.介绍 代码地址: https://github.com/xm646236438/wechat_pay_score/tree/master SpringBo ...

  5. 微信支付分(四)--取消支付分订单

    文章目录 1.介绍 2.代码 3.注意点 1.介绍 代码地址: https://github.com/xm646236438/wechat_pay_score/tree/master SpringBo ...

  6. 微信支付分计算机,微信支付分付怎么开通?微信分付可用额度从这里看

    在讲微信支付分付怎么开通之前,我们先来了解下什么是微信分付,其实温馨的这个分付产品其实就相当于支付宝的花呗,这么说大家应该都明白了吧.微信的分付也是一种支付方式,先付款后还款的方式,这样大家买东西的时 ...

  7. 电商线上支付 -- --支付宝, 微信和账期支付等 以及 线下支付(转账,汇票,货到付款)流程梳理

    线上 --支付宝 微信-账期 1,订单和钱 生成支付单 -成功 , 2,(输入密码后)生成支付流水单号(如果是账期支付)- 支付结果查询(在线支付) 3, =-调起微信支付- // 将该app注册到微 ...

  8. C#开发微信门户及应用(32)--微信支付接入和API封装使用

    C#开发微信门户及应用(32)--微信支付接入和API封装使用 在微信的应用上,微信支付是一个比较有用的部分,但也是比较复杂的技术要点,在微商大行其道的年代,自己的商店没有增加微信支付好像也说不过去, ...

  9. 10 分钟了解微信分账 | 微信生态下的最优资金清分方案

    一.什么是微信分账 微信分账即微信推出的交易资金再分配产品,收款后按照平台的业务规则,无需中转直接进行资金分配:主要用于服务商帮助特约商户完成订单收单后的资金分配. 微信分账的推出主要有三个方面的原因 ...

  10. 支付宝微信推出高速收费新服务器,高速收费迎来巨变,微信支付宝同时开启“无感支付”...

    原标题:高速收费迎来巨变,微信支付宝同时开启"无感支付" 当你还在惊叹手机支付带来的改变的时候,马云.马化腾已经开始脱离手机了!这个时代变化究竟有多快? 近日,微信.支付宝同时宣布 ...

最新文章

  1. 斯坦福2021版图机器学习课程完结,视频、PPT全放送,大神主讲
  2. 用WEB技术栈开发NATIVE应用(二):WEEX 前端SDK原理详解
  3. Algorithm学习笔记 --- 迷宫问题
  4. CoreGraphics之CGContextSaveGState与UIGraphicsPushContext
  5. oracle ola_Ola HallengrenSQL Server维护解决方案–数据库完整性检查
  6. 少有人挖但仍可获得奖金的10类Web 漏洞(下)
  7. 35. 内容协商和转码
  8. 注释(/**/) 给CSS带来的麻烦
  9. JSP 获取Request 经常使用參数
  10. 树莓派 kali系统默认密码
  11. python 百度脑图json数据转Excel
  12. 简易购物车实体类的设计
  13. java 第六次实验_操作系统第六次实验报告——使用信号量解决哲学家进餐问题...
  14. SpringDataJPA -06- specification的基本使用
  15. 【MySQL】MyCat分库分表分片规则配置详解与实战(MySQL专栏启动)
  16. 计算机应用技术专业名词解释,计算机应用技术名词解释--02316(26页)-原创力文档...
  17. 家用智能洗地机哪个牌子好、这几款旗舰机好用又实惠
  18. zynq linux内核出错,Xilinx Zynq Linux内核源码编译过程
  19. 华为无线设备配置WIDS和WIPS
  20. 火山PC_sqlserver数据库的操作

热门文章

  1. 2016总结——在路上,我走到哪儿了?
  2. 基于Python实现的合同管理系统设计
  3. 串行通信——异步串行通信
  4. jhu研究生录取 计算机,背景一般获约翰霍普金斯大学JHU信息安全硕士录取
  5. 怎样用计算机控制插座,电脑顺序开、关机控制插座 二
  6. 联想电脑黑屏但电源键亮着的解决办法
  7. CentOS 7查看源代码
  8. 计算机-磁盘管理不能删除,关于win10系统磁盘管理磁盘右键菜单中只有“帮助”删除方法...
  9. 《数据库原理与运用》上机实验之SPJ
  10. 建模软件MAYA最详细的教程介绍来了