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

本文针对微信公众号支付官方demo中的问题提供了解决方案。主要介绍了如何修改WxPayHubHelper.php文件中的createOauthUrlForCode方法及如何在wx.jsapi.php文件中正确处理重定向后的参数。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

微信公众号支付官方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;

 

转载于:https://www.cnblogs.com/hiit/p/5997140.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值