Thinkphp 5.0实现微信企业付款到零钱


Posted in PHP onSeptember 30, 2018

本文实例为大家分享了Thinkphp 5.0 微信企业付款到零钱的具体代码,供大家参考,具体内容如下

【微信支付】企业付款到零钱:官方文档

注意:1,证书路径一定要写绝对路径,且使用函数getcwd()。

Thinkphp 5.0实现微信企业付款到零钱

function transfer($data){
  //支付信息
  $wxchat['appid'] = WxPayConfig::$appid;
  $wxchat['mchid'] = WxPayConfig::$mchid;
  $webdata = array(
  'mch_appid' => $wxchat['appid'],//商户账号appid
    'mchid'  => $wxchat['mchid'],//商户号
  'nonce_str' => md5(time()),//随机字符串
    'partner_trade_no'=> date('YmdHis'), //商户订单号,需要唯一
  'openid' => $data['openid'],//转账用户的openid
  'check_name'=> 'NO_CHECK', //OPTION_CHECK不强制校验真实姓名, FORCE_CHECK:强制 NO_CHECK:
  'amount' => $data['money']*100, //付款金额单位为分
  'desc' => '微信企业付款到零钱',//企业付款描述信息
  'spbill_create_ip' => request()->ip(),//获取IP
  );
  foreach ($webdata as $k => $v) {
  $tarr[] =$k.'='.$v;
  }
  sort($tarr);
  $sign = implode($tarr, '&');
  $sign .= '&key='.WxPayConfig::$key;
  $webdata['sign']=strtoupper(md5($sign));
  $wget = $this->ArrToXml($webdata);//数组转XML
  $pay_url = 'https://api.mch.weixin.qq.com/mmpaymkttransfers/promotion/transfers';//api地址
  $res = $this->postData($pay_url,$wget);//发送数据
  if(!$res){
  return array('status'=>1, 'msg'=>"Can't connect the server" );
  }
  $content = simplexml_load_string($res, 'SimpleXMLElement', LIBXML_NOCDATA);
  if(strval($content->return_code) == 'FAIL'){
  return array('status'=>1, 'msg'=>strval($content->return_msg));
  }
  if(strval($content->result_code) == 'FAIL'){
  return array('status'=>1, 'msg'=>strval($content->err_code),':'.strval($content->err_code_des));
  }
  $rdata = array(
  'mch_appid'  => strval($content->mch_appid),
  'mchid'   => strval($content->mchid),
  'device_info'  => strval($content->device_info),
  'nonce_str'  => strval($content->nonce_str),
  'result_code'  => strval($content->result_code),
  'partner_trade_no' => strval($content->partner_trade_no),
  'payment_no'  => strval($content->payment_no),
  'payment_time'  => strval($content->payment_time),
  );
  return $rdata;
}
//数组转XML
 function ArrToXml($arr)
 {
  if(!is_array($arr) || count($arr) == 0) return '';
  $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;
 }
//发送数据
 function postData($url,$postfields){
  $ch = curl_init();
  $params[CURLOPT_URL] = $url; //请求url地址
  $params[CURLOPT_HEADER] = false; //是否返回响应头信息
  $params[CURLOPT_RETURNTRANSFER] = true; //是否将结果返回
  $params[CURLOPT_FOLLOWLOCATION] = true; //是否重定向
  $params[CURLOPT_POST] = true;
  $params[CURLOPT_POSTFIELDS] = $postfields;
  $params[CURLOPT_SSL_VERIFYPEER] = false;
  $params[CURLOPT_SSL_VERIFYHOST] = false;
  //以下是证书相关代码
  $params[CURLOPT_SSLCERTTYPE] = 'PEM';
  $params[CURLOPT_SSLCERT] = getcwd().'/plugins/payment/weixin/cert/apiclient_cert.pem';//绝对路径
  $params[CURLOPT_SSLKEYTYPE] = 'PEM';
  $params[CURLOPT_SSLKEY] = getcwd().'/plugins/payment/weixin/cert/apiclient_key.pem';//绝对路径
  curl_setopt_array($ch, $params); //传入curl参数
  $content = curl_exec($ch); //执行
  curl_close($ch); //关闭连接
  return $content;
 }

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

PHP 相关文章推荐
php实现从ftp服务器上下载文件树到本地电脑的程序
Feb 10 PHP
PHP批量删除、清除UTF-8文件BOM头的代码实例
Apr 14 PHP
Windows下编译PHP5.4和xdebug全记录
Apr 03 PHP
php递归删除指定文件夹的方法小结
Apr 20 PHP
PHP实现恶意DDOS攻击避免带宽占用问题方法
May 27 PHP
Linux操作系统安装LAMP环境
Jun 26 PHP
详解PHP中的mb_detect_encoding函数使用方法
Aug 18 PHP
php搜索文件程序分享
Oct 30 PHP
Yii2验证器(Validator)用法分析
Jul 23 PHP
PHP实现通过strace定位故障原因的方法
Apr 29 PHP
PHP7 echo和print语句实例用法
Feb 15 PHP
php xhprof使用实例详解
Apr 15 PHP
PHP使用函数用法详解
Sep 30 #PHP
CentOS7.0下安装PHP5.6.30服务的教程详解
Sep 29 #PHP
php 与 nginx 的处理方式及nginx与php-fpm通信的两种方式
Sep 28 #PHP
PHP从尾到头打印链表实例讲解
Sep 27 #PHP
实现php删除链表中重复的结点
Sep 27 #PHP
浅析php如何实现爬取数据原理
Sep 27 #PHP
Laravel源码解析之路由的使用和示例详解
Sep 27 #PHP
You might like
PHP中preg_match函数正则匹配的字符串长度问题
2015/05/27 PHP
Symfony2之session与cookie用法小结
2016/03/18 PHP
PHP检测接口Traversable用法详解
2017/12/29 PHP
JS创建类和对象的两种不同方式
2014/08/08 Javascript
JavaScript中的变量作用域介绍
2014/12/31 Javascript
JavaScript测试工具之Karma-Jasmine的安装和使用详解
2015/12/03 Javascript
基于HTML+CSS,jQuery编写的简易计算器后续(添加了键盘监听)
2016/01/05 Javascript
省市二级联动小案例讲解
2016/07/24 Javascript
使用JS实现图片展示瀑布流效果的实例代码
2016/09/12 Javascript
解决webpack打包速度慢的解决办法汇总
2017/07/06 Javascript
Vue项目webpack打包部署到服务器的实例详解
2017/07/17 Javascript
基于input动态模糊查询的实现方法
2017/12/12 Javascript
Vuex 使用及简单实例(计数器)
2018/08/29 Javascript
详解JavaScript事件循环机制
2018/09/07 Javascript
js实现3D照片墙效果
2019/10/28 Javascript
javascript 内存模型实例详解
2020/04/18 Javascript
[56:42]VP vs RNG 2019国际邀请赛小组赛 BO2 第二场 8.15
2019/08/17 DOTA
Python基于回溯法子集树模板实现8皇后问题
2017/09/01 Python
Python中join函数简单代码示例
2018/01/09 Python
Python列表解析配合if else的方法
2018/06/23 Python
python+splinter实现12306网站刷票并自动购票流程
2018/09/25 Python
使用Python脚本zabbix自定义key监控oracle连接状态
2019/08/28 Python
python实现银行管理系统
2019/10/25 Python
python 函数中的参数类型
2020/02/11 Python
Python celery原理及运行流程解析
2020/06/13 Python
Python3以GitHub为例来实现模拟登录和爬取的实例讲解
2020/07/30 Python
安装python依赖包psycopg2来调用postgresql的操作
2021/01/01 Python
HTML5 UTF-8 中文乱码的解决方法
2013/11/18 HTML / CSS
日本快乐生活方式购物网站:Shop Japan
2018/07/17 全球购物
应届毕业生应聘自荐信
2013/12/07 职场文书
中班上学期幼儿评语
2014/04/30 职场文书
优质服务口号
2014/06/11 职场文书
环境保护建议书
2014/08/26 职场文书
学校查摆问题整改措施
2014/09/28 职场文书
2014年十八届四中全会思想汇报范文
2014/10/17 职场文书
2016年“我们的节日·重阳节”主题活动总结
2016/04/01 职场文书