• 企业400电话
  • 微网小程序
  • AI电话机器人
  • 电商代运营
  • 全 部 栏 目

    企业400电话 网络优化推广 AI电话机器人 呼叫中心 网站建设 商标✡知产 微网小程序 电商运营 彩铃•短信 增值拓展业务
    php实现微信企业付款到个人零钱功能

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

    1.基本配置

    //公众账号appid
     $data["mch_appid"] = 'appid';
    //商户号 
     $data["mchid"] = '';
    //随机字符串 
     $data["nonce_str"] = 'suiji'.mt_rand(100,999); 
    //商户订单号 
     $data["partner_trade_no"]=date('YmdHis').mt_rand(1000,9999); 
    //金额 用户输入的提现金额需要乘以100  
     $data["amount"] = $money; 
    //企业付款描述
     $data["desc"] = '企业付款到个人零钱'; 
    //用户openid   
     $data["openid"] = $openid; 
    //不检验用户姓名  
     $data["check_name"] = 'NO_CHECK'; 
    //获取IP  
     $data['spbill_create_ip']=$_SERVER['SERVER_ADDR']; 
    //商户密钥 
     $data['key']='';
    //商户证书 商户平台的API安全证书下载
     $data['apiclient_cert.pem']
     $data['apiclient_key.pem'] 

    2.PHP代码

    /**
    **开始支付
    /
     public function userpay(){
     $money = ‘用户输入提现金额';
     $info['money'] = ‘用户余额';
     if ($this->openid  $money){
      if ($money>$info['money'] ){
      echo json_encode([
       'status' => 1,
       'message' => '余额不足,不能提现!',
       'code'=>'余额不足,不能提现!'
      ]);
      }elseif ($money1){
      echo json_encode([
       'status' => 2,
       'message' => '提现金额不能小于1元',
       'code'=>'提现金额太低'
      ]);
      }else{
     $openid = $this->openid;
     $trade_no = date('YmdHis').mt_rand(1000,9999);
     $res = $this->pay($openid,$trade_no,$money*100,'微信提现');
    
     //结果打印
     if($res['result_code']=="SUCCESS"){
    
       echo json_encode([
       'status' => 3,
       'message' => '提现成功!',
       ]);
      }elseif ($res['err_code']=="SENDNUM_LIMIT"){
       echo json_encode([
       'status' => 4,
       'message' => '提现失败!',
       'code'=>'每日仅能提现一次',
       ]);
      }else{
       echo json_encode([
       'status' => 5,
       'message' => '提现失败!',
       'code'=>$res['err_code'],
       ]);
      }
      }
     }else{
      echo json_encode([
      'status' => 5,
      'message' => '未检测到您当前微信账号~',
    
      ]);
     }
     }
    
    /**
    *支付方法
    /
    public function pay($openid,$trade_no,$money,$desc){
     $params["mch_appid"]=''; 
     $params["mchid"] = ''; 
     $params["nonce_str"]= 'suiji'.mt_rand(100,999); 
     $params["partner_trade_no"] = $trade_no;  
     $params["amount"]= $money;  
     $params["desc"]= $desc;  
     $params["openid"]= $openid;  
     $params["check_name"]= 'NO_CHECK'; 
     $params['spbill_create_ip'] = $_SERVER['SERVER_ADDR']; 
    
     //生成签名
     $str = 'amount='.$params["amount"].'check_name='.$params["check_name"].'desc='.$params["desc"].'mch_appid='.$params["mch_appid"].'mchid='.$params["mchid"].'nonce_str='.$params["nonce_str"].'openid='.$params["openid"].'partner_trade_no='.$params["partner_trade_no"].'spbill_create_ip='.$params['spbill_create_ip'].'key=商户密钥';
    
     //md5加密 转换成大写
     $sign = strtoupper(md5($str));
     //生成签名
     $params['sign'] = $sign;
    
     //构造XML数据
     $xmldata = $this->array_to_xml($params); //数组转XML
     $url='https://api.mch.weixin.qq.com/mmpaymkttransfers/prom otion/transfers';
    
     //发送post请求
     $res = $this->curl_post_ssl($url, $xmldata); //curl请求 
     if(!$res){
     return array('status'=>1, 
       'msg'=>"服务器连接失败" );
     }
    
     //付款结果分析
     $content = $this->xml_to_array($res); //xml转数组
     return $content;
     }
    
    /**
    * curl请求
    /
    public function curl_post_ssl($url, $xmldata,  $second=30,$aHeader=array()){
     $ch = curl_init();
     //超时时间
     curl_setopt($ch,CURLOPT_TIMEOUT,$second);
     curl_setopt($ch,CURLOPT_RETURNTRANSFER, 1);
     //这里设置代理,如果有的话
     //curl_setopt($ch,CURLOPT_PROXY, '10.206.30.98');
     //curl_setopt($ch,CURLOPT_PROXYPORT, 8080);
     curl_setopt($ch,CURLOPT_URL,$url);
     curl_setopt($ch,CURLOPT_SSL_VERIFYPEER,false);
     curl_setopt($ch,CURLOPT_SSL_VERIFYHOST,false);
    
     //默认格式为PEM,可以注释
     curl_setopt($ch,CURLOPT_SSLCERTTYPE,'PEM');
    //绝对地址可使用 dirname(__DIR__)打印,如果不是绝对地址会报 58 错误
     curl_setopt($ch,CURLOPT_SSLCERT,' 绝对地址/apiclient_cert.pem');
     curl_setopt($ch,CURLOPT_SSLKEYTYPE,'PEM');
     curl_setopt($ch,CURLOPT_SSLKEY,'绝对地址/apiclient_key.pem');
     if( count($aHeader) >= 1 ){
      curl_setopt($ch, CURLOPT_HTTPHEADER, $aHeader);
     }
     curl_setopt($ch,CURLOPT_POST, 1);
     curl_setopt($ch,CURLOPT_POSTFIELDS,$xmldata);
     $data = curl_exec($ch);
     if($data){
     curl_close($ch);
     return $data;
     }
     else {
     $error = curl_errno($ch);
     echo "call faild, errorCode:$error\n";
     die();
     curl_close($ch);
     return false;
     }
     }
    
    /**
     * array 转 xml
     * 用于生成签名
    */
    public function array_to_xml($arr){
     $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;
     }
    /**
    * xml 转化为array
    */
    public function xml_to_array($xml){
     //禁止引用外部xml实体
     libxml_disable_entity_loader(true);
     $values = json_decode(json_encode(simplexml_load_string($xml, 'SimpleXMLElement', LIBXML_NOCDATA)), true);
     return $values;
     }
    
    

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

    您可能感兴趣的文章:
    • PHP实现微信支付(jsapi支付)和退款(无需集成支付SDK)流程教程详解
    • PHP开发实现微信退款功能示例
    • PHP实现微信申请退款流程实例代码
    • php实现微信支付之退款功能
    • PHP实现微信退款功能
    • PHP实现微信申请退款功能
    • PHP实现QQ、微信和支付宝三合一收款码实例代码
    • PHP编程实现微信企业向用户付款的方法示例
    • php实现微信支付之企业付款
    • php微信公众号开发之微信企业付款给个人
    • PHP实现微信退款的方法示例
    上一篇:php实现构建排除当前元素的乘积数组方法
    下一篇:php实现小程序支付完整版
  • 相关文章
  • 

    © 2016-2020 巨人网络通讯 版权所有

    《增值电信业务经营许可证》 苏ICP备15040257号-8

    php实现微信企业付款到个人零钱功能 php,实现,微信,企业,付款,