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乱码问题
Mar 25 PHP
php反射应用示例
Feb 25 PHP
php比较相似字符串的方法
Jun 05 PHP
简单谈谈favicon
Jun 10 PHP
PHP中的数组处理函数实例总结
Jan 09 PHP
PHP 中 DOMDocument保存xml时中文出现乱码问题的解决方案
Sep 19 PHP
JS+PHP实现用户输入数字后显示最大的值及所在位置
Jun 19 PHP
PHP堆栈调试操作简单示例
Jun 15 PHP
PHP children()函数讲解
Feb 03 PHP
微信推送功能实现方式图文详解
Jul 12 PHP
基于laravel缓冲cache的用法详解
Oct 23 PHP
PHP程序员简单的开展服务治理架构操作详解(三)
May 14 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分页效率终结版(推荐)
2013/07/01 PHP
php生成zip文件类实例
2015/04/07 PHP
PHP中的类型提示(type hinting)功能介绍
2015/07/01 PHP
php版微信自动登录并获取昵称的方法
2016/09/23 PHP
详解Yii2 定制表单输入字段的标签和样式
2017/01/04 PHP
php写app用的框架整理
2019/09/29 PHP
不使用中间变量,交换int型的 a, b两个变量的值。
2010/10/29 Javascript
juqery 学习之四 筛选过滤
2010/11/30 Javascript
ie7+背景透明文字不透明超级简单的实现方法
2014/01/17 Javascript
快速学习JavaScript的6个思维技巧
2015/10/13 Javascript
js仿小米官网图片轮播特效
2016/09/29 Javascript
浅谈js继承的实现及公有、私有、静态方法的书写
2016/10/28 Javascript
JQuery获取鼠标进入和离开容器的方向
2016/12/29 Javascript
jQuery插件FusionCharts绘制2D柱状图和折线图的组合图效果示例【附demo源码】
2017/04/10 jQuery
Node.js环境下Koa2添加travis ci持续集成工具的方法
2017/06/19 Javascript
javascript 设计模式之享元模式原理与应用详解
2020/04/08 Javascript
微信小程序实现登录注册功能
2020/12/29 Javascript
[01:21]DOTA2周边文化主题展 神秘商店火热开售
2017/07/30 DOTA
python中的__slots__使用示例
2015/02/26 Python
wxPython定时器wx.Timer简单应用实例
2015/06/03 Python
Python下rrdtool模块的基本使用方法
2015/11/13 Python
安装Python和pygame及相应的环境变量配置(图文教程)
2017/06/04 Python
python利用百度AI实现文字识别功能
2018/11/27 Python
Python使用os.listdir和os.walk获取文件路径
2020/05/21 Python
python中requests模拟登录的三种方式(携带cookie/session进行请求网站)
2020/11/17 Python
HTML5 canvas基本绘图之图形变换
2016/06/27 HTML / CSS
初中政治教学反思
2014/01/17 职场文书
银行授权委托书样本
2014/10/13 职场文书
任命书怎么写
2015/03/02 职场文书
信用卡催款律师函
2015/05/27 职场文书
法律讲堂观后感
2015/06/11 职场文书
关于幸福的感言
2015/08/03 职场文书
初中班主任培训心得体会
2016/01/07 职场文书
《牧场之国》教学反思
2016/02/22 职场文书
css3实现背景图片半透明内容不透明的方法示例
2021/04/13 HTML / CSS
PostgreSQL事务回卷实战案例详析
2022/03/25 PostgreSQL