• 微信h5支付


    <?php
        
        const APPID = '';
    
        const MCHID = '';
    
        const KEY = '';
        
        const JS_API_CALL_URL = '';
    
                                    
        $ip=get_client_ip();$data['appid']=APPID;                                           //微信分配的公众账号ID
        $data['mch_id']=MCHID;                                          //微信支付分配的商户号
        $data['time_stamp']=time();                                     //系统当前时间,定义规则详见时间戳
        $data['nonce_str']=uniqid();                                    //随机字符串,不长于32位。推荐随机数生成算法
        $data['out_trade_no']=time().rand('1111','9999');               //商户定义的商品id 或者订单号
        $data['body']='龙测试';                                         //商品信息
        $data['trade_type']='MWEB';                                     //交易类型
        $data['total_fee']=1;                                           //支付金额          单位分
        $data['spbill_create_ip']=$ip;                                  //本机ip不能使用 127.0.0.1      未正确配置会出现图1
        $data['notify_url']= JS_API_CALL_URL.'/Test_1.php';            //支付配置中的h5支付域名
        $data['scene_info']='{"h5_info": {"type":"Wap","wap_url": "https://pay.qq.com","wap_name": "腾讯充值"}}';
        
        
              
        $sign=createSign($data);               
        $data['sign']=$sign;                                 //签名
        $data=dataToXml($data);                               //转xml
        $request=request($url='https://api.mch.weixin.qq.com/pay/unifiedorder',$https=true,$method='post',$data);               //将数据发送到微信服务器
    
        $obj=simplexml_load_string($request);
        $code_url=$obj->mweb_url;
        // $add_url=urlencode(JS_API_CALL_URL.'/Test_1.php');                  如需返回至指定页面,则可以在MWEB_URL后拼接上redirect_url参数,来指定回调页面
        // $code_url=$code_url.'&'.$add_url;
    
        echo "<script>window.location.href='$code_url';</script>";
         //header( "Location: $code_url" );         这种方法跳转会缺少  referer     会出现图2             



    如果referer错误会出现图3
    //HTTP Referer是header的一部分,当浏览器向web服务器发送请求的时候,一般会带上Referer,告诉服务器我是从哪个页面链接过来的,服务器基此可以获得一些信息用于处理。 //生成签名 function createSign($data){ $string=''; ksort($data); foreach($data as $key=>$value){ $string.="{$key}={$value}&"; } $string.='key='.KEY; return strToUpper(md5($string)); } //转xml function dataToXml($data){ $xml='<xml>'; foreach($data as $key=>$value){ $xml.="<{$key}>{$value}</{$key}>"; } $xml.='</xml>'; return $xml; } //curl发送请求 function request($url,$https,$method,$data){ $ch = curl_init($url); curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); if($https==true){ curl_setopt($ch, CURLOPT_SSL_VERIFYPEER,false); curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, false); } if($method=='post'){ curl_setopt($ch, CURLOPT_POST, 1); curl_setopt($ch, CURLOPT_POSTFIELDS,$data); } $result = curl_exec($ch); curl_close($ch); return $result; } function get_client_ip() { if(getenv('HTTP_CLIENT_IP') && strcasecmp(getenv('HTTP_CLIENT_IP'), 'unknown')) { $ip = getenv('HTTP_CLIENT_IP'); } elseif(getenv('HTTP_X_FORWARDED_FOR') && strcasecmp(getenv('HTTP_X_FORWARDED_FOR'), 'unknown')) { $ip = getenv('HTTP_X_FORWARDED_FOR'); } elseif(getenv('REMOTE_ADDR') && strcasecmp(getenv('REMOTE_ADDR'), 'unknown')) { $ip = getenv('REMOTE_ADDR'); } elseif(isset($_SERVER['REMOTE_ADDR']) && $_SERVER['REMOTE_ADDR'] && strcasecmp($_SERVER['REMOTE_ADDR'], 'unknown')) { $ip = $_SERVER['REMOTE_ADDR']; } return preg_match ( '/[d.]{7,15}/', $ip, $matches ) ? $matches [0] : ''; }

     

  • 相关阅读:
    Ellipsis 的升级版 line-clamp
    Angular7里面实现 debounce search
    闭包、迭代器
    Day10 函数的进阶
    函数
    文件的操作
    Day 07基础数据补充、set、深浅拷贝
    小数据池,编码和解码
    字典
    列表、元祖的操作
  • 原文地址:https://www.cnblogs.com/mengor/p/9200711.html
Copyright © 2020-2023  润新知