zoukankan      html  css  js  c++  java
  • 微信公众号支付JSAPI网页,total_fee错误不正确,header重定向参数丢失,无法获取订单号和金额解决

    微信公众号支付官方demo错误,

    公众号支付只能用在微信里,也就是微信内部浏览器.

    1.到WxPayHubHelper.php文件 JsApi_pub()类下createOauthUrlForCode($redirectUrl)方法, 第二个参数
    改为 $urlObj["redirect_uri"] = urlencode($redirectUrl); //对$url变量进行url编码 不然header重定向时无法获取订单号和金额

    2.wx.jsapi.php这个文件在header重定向后,get,post等方式传递的参数就没有了,不过重定向的URL里面有个STATE,可以把数据放里面,就OK了.具体看代码.

    文件为wx.jsapi.php

    if (!isset($_GET['code']))  
    {  
        //触发微信返回code码  
        $url = $jsApi->createOauthUrlForCode(WxPayConf_pub::JS_API_CALL_URL);
        //重定向的URL里面有个STATE,把GET到的数据参数放在一个数组后转换成json格式的字符串            
        $state = json_encode(array(  
                   "bill_no" => $data["bill_no"],  //订单号           
                   "title" => $data["title"],  //标题
                   "return_url" => $data["return_url"],  //返回地址
                   "total_fee" => $data["total_fee"] //金额
                ));  
        //替换这个STATE            
        $url = str_replace("STATE", $state, $url);
        //重定向后会带上state参数,开发者可以填写a-zA-Z0-9的参数值,最多128字节    
        Header("Location: $url");  
    } else {  
        //获取code码,以获取openid  
        $code = $_GET['code'];  
        $jsApi->setCode($code);  
        $openid = $jsApi->getOpenId();  
        $state = $_GET['state'];  
        $state = str_replace("\", "", $state);  //去掉\要不解析不了
        $param = json_decode($state, true);  //解析
        $data["bill_no"] = $param['bill_no'];  //订单号
        $data["total_fee"] = $param['total_fee']; //金额
        $data["title"] = $param['title'];      //标题
        $data["return_url"] = $param['return_url'];      //返回地址
    }  
    $data["openid"] = $openid;
  • 相关阅读:
    PAT 乙级 -- 1011 -- A+B和C
    PAT 乙级 -- 1010 -- 一元多项式求导
    PAT 乙级 -- 1008 -- 数组元素循环右移问题
    PAT 乙级 -- 1009 -- 说反话
    python3.6执行AES加密及解密方法
    Python3.6 AES加密 pycrypto‎ 更新为 pycrypto‎demo | TypeError: Object type <class 'str'> cannot be passed to C code
    windows下python3.6安装pycryto or crypto or pycryptodome与使用
    chkconfig命令
    centos下安装redis
    selenium--基础学习
  • 原文地址:https://www.cnblogs.com/hiit/p/5997140.html
Copyright © 2011-2022 走看看