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

    企业400电话 网络优化推广 AI电话机器人 呼叫中心 网站建设 商标✡知产 微网小程序 电商运营 彩铃•短信 增值拓展业务
    php微信扫码支付 php公众号支付

    本文实例为大家分享了php微信扫码支付,公众号支付的具体代码,供大家参考,具体内容如下

    ?php
     
    # 微信统一下单接口
    $url = 'https://api.mch.weixin.qq.com/pay/unifiedorder';
     
     
    $param = [
     'appid' => '公众号id',
     'mch_id' => '商户id',
     'nonce_str' =>uniqid(),
     'sign_type' => 'MD5',
     'body' => 'test',
     'detail' => 'test detail',
     'out_trade_no' => date('Ymd').rand(10000,99999),
     'total_fee' => 1,
     'notify_url' => 'http://www.test.top/testpay/pay.php',
     'trade_type' =>'JSAPI',
    ];
     
     
    ksort( $param );
     
    $sign_str = urldecode(http_build_query( $param ));
     
     
    $sign_str .= 'key=商户密钥';
     
     
    //echo $sign_str;exit;
     
    $sign_str = md5( $sign_str );
     
     
    $param['sign'] = strtoupper( $sign_str );
     
    function CurlPost($url, $param = [], $is_post = 1, $timeout = 5 )
    {
     
     //初始化curl
     $curl = curl_init();
     
     // 设置请求的路径
     curl_setopt($curl, CURLOPT_URL, $url);
     
     if ($is_post == 1) {
      //设置POST提交
      curl_setopt($curl, CURLOPT_POST, 0);
     }
     
     //显示输出结果 1代表 把接口返回的结果当作一个字符串处理
     curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1);
     
     // 设置请求超时时间
     curl_setopt($curl, CURLOPT_TIMEOUT, $timeout);
     
     curl_setopt($curl, CURLOPT_SSL_VERIFYHOST, false);
     curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, false);
     
     
     if ($is_post == 1) {
      //提交数据 -- 设置post提交的数据
      if (is_array($param)) {
     
       //http_build_query
       curl_setopt($curl, CURLOPT_POSTFIELDS, http_build_query($param));
      } else {
       curl_setopt($curl, CURLOPT_POSTFIELDS, $param);
      }
     }
     
     //执行请求
     $data = $data_str = curl_exec($curl);
     //处理错误
     if ($error = curl_error($curl)) {
      $log_data = array(
       'url' => $url,
       'param' => $param,
       'error' => 'span style="color:red;font-weight: bold">' . $error . '/span>',
      );
     
      var_dump($log_data);
      exit;
     }
     
     # 关闭CURL
     curl_close($curl);
     
     
     //json数据转换为数组
     $data = json_decode($data, true);
     
     if (!is_array($data)) {
      $data = $data_str;
     }
     
     #调用玩接口之后写一个日志
     $log = [
      'url' => $url,
      'param' => $param,
      'response' => $data_str
     ];
     file_put_contents(__DIR__ . '/wechat.log', print_r($log, true), 8);
     
     return $data;
     
    }
    function arr2Xml( $arr ){
     
     $xml = 'xml version="1.0" encoding="UTF-8"> ';
     foreach( $arr as $key => $value ){
      if (is_numeric($value)){
       $xml.="".$key.">".$value."/".$key.">";
      }else{
       $xml.="".$key.">![CDATA[".$value."]]>/".$key.">";
      }
     
     }
     $xml .= '/xml>';
     return $xml;
    }
     
    $xml = arr2Xml( $param );
     
    $result = CurlPost( $url , arr2Xml($param) );
     
     
    $api_arr = json_decode( json_encode(simplexml_load_string( $result , 'SimpleXMLElement', LIBXML_NOCDATA) ), true );
     
    if( $api_arr['return_code'] == 'SUCCESS' ){
     
     include __DIR__ . '/phpqrcode.php';
     header('content-type:image/png');
     echo Qrcode::png( $api_arr['code_url'] , false , 'H' , 6 ,2 );
    }
    
    ?php
     
    #微信统一下单接口
    $url='https://api.mch.weixin.qq.com/pay/unifiedorder';
     
    $param=[
     #公众账号ID
     'appid'=>'****',
     'mch_id'=>'***',
     'nonce_str'=>uniqid(),
     'sign_type'=>'MD5',
     'body'=>'test',
     'detail'=>'detail',
     'out_trade_no'=>date('Ymd').rand(10000,99999),
     'total_fee'=>1,
     'spbill_create_ip'=>$_SERVER['SERVER_ADDR'],
     'notify_url'=>'http://****/test.php',
     'trade_type'=>'NATIVE',
    ];
    ksort($param);
     
    $sign_str=urldecode(http_build_query($param));
     
    $sign_str.='key=8934e7d15453e97507ef794cf7b0519d';
     
    $sign_str=md5($sign_str);
     
    $param['sign']=strtoupper($sign_str);
     
    //print_r($param);exit;
    function CurlPost($url, $param = [], $is_post = 1, $timeout = 5 )
    {
     //初始化curl
     $curl = curl_init();
     
     // 设置请求的路径
     curl_setopt($curl, CURLOPT_URL, $url);
     
     if ($is_post == 1) {
      //设置POST提交
      curl_setopt($curl, CURLOPT_POST, 0);
     }
     
     //显示输出结果 1代表 把接口返回的结果当作一个字符串处理
     curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1);
     
     // 设置请求超时时间
     curl_setopt($curl, CURLOPT_TIMEOUT, $timeout);
     
     curl_setopt($curl, CURLOPT_SSL_VERIFYHOST, false);
     curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, false);
     
     
     if ($is_post == 1) {
      //提交数据 -- 设置post提交的数据
      if (is_array($param)) {
     
       //http_build_query
       curl_setopt($curl, CURLOPT_POSTFIELDS, http_build_query($param));
      } else {
       curl_setopt($curl, CURLOPT_POSTFIELDS, $param);
      }
     }
     
     //执行请求
     $data = $data_str = curl_exec($curl);
     //处理错误
     if ($error = curl_error($curl)) {
      $log_data = array(
       'url' => $url,
       'param' => $param,
       'error' => 'span style="color:red;font-weight: bold">' . $error . '/span>',
      );
     
      var_dump($log_data);
      exit;
     }
     
     # 关闭CURL
     curl_close($curl);
     
     
     //json数据转换为数组
     $data = json_decode($data, true);
     
     if (!is_array($data)) {
      $data = $data_str;
     }
     
     #调用玩接口之后写一个日志
     $log = [
      'url' => $url,
      'param' => $param,
      'response' => $data_str
     ];
     file_put_contents(__DIR__ . '/wechat.log', print_r($log, true), 8);
     
     return $data;
     
    }
     
    function arrzxml($arr){
     $xml='xml version="1.0" encoding="UTF-8">';
     foreach($arr as $key=>$value){
      if(is_numeric($value)){
       $xml.="".$key.">".$value."/".$key.">";
      }else{
       $xml.="".$key.">![CDATA[".$value."]]>/".$key.">";
      }
     
     }
     $xml.='/xml>';
    // var_dump($xml);exit;
     return $xml;
     
    }
     
    $xml=arrzxml($param);
    $result=CurlPost($url,arrzxml($param));
    //echo 'pre/>';
    var_dump($result);
    exit;
    $api_arr=json_decode(simplexml_load_string($result,'SimpleXMLElement',LIBXML_NOCDATA),true);
    if($result['return_code']=='SUCCESS'){
     include __DIR__.'/phpqrcode.php';
     header('content-type:image/png');
     echo Qrcode::png($api_arr['code_url'],false,'H',6,2);
     
    }

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

    您可能感兴趣的文章:
    • PC端微信扫码支付成功之后自动跳转php版代码
    • php实现微信扫码支付
    • PHP 接入微信扫码支付总结(总结篇)
    • PHP 微信扫码支付源代码(推荐)
    • php实现微信扫码自动登陆与注册功能
    • thinkphp5实现微信扫码支付
    上一篇:PHP实现支持CURL字符串证书传输的方法
    下一篇:PHP随机数函数rand()与mt_rand()的讲解
  • 相关文章
  • 

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

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

    php微信扫码支付 php公众号支付 php,微信,扫码,支付,公众,