第一步:添加分账接收用户

require 'vendor/autoload.php';use EasyWeChat\Pay\Application;$config = ['mch_id' => '商户号',// 商户证书'private_key' => 'D:\webroot\cgsxy\demo\cert\apiclient_key.pem','certificate' => 'D:\webroot\cgsxy\demo\cert\apiclient_cert.pem',// v3 API 秘钥'secret_key' => '',/*** 接口请求相关配置,超时时间等,具体可用参数请参考:* https://github.com/symfony/symfony/blob/5.3/src/Symfony/Contracts/HttpClient/HttpClientInterface.php*/'http' => ['throw'  => true, // 状态码非 200、300 时是否抛出异常,默认为开启'timeout' => 5.0,//'base_uri' => 'https://api.mch.weixin.qq.com/', // 如果你在国外想要覆盖默认的 url 的时候才使用,根据不同的模块配置不同的 uri],
];$app = new Application($config);$api = $app->getClient();$response = $api->postJson("v3/profitsharing/receivers/add", ["appid"        => "wxb44ba1*******","type"         => "PERSONAL_OPENID","account"      => "openID", //个人openid"relation_type"=> "USER","custom_relation"=>"分销商"
]);$res = $response->toArray(false);// var_dump($res);echo $res['account'];

第二步:统一下单

require 'vendor/autoload.php';use EasyWeChat\Pay\Application;$config = ['mch_id' => '1535038955',// 商户证书'private_key' => 'D:\webroot\cgsxy\demo\cert\apiclient_key.pem','certificate' => 'D:\webroot\cgsxy\demo\cert\apiclient_cert.pem',// v3 API 秘钥'secret_key' => '',/*** 接口请求相关配置,超时时间等,具体可用参数请参考:* https://github.com/symfony/symfony/blob/5.3/src/Symfony/Contracts/HttpClient/HttpClientInterface.php*/'http' => ['throw'  => true, // 状态码非 200、300 时是否抛出异常,默认为开启'timeout' => 5.0,// 'base_uri' => 'https://api.mch.weixin.qq.com/', // 如果你在国外想要覆盖默认的 url 的时候才使用,根据不同的模块配置不同的 uri],
];$app = new Application($config);$response = $app->getClient()->postJson("v3/pay/transactions/jsapi", ["mchid" => "1535088901", // <---- 请修改为您的商户号"out_trade_no" => "20230207125536","appid" => "wxb44ba13********", // <---- 请修改为服务号的 appid"description" => "这是来自john的微信支付测试","notify_url" => "http://demo.sohu.com/demo/notify.php","amount" => ["total" => 100,"currency" => "CNY"],"payer" => ["openid" => "oXILr5uX73IiEvquefDK1Uy9rka8" // <---- 请修改为服务号下单用户的 openid],"settle_info" => ["profit_sharing" => true //是否支持分账,这个必须设置,否则分账会失败;]
]);$res = $response->toArray();// var_dump($res);$prepayId = $res['prepay_id'];$utils = $app->getUtils();$appId = 'wxb44ba137*******';
$signType = 'RSA'; // 默认RSA,v2要传MD5
$config = $utils->buildBridgeConfig($prepayId, $appId, $signType); // 返回数组
?>
<script src="http://res.wx.qq.com/open/js/jweixin-1.6.0.js"></script>
<script>
wx.config({debug: true, // 开启调试模式,调用的所有 api 的返回值会在客户端 alert 出来,若要查看传入的参数,可以在 pc 端打开,参数信息会通过 log 打出,仅在 pc 端时才会打印。appId: '<?= $appId; ?>', // 必填,公众号的唯一标识timestamp: <?= $config['timeStamp'] ?>, // 必填,生成签名的时间戳nonceStr: '<?= $config['nonceStr'] ?>', // 必填,生成签名的随机串signature: '<?= $config['paySign'] ?>',// 必填,签名jsApiList: ['chooseWXPay'] // 必填,需要使用的 JS 接口列表
});wx.ready(function() {wx.chooseWXPay({timestamp: '<?= $config['timeStamp'] ?>', // 支付签名时间戳,注意微信 jssdk 中的所有使用 timestamp 字段均为小写,但最新版的支付后台生成签名使用的 timeStamp 字段名需大写其中的 S 字符nonceStr: '<?= $config['nonceStr'] ?>', // 支付签名随机串,不长于 32 位package: '<?= $config['package'] ?>', // 统一支付接口返回的prepay_id参数值,提交格式如:prepay_id=\*\*\*)signType: '<?= $config['signType'] ?>', // 微信支付V3的传入 RSA ,微信支付V2的传入格式与V2统一下单的签名格式保持一致paySign: '<?= $config['paySign'] ?>', // 支付签名success: function (res) {//支付成功后的回调函数if(res.errMsg.indexOf("ok")>0){alert("付款成功!");window.location.href='./';}else if(res.errMsg.indexOf("cancel")>0){alert("取消付款!");window.location.href='./';}else{alert(res.errMsg);}}});
});
</script>

第三步:进行分账

require 'vendor/autoload.php';use EasyWeChat\Pay\Application;$config = ['mch_id' => '1538995501',// 商户证书'private_key' => 'D:\webroot\cgsxy\demo\cert\apiclient_key.pem','certificate' => 'D:\webroot\cgsxy\demo\cert\apiclient_cert.pem',// v3 API 秘钥'secret_key' => '', //填写API秘钥/*** 接口请求相关配置,超时时间等,具体可用参数请参考:* https://github.com/symfony/symfony/blob/5.3/src/Symfony/Contracts/HttpClient/HttpClientInterface.php*/'http' => ['throw'  => true, // 状态码非 200、300 时是否抛出异常,默认为开启'timeout' => 5.0,//'base_uri' => 'https://api.mch.weixin.qq.com/', // 如果你在国外想要覆盖默认的 url 的时候才使用,根据不同的模块配置不同的 uri],
];$app = new Application($config);$api = $app->getClient();$data='{"appid": "wxb44ba1*******","transaction_id": "4200001747202302075803406206","out_order_no": "20230207125536","receivers": [{"type": "PERSONAL_OPENID","account": "oXILr5uX73IiEvquefDK1Uy9rka8", //个人openID"amount": 10, //在微信支付商家后台,设置分账比例,此金额一定 <= 分账比例(在扣除手续费后);"description": "分给quwei"}],"unfreeze_unsplit": true
}';$obj = json_decode($data, true);
// var_dump($obj);exit();
$response = $api->postJson("v3/profitsharing/orders", $obj);
$res = $response->toArray(false);
var_dump($res);

环境要求:php>=8.0

easywechat6 这个版本 需要开通的扩展,请参考官方网站;

openSSL证书 cacert 在php.ini里的配置,请参考我之前关于easywechat文章........

使用easywechat进行微信分账开发相关推荐

  1. 实用教程 | 一文读懂「微信分账」功能

    在现有的微信支付互联网生态环境中,存在平台方角色,如电商平台.加盟代理等,用户支付订单金额后,先由平台方统一收款,再由平台方与商家或其他参与方进行结算,若无引入具有支付牌照的第三方,则为「二清」行为, ...

  2. python3封装微信分账功能

    之前一篇文章介绍python3封装成类调用微信JSAPI下单.支付.生成付款码,本文介绍python实现微信分账功能. 微信支付里面分账接口调用时需要证书,本文介绍python使用证书. 1 JSAP ...

  3. 微信分账:分账接收方列表格式错误

    项目场景: 提示:这里简述项目相关背景: 例如:项目场景:微信商户(不是服务商)做微信分账,再添加分账接收方的时候,微信返回:分账接收方列表格式错误. 问题描述 微信商户(不是服务商)做微信分账,在添 ...

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

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

  5. java 微信分账POST请求 (java代码调用微信api)

    今天用java 调用 微信分账api 由于上传的数据是xml 格式, 用post请求发送 .在网上找的现成函数,微信服务器老是返回签名错误,但是我用postman 发送返回的数据没有问题,于是经过自己 ...

  6. 微信分账功能与微信支付企业付款相关内容详解(payjs版)

    PAYJS开通微信分账功能以来,有很多同学咨询相关情况.很多同学关心有没有什么办法,可以让自己的商户号快速开通企业付款功能.这里就介绍下微信分账的具体相关内容,可以完美解决问题. 一.什么是微信分账? ...

  7. 微信分账系统怎么开通?

    在疫情影响下,越来越多企业将业务转为线上化发展,伴随着交易订单的增多,财务人员的分账记账工作越发复杂,为了提高企业的交易管理效率,很多企业考虑接入分账系统.有的企业想要了解微信分账系统怎么开通,接下来 ...

  8. 微信分账功能 Java 开发

    提示"没有分账权限",参考这里开通. 预下单要 profit_sharing 设为 true,默认是 false 不支持分账的: 分账个人接收方姓名 name,这个是可选的.如果填 ...

  9. 微信分账支付和退款资金流动

    1,根据店铺编码查询分账的二级商户号,如果没有则默认为admin或者比例超过30%的也默认为admin 2,下单成功后收取计算出来服务费 3,订单完成后将剩余金额解冻 订单退款 1如果订单未分账则直接 ...

最新文章

  1. .Net 2.0 事件机制,更简化了...
  2. Django框架(二十)—— Django rest_framework-认证组件
  3. NYOJ 562 盒子游戏
  4. MySQL 和 PostgreSQL 对比
  5. 【Redis系列】深入浅出Redis主从复制之哨兵模式【实践】
  6. 你真的知道 == 和 equals 的区别吗?
  7. SQLAlchemy 教程 —— ORM 方式使用示例
  8. 如何让char不要忽略开头的空格_如何使用C语言实现JSON解析库(二)
  9. python金融衍生品_《Python金融衍生品大数据分析:建模、模拟、校准与对冲(博文视点出品)》【摘要 书评 试读】- 京东图书...
  10. 如何直接打开AutoCAD格式的DXF文件
  11. matlab已经停止工作,Win7旗舰版运行Matlab提示已停止工作解决措施
  12. 自动驾驶将产生比互联网更大的产值
  13. 139邮箱服务器的ip,[原创]中国移动139邮箱和说客
  14. 【opencv-c++】cv::ximgproc::thinning图像细化算法
  15. WPF的介绍和XAML语言
  16. 描述12个异性追求者(互动媒体技术作业)
  17. 批量转化py2topy3脚本
  18. 大数据可视化,助力行业大数据应用
  19. python3.24总结
  20. android ble发现的服务,通过蓝牙低功耗无法发现服务和特性 - BLE

热门文章

  1. Photoshop CS4 将通道中的选区载入
  2. 关于win7下魔兽争霸不能全屏的问题
  3. Maya 色彩空间不能更改
  4. 全球首发搭载国产北斗芯片,联想Z6青春版千元强悍出击
  5. 【East!_XVI】九尾妖狐 最小割
  6. 【PYTHON的环境搭建和安装(基于vscode下)】
  7. 元宇宙的价值链:体验、发现、创造者经济、空间计算、人机界面
  8. 航空数据链协议分析器——APA
  9. cucumber学习笔记 -- 测试报告
  10. Java,你告诉我 fail-fast 是什么鬼?