微信h5支付

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了微信h5支付相关的知识,希望对你有一定的参考价值。

<?php



    const APPID = ‘‘;
    //受理商ID,身份标识
    const MCHID = ‘‘;
    //商户支付密钥Key。审核通过后,在微信发送的邮件中查看
    const KEY = ‘‘;


    // echo get_client_ip();
    // die;

    $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‘]=‘117.23.83.120‘;
    $data[‘notify_url‘]=‘www.guomeng.group/index/way_login/pay‘;        //外网地址
    $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(‘http://baidu.com‘);
    $code_url=$code_url.‘&‘.$add_url;

    echo ‘<a href="‘.$code_url.‘">跳转</a>‘;
    die;

    //header( "Location: $code_url" ); 



    //生成签名
    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] : ‘‘;
    }

 

以上是关于微信h5支付的主要内容,如果未能解决你的问题,请参考以下文章

企业号微信支付 公众号支付 H5调起支付API示例代码 JSSDK C# .NET

微信支付H5支付

php微信h5支付

微信h5支付和jsapi支付的区别

如何申请微信H5支付

基于H5的微信支付开发详解