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 相关文章推荐
实用函数10
Nov 08 PHP
joomla内置的表单验证功能使用方法
Jun 11 PHP
PHP5函数小全(分享)
Jun 06 PHP
PHP获取当前url的具体方法全面解析
Nov 26 PHP
php制作unicode解码工具(unicode编码转换器)代码分享
Dec 24 PHP
从零开始学YII2框架(五)快速生成代码工具 Gii 的使用
Aug 20 PHP
Laravel 5 框架入门(三)
Apr 09 PHP
php转换颜色为其反色的方法
Apr 27 PHP
支持中文的PHP按字符串长度分割成数组代码
May 17 PHP
php实现只保留mysql中最新1000条记录
Jun 18 PHP
php倒计时出现-0情况的解决方法
Jul 28 PHP
PHP导出带样式的Excel示例代码
Aug 28 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
BBS(php &amp; mysql)完整版(六)
2006/10/09 PHP
php一个找二层目录的小东东
2012/08/02 PHP
PHP分页效率终结版(推荐)
2013/07/01 PHP
php获取目标函数执行时间示例
2014/03/04 PHP
PHP跨平台获取服务器IP地址自定义函数分享
2014/12/29 PHP
php正则表达式获取内容所有链接
2015/07/24 PHP
Laravel登录失败次数限制的实现方法
2020/08/26 PHP
setTimeout和setInterval的浏览器兼容性分析
2007/02/27 Javascript
一个js的tab切换效果代码[代码分离]
2010/04/11 Javascript
JS的Document属性和方法小结
2013/09/17 Javascript
javascript实用小函数使用介绍
2013/11/11 Javascript
window.open()详解及浏览器兼容性问题示例探讨
2014/05/29 Javascript
js实现可控制左右方向的无缝滚动效果
2016/05/29 Javascript
在JSP中如何实现MD5加密的方法
2016/11/02 Javascript
Javascript 实现全屏滚动实例代码
2016/12/31 Javascript
详解nodejs微信公众号开发——2.自动回复
2017/04/10 NodeJs
Vue使用vue-cli创建项目
2017/09/01 Javascript
详解vue-cli构建项目反向代理配置
2017/09/07 Javascript
JS实现websocket长轮询实时消息提示的效果
2017/10/10 Javascript
深入理解vue中的slot与slot-scope
2019/04/22 Javascript
微信小程序进入广告实现代码实例
2019/09/19 Javascript
python获得linux下所有挂载点(mount points)的方法
2015/04/29 Python
Python常用知识点汇总
2016/05/08 Python
利用Python批量生成任意尺寸的图片
2016/08/29 Python
Python探索之创建二叉树
2017/10/25 Python
详解Python异常处理中的Finally else的功能
2017/12/29 Python
Python实现使用卷积提取图片轮廓功能示例
2018/05/12 Python
Python导入模块包原理及相关注意事项
2020/03/25 Python
PyCharm2019.3永久激活破解详细图文教程,亲测可用(不定期更新)
2020/10/29 Python
加拿大最大的体育用品、鞋类和服装零售商:Sport Chek
2018/11/29 全球购物
医学专业个人求职自荐信格式
2013/09/23 职场文书
自我评价怎么写好呢?
2013/12/05 职场文书
学校中秋节活动总结
2015/03/23 职场文书
2015年保洁工作总结范文
2015/04/28 职场文书
2016党员干部政治学习心得体会
2016/01/23 职场文书
Java设计模式之享元模式示例详解
2022/03/03 Java/Android