当前位置:首页 > PHP教程 > php高级应用 > 列表

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

发布:smiling 来源: PHP粉丝网  添加日期:2021-11-14 11:24:39 浏览: 评论:0 

这篇文章主要为大家详细介绍了php微信扫码支付,php公众号支付功能,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下。

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

  1. <?php 
  2.    
  3. # 微信统一下单接口 
  4. $url = 'https://api.mch.weixin.qq.com/pay/unifiedorder'
  5.    
  6.    
  7. $param = [ 
  8.  'appid' => '公众号id'
  9.  'mch_id' => '商户id'
  10.  'nonce_str' =>uniqid(), 
  11.  'sign_type' => 'MD5'
  12.  'body' => 'test'
  13.  'detail' => 'test detail'
  14.  'out_trade_no' => date('Ymd').rand(10000,99999), 
  15.  'total_fee' => 1, 
  16.  'notify_url' => 'http://www.test.top/testpay/pay.php'
  17.  'trade_type' =>'JSAPI'
  18. ]; 
  19.    
  20.    
  21. ksort( $param ); 
  22.    
  23. $sign_str = urldecode(http_build_query( $param )); 
  24.    
  25.    
  26. $sign_str .= '&key=商户密钥'
  27.    
  28.    
  29. //echo $sign_str;exit; 
  30.    
  31. $sign_str = md5( $sign_str ); 
  32.    
  33.    
  34. $param['sign'] = strtoupper$sign_str ); 
  35.    
  36. function CurlPost($url$param = [], $is_post = 1, $timeout = 5 ) 
  37.    
  38.  //初始化curl 
  39.  $curl = curl_init(); 
  40.    
  41.  // 设置请求的路径 
  42.  curl_setopt($curl, CURLOPT_URL, $url); 
  43.    
  44.  if ($is_post == 1) { 
  45.   //设置POST提交 
  46.   curl_setopt($curl, CURLOPT_POST, 0); 
  47.  } 
  48.    
  49.  //显示输出结果 1代表 把接口返回的结果当作一个字符串处理 
  50.  curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1); 
  51.    
  52.  // 设置请求超时时间 
  53.  curl_setopt($curl, CURLOPT_TIMEOUT, $timeout); 
  54.    
  55.  curl_setopt($curl, CURLOPT_SSL_VERIFYHOST, false); 
  56.  curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, false); 
  57.    
  58.    
  59.  if ($is_post == 1) { 
  60.   //提交数据 -- 设置post提交的数据 
  61.   if (is_array($param)) { 
  62.    
  63.    //http_build_query 
  64.    curl_setopt($curl, CURLOPT_POSTFIELDS, http_build_query($param)); 
  65.   } else { 
  66.    curl_setopt($curl, CURLOPT_POSTFIELDS, $param); 
  67.   } 
  68.  } 
  69.    
  70.  //执行请求 
  71.  $data = $data_str = curl_exec($curl); 
  72.  //处理错误 
  73.  if ($error = curl_error($curl)) { 
  74.   $log_data = array
  75.    'url' => $url
  76.    'param' => $param
  77.    'error' => '<span style="color:red;font-weight: bold">' . $error . '</span>'
  78.   ); 
  79.    
  80.   var_dump($log_data); 
  81.   exit
  82.  } 
  83.    
  84.  # 关闭CURL 
  85.  curl_close($curl); 
  86.    
  87.    
  88.  //json数据转换为数组 
  89.  $data = json_decode($data, true); 
  90.    
  91.  if (!is_array($data)) { 
  92.   $data = $data_str
  93.  } 
  94.    
  95.  #调用玩接口之后写一个日志 
  96.  $log = [ 
  97.   'url' => $url
  98.   'param' => $param
  99.   'response' => $data_str 
  100.  ]; 
  101.  file_put_contents(__DIR__ . '/wechat.log', print_r($log, true), 8); 
  102.    
  103.  return $data
  104.    
  105. function arr2Xml( $arr ){ 
  106.    
  107.  $xml = '<xml version="1.0" encoding="UTF-8"> '
  108.  foreach$arr as $key => $value ){ 
  109.   if (is_numeric($value)){ 
  110.    $xml.="<".$key.">".$value."</".$key.">"
  111.   }else
  112.    $xml.="<".$key."><![CDATA[".$value."]]></".$key.">"
  113.   } 
  114.    
  115.  } 
  116.  $xml .= '</xml>'
  117.  return $xml
  118.    
  119. $xml = arr2Xml( $param ); 
  120.    
  121. $result = CurlPost( $url , arr2Xml($param) ); 
  122.    
  123.    
  124. $api_arr = json_decode( json_encode(simplexml_load_string( $result , 'SimpleXMLElement', LIBXML_NOCDATA) ), true ); 
  125.    
  126. if$api_arr['return_code'] == 'SUCCESS' ){ 
  127.    
  128.  include __DIR__ . '/phpqrcode.php'
  129.  header('content-type:image/png'); 
  130.  echo Qrcode::png( $api_arr['code_url'] , false , 'H' , 6 ,2 ); 
  131.  
  132. <?php 
  133.    
  134. #微信统一下单接口 
  135. $url='https://api.mch.weixin.qq.com/pay/unifiedorder'
  136.    
  137. $param=[ 
  138.  #公众账号ID 
  139.  'appid'=>'****'
  140.  'mch_id'=>'***'
  141.  'nonce_str'=>uniqid(), 
  142.  'sign_type'=>'MD5'
  143.  'body'=>'test'
  144.  'detail'=>'detail'
  145.  'out_trade_no'=>date('Ymd').rand(10000,99999), 
  146.  'total_fee'=>1, 
  147.  'spbill_create_ip'=>$_SERVER['SERVER_ADDR'], 
  148.  'notify_url'=>'http://****/test.php'
  149.  'trade_type'=>'NATIVE'
  150. ]; 
  151. ksort($param); 
  152.    
  153. $sign_str=urldecode(http_build_query($param)); 
  154.    
  155. $sign_str.='&key=8934e7d15453e97507ef794cf7b0519d'
  156.    
  157. $sign_str=md5($sign_str); 
  158.    
  159. $param['sign']=strtoupper($sign_str); 
  160.    
  161. //print_r($param);exit; 
  162. function CurlPost($url$param = [], $is_post = 1, $timeout = 5 ) 
  163.  //初始化curl 
  164.  $curl = curl_init(); 
  165.    
  166.  // 设置请求的路径 
  167.  curl_setopt($curl, CURLOPT_URL, $url); 
  168.    
  169.  if ($is_post == 1) { 
  170.   //设置POST提交 
  171.   curl_setopt($curl, CURLOPT_POST, 0); 
  172.  } 
  173.    
  174.  //显示输出结果 1代表 把接口返回的结果当作一个字符串处理 
  175.  curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1); 
  176.    
  177.  // 设置请求超时时间 
  178.  curl_setopt($curl, CURLOPT_TIMEOUT, $timeout); 
  179.    
  180.  curl_setopt($curl, CURLOPT_SSL_VERIFYHOST, false); 
  181.  curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, false); 
  182.    
  183.    
  184.  if ($is_post == 1) { 
  185.   //提交数据 -- 设置post提交的数据 
  186.   if (is_array($param)) { 
  187.    
  188.    //http_build_query 
  189.    curl_setopt($curl, CURLOPT_POSTFIELDS, http_build_query($param)); 
  190.   } else { 
  191.    curl_setopt($curl, CURLOPT_POSTFIELDS, $param); 
  192.   } 
  193.  } 
  194.    
  195.  //执行请求 
  196.  $data = $data_str = curl_exec($curl); 
  197.  //处理错误 
  198.  if ($error = curl_error($curl)) { 
  199.   $log_data = array
  200.    'url' => $url
  201.    'param' => $param
  202.    'error' => '<span style="color:red;font-weight: bold">' . $error . '</span>'
  203.   ); 
  204.    
  205.   var_dump($log_data); 
  206.   exit
  207.  } 
  208.    
  209.  # 关闭CURL 
  210.  curl_close($curl); 
  211.    
  212.    
  213.  //json数据转换为数组 
  214.  $data = json_decode($data, true); 
  215.    
  216.  if (!is_array($data)) { 
  217.   $data = $data_str
  218.  } 
  219.    
  220.  #调用玩接口之后写一个日志 
  221.  $log = [ 
  222.   'url' => $url
  223.   'param' => $param
  224.   'response' => $data_str 
  225.  ]; 
  226.  file_put_contents(__DIR__ . '/wechat.log', print_r($log, true), 8); 
  227.    
  228.  return $data
  229.    
  230.    
  231. function arrzxml($arr){ 
  232.  $xml='<xml version="1.0" encoding="UTF-8">'
  233.  foreach($arr as $key=>$value){ 
  234.   if(is_numeric($value)){ 
  235.    $xml.="<".$key.">".$value."</".$key.">"
  236.   }else
  237.    $xml.="<".$key."><![CDATA[".$value."]]></".$key.">"
  238.   } 
  239.    
  240.  } 
  241.  $xml.='</xml>'
  242. // var_dump($xml);exit; 
  243.  return $xml
  244.    
  245.    
  246. $xml=arrzxml($param); 
  247. $result=CurlPost($url,arrzxml($param)); 
  248. //echo '<pre/>'; 
  249. var_dump($result); 
  250. exit
  251. $api_arr=json_decode(simplexml_load_string($result,'SimpleXMLElement',LIBXML_NOCDATA),true); 
  252. if($result['return_code']=='SUCCESS'){ 
  253.  include __DIR__.'/phpqrcode.php'
  254.  header('content-type:image/png'); 
  255.  echo Qrcode::png($api_arr['code_url'],false,'H',6,2); 
  256.    
  257. }

Tags: php微信扫码支付 php公众号支付

分享到: