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作的文本留言本的例子(五)
Oct 09 PHP
在IIS上安装PHP4.0正式版
Oct 09 PHP
php HandlerSocket的使用
May 02 PHP
用php实现百度网盘图片直链的代码分享
Nov 01 PHP
destoon调用企业会员公司形象图片的实现方法
Aug 21 PHP
php图片的二进制转换实现方法
Dec 15 PHP
php约瑟夫问题解决关于处死犯人的算法
Mar 23 PHP
php递归调用删除数组空值元素的方法
Apr 28 PHP
php 7新特性之类型申明详解
Jun 06 PHP
php制作圆形用户头像的实例_自定义封装类源代码
Sep 18 PHP
PHP的curl函数的用法总结
Feb 14 PHP
PHP 实现缩略图
Mar 09 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 mb_convert_encoding文字编码的转换函数介绍
2011/11/10 PHP
php文件操作相关类实例
2015/06/18 PHP
关于php unset对json_encode的影响详解
2018/11/14 PHP
javascript this用法小结
2008/12/19 Javascript
表单类各种类型(文本框)失去焦点效果jquery代码
2013/04/26 Javascript
JavaScript与jQuery实现的闪烁输入效果
2016/02/18 Javascript
JS生成某个范围的随机数【四种情况详解】
2016/04/20 Javascript
Angular 4依赖注入学习教程之FactoryProvider配置依赖对象(五)
2017/06/04 Javascript
JavaScript遍历DOM元素的常见方式示例
2019/02/16 Javascript
微信小程序页面间传递数组对象方法解析
2019/11/06 Javascript
2019最新21个MySQL高频面试题介绍
2020/02/06 Javascript
基于js实现数组相邻元素上移下移
2020/05/19 Javascript
Vue-CLI 3 scp2自动部署项目至服务器的方法
2020/07/24 Javascript
Python中文编码那些事
2014/06/25 Python
Python中对列表排序实例
2015/01/04 Python
举例讲解Linux系统下Python调用系统Shell的方法
2015/11/07 Python
Python中的if、else、elif语句用法简明讲解
2016/03/11 Python
python3.5仿微软计算器程序
2020/03/30 Python
python、java等哪一门编程语言适合人工智能?
2017/11/13 Python
Python标准库使用OrderedDict类的实例讲解
2019/02/14 Python
浅析PyTorch中nn.Module的使用
2019/08/18 Python
布隆过滤器的概述及Python实现方法
2019/12/08 Python
完美解决pycharm导入自己写的py文件爆红问题
2020/02/12 Python
Matplotlib自定义坐标轴刻度的实现示例
2020/06/18 Python
html5 Canvas画图教程(7)—canvas里画曲线之quadraticCurveTo方法
2013/01/09 HTML / CSS
银行实习生自我鉴定范文
2013/09/19 职场文书
求职自荐书范文
2013/12/04 职场文书
高一自我鉴定
2013/12/17 职场文书
中文教师求职信
2014/02/22 职场文书
大课间体育活动方案
2014/03/12 职场文书
计算机专业自荐信范文
2014/05/28 职场文书
乡镇党建工作汇报材料
2014/08/14 职场文书
工会2014法制宣传日活动总结
2014/11/01 职场文书
同意离婚答辩状
2015/05/22 职场文书
入党培养人考察意见
2015/06/08 职场文书
法定代表人身份证明书
2015/06/18 职场文书