微信商户平台企业付款功能
微信官方文档基本上跟没说一样,只有自己慢慢摸索了,刚刚开发完这个功能,整理记录一下。
文档地址https://pay.weixin.qq.com/wiki/doc/api/tools/mch_pay.php?chapter=14_2
SDK下载:https://pay.weixin.qq.com/wiki/doc/api/download/cert.zip
步骤一
所需参数
$params["mch_appid"] = ''; //公众账号appid 或者开放平台 appid
$params["mchid"] = ''; //商户号 微信支付平台账号
$params["nonce_str"] = self::createNonceStr(32); //随机字符串
$params["partner_trade_no"] = date('YmdHis', time()) . rand(100000, 999999);//商户订单号
$params["amount"] = 100; //金额 单位为分 1元是100
$params["desc"] = '付款'; //企业付款描述
$params["openid"] = ''; //用户openid
$params["check_name"] = 'NO_CHECK'; //不检验用户姓名
$params['spbill_create_ip'] = ''; //服务器IP
生成签名
这里文档写的比较复杂,实际上就是把参数按照ASCII进行排序
下面的key 指的是 商户平台API秘钥,登录账户平台,账户中心,API安全里面进行设置
$str = 'amount='.$params["amount"]. '&check_name='.$params["check_name"]. '&desc='.$params["desc"]. '&mch_appid='.$params["mch_appid"]. '&mchid='.$params["mchid"]. '&nonce_str='.$params["nonce_str"]. '&openid='.$params["openid"]. '&partner_trade_no='.$params["partner_trade_no"]. '&spbill_create_ip='.$params['spbill_create_ip']. '&key=1234567';$sign = strtoupper(md5($str));$params["sign"] = $sign;//签名$xml = self::arrayToXml($params);$res = self::curl_post_ssl($url, $xml);return $result = self::xmlToArray($res);
接下来是用到的函数
curl_post_ssl这个函数里面 CURLOPT_SSLCERT和CURLOPT_SSLKEY 两个引用的是API证书,也在账户中心,API安全里面进行下载,引用必须是绝对路径。
/*** 发送post请求**/private static function curl_post_ssl($url, $vars, $second=30,$aHeader=array()){$ch = curl_init();//超时时间curl_setopt($ch,CURLOPT_TIMEOUT,$second);curl_setopt($ch,CURLOPT_RETURNTRANSFER, 1);curl_setopt($ch,CURLOPT_URL,$url);curl_setopt($ch,CURLOPT_SSL_VERIFYPEER,false);curl_setopt($ch,CURLOPT_SSL_VERIFYHOST,false);//引用pem文件curl_setopt($ch,CURLOPT_SSLCERT,"apiclient_cert.pem");curl_setopt($ch,CURLOPT_SSLKEY,"apiclient_key.pem");if( count($aHeader) >= 1 ){curl_setopt($ch, CURLOPT_HTTPHEADER, $aHeader);}curl_setopt($ch,CURLOPT_POST, 1);curl_setopt($ch,CURLOPT_POSTFIELDS,$vars);$data = curl_exec($ch);if($data){curl_close($ch);return $data;}else {$error = curl_errno($ch);echo "call faild, errorCode:$error\n";curl_close($ch);return false;}}/*** 数组转xml**/private static function arrayToXml($arr) {$xml = "<xml>";foreach ($arr as $key => $val){if (is_numeric($val)){$xml .= "<".$key.">".$val."</".$key.">";}else{$xml .= "<".$key."><![CDATA[".$val."]]></".$key.">";}}$xml .= "</xml>";return $xml;}/*** 将XML转为array**/private static function xmlToArray($xml){//禁止引用外部xml实体libxml_disable_entity_loader(true);$values = json_decode(json_encode(simplexml_load_string($xml, 'SimpleXMLElement', LIBXML_NOCDATA)), true);return $values;}/*** 获取随机字符串**/private static function createNonceStr($length = 16) {$chars = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789";$str = "";for ($i = 0; $i < $length; $i++) {$str .= substr($chars, mt_rand(0, strlen($chars) - 1), 1);}return $str;}
代码就这么多,实际重要的代码就那么几行。其他的函数都只是一个辅助,测试或使用时,商户平台必须进行充值。
微信商户平台企业付款功能相关推荐
- PHP微信商户支付 - 企业付款到零钱功能(即提现)技术资料汇总
PHP实现微信开发中提现功能(企业付款到用户零钱) 一.实现该功能目的 这几天在小程序里要实现用户从系统中提现到零钱的功能,查了一下文档可以使用 企业付款到用户零钱 来实现: 官方文档:https:/ ...
- 11. PHP接入微信企业付款功能
payment 项目2.0版本 这个功能与支付宝的批量付款到支付宝帐号功能类似.但是当前支付宝这个接口已经停止审核了. 当前很多提问平台就用到了这两个平台.比如[来问医生],你提的问题如果被人看了.医 ...
- 微信支付之企业付款--微信商户后台没有“企业付款到零钱”解决方案
项目需要用到用户提现功能,准备用微信支付提供的企业付款功能,即提供企业向用户付款的功能,支持企业通过API接口付款,或通过微信支付商户平台网页功能操作付款. 登录商户后台准备开通,发现产品中心中并不存 ...
- 微信支付(企业付款到个人微信零钱账户)微信公众平台开发教程(6)
微信支付(企业付款到个人微信零钱账户)微信公众平台开发教程(6 简介 开发步骤 后端代码实现 简介 Senparc.Weixin SDK 是由盛派网络(Senparc)团队自主研发的针对微信各模块的 ...
- 企业付款 php_PHP接入微信企业付款功能
这个功能与支付宝的批量付款到支付宝帐号功能类似.但是当前支付宝这个接口已经停止审核了. 当前很多提问平台就用到了这两个平台.比如[来问医生],你提的问题如果被人看了.医生得0.5元,你得0.5元.然后 ...
- 微信商户平台转账到零钱功能接入实战
1.背景说明 2.实现过程 2.1 接入之前的准备工作 2.2 代码实现 3.注意事项以及相关说明 3.1 参数组装说明 ...
- php 微信转账,php实现微信公众号企业转账功能
企业付款提供由商户直接付钱至用户微信零钱的能力,支持平台操作及接口调用两种方式,资金到账速度快,使用及查询方便.主要用来解决合理的商户对用户付款需求,比如:保险理赔.彩票兑换等等. 特点发起方式灵活, ...
- php 微信公众号企业转账功能
企业付款提供由商户直接付钱至用户微信零钱的能力,支持平台操作及接口调用两种方式,资金到账速度快,使用及查询方便.主要用来解决合理的商户对用户付款需求,比如:保险理赔.彩票兑换等等. 特点 发起方式灵活 ...
- java 微信转账 ca_error_【微信支付】企业付款开发者文档
[微信支付]企业付款开发者文档 2018-11-24 简介 企业付款业务是基于微信支付商户平台的资金管理能力,为了协助商户方便地实现企业向个人付款,针对部分有开发能力的商户,提供通过API完成企业付款 ...
最新文章
- GlusterFS常用命令小结
- SVM的发展和研究热点
- 【ZJOI2015】幻想乡 Wi-Fi 搭建计划【几何】【贪心】【dp】
- 遇到attemp to invoke virtual method
- mupdf java_mupdf库学习
- 一文搞清楚 Spark shuffle 调优
- 华为平板wps语音朗读_打工人必备的手机端WPS小技巧
- JAVA中的位运算符
- deepin linux 命令行_5 个面向新手的 Linux 发行版
- 微信小程序购物车商品单选、多选、数量变化、结算等
- java 日历_java的日历类(Calendar)详解
- ldoce6 android,少儿英语学习词典 朗文当代LDOCE6双解词典
- 浙江师范大学c语言函数实验答案,C语言实验浙江师范大学8-2 D阵列+答案.doc
- 差动变压器的振动测量实验 思考题
- DragonBoard 高通推出 IoT板 hitting raspberry pi
- 2008年4月28日A股市场存在筑底异样
- LATEX强制放置表格图片在固定的位置
- 2021-01-12 DataGrip2020.3 离线安装驱动
- MacbookPro使用小记
- python动态与静态语言_Python编程笔记--动态属性
热门文章
- 股票投资 - 如何看懂集合竞价
- IT三部曲之达摩研究院(上)
- gitlab基本概念
- linux双机连通找不到con1,Linux服务器崩溃 - 错误在反序列化(节点$ CON):错误的连接...
- python绘制等值线图_使用matplotlib绘制等值线图
- 百度智能云在线活体检测
- 笔记:《深入浅出统计学》第八、九章:概率密度、正态分布(高斯分布)
- 使用rufus制作Windows Server 2008 U盘_wentfar·tsao
- vi vim 快速跳到文件末尾 GA 在最后一行下方新增一行 (光标换行,文字不换行) GO
- 随机数qqqqqqqqqq_rand()