php微信扫码支付 php公众号支付
发布:smiling 来源: PHP粉丝网 添加日期:2021-11-14 11:24:39 浏览: 评论:0
这篇文章主要为大家详细介绍了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);
- }
Tags: php微信扫码支付 php公众号支付
推荐文章
热门文章
最新评论文章
- 写给考虑创业的年轻程序员(10)
- PHP新手上路(一)(7)
- 惹恼程序员的十件事(5)
- PHP邮件发送例子,已测试成功(5)
- 致初学者:PHP比ASP优秀的七个理由(4)
- PHP会被淘汰吗?(4)
- PHP新手上路(四)(4)
- 如何去学习PHP?(2)
- 简单入门级php分页代码(2)
- php中邮箱email 电话等格式的验证(2)