服务器之家:专注于服务器技术及软件下载分享
分类导航

PHP教程|ASP.NET教程|JAVA教程|ASP教程|

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

2019-09-04 11:18天津PHP&C# PHP教程

这篇文章主要为大家详细介绍了Thinkphp 5.0实现微信企业付款到零钱,具有一定的参考价值,感兴趣的小伙伴们可以参考一下

本文实例为大家分享了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各环境下的伪静态配置

    浅谈PHP各环境下的伪静态配置

    这篇文章主要介绍了PHP各环境下的伪静态配置,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧...

    每①天都是↗开始2662019-06-01
  • PHP教程使用vs code编辑调试php配置的方法

    使用vs code编辑调试php配置的方法

    这篇文章主要介绍了使用vs code编辑调试php配置的方法,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧...

    互联网技术-朱玉兵2802019-06-21
  • PHP教程PHP+mysql实现的三级联动菜单功能示例

    PHP+mysql实现的三级联动菜单功能示例

    这篇文章主要介绍了PHP+mysql实现的三级联动菜单功能,涉及mysql数据库创建、数据添加及php读取mysql、创建联动菜单相关操作技巧,需要的朋友可以参考下...

    ybhjx2872019-06-13
  • PHP教程PHP实现函数内修改外部变量值的方法示例

    PHP实现函数内修改外部变量值的方法示例

    这篇文章主要介绍了PHP实现函数内修改外部变量值的方法,涉及php全局变量、传值调用、引用等相关操作技巧,需要的朋友可以参考下...

    徐三少北3272019-07-08
  • PHP教程Laravel框架自定义验证过程实例分析

    Laravel框架自定义验证过程实例分析

    这篇文章主要介绍了Laravel框架自定义验证过程,结合实例形式分析了Laravel框架自定义验证的相关原理、路由、模型等操作技巧,需要的朋友可以参考下...

    trouble-i-am-in2592019-06-21
  • PHP教程PHP实现的敏感词过滤方法示例

    PHP实现的敏感词过滤方法示例

    这篇文章主要介绍了PHP实现的敏感词过滤方法,涉及php字符串正则匹配、分割、转换等相关操作技巧,需要的朋友可以参考下...

    御风剑士1942019-06-05
  • PHP教程PHP ajax+jQuery 实现批量删除功能实例代码小结

    PHP ajax+jQuery 实现批量删除功能实例代码小结

    这篇文章主要介绍了PHP ajax+jQuery 实现批量删除功能实例代码小结,代码简单易懂,非常不错,具有一定的参考借鉴价值,需要的朋友可以参考下...

    PHP,Python1922019-07-26
  • PHP教程PHP聊天室简单实现方法详解

    PHP聊天室简单实现方法详解

    这篇文章主要介绍了PHP聊天室简单实现方法,结合实例形式详细分析了php聊天室相关数据库操作与ajax交互等操作技巧,需要的朋友可以参考下...

    hello_sgw3642019-07-22