接入微信公众号支付,选择支付方式后,只弹出“error’”(php)

发布于 2022-09-05 07:32:14 字数 449 浏览 19 评论 0

下订单的时候,到了选择支付方法,选择了微信公众号支付,点击按钮,弹出'error',没有其他信息。

ajax请求的error捕捉错误

    error: function(xhr, ajaxOptions, thrownError) {
        alert(thrownError + "\r\n" + xhr.statusText + "\r\n" + xhr.responseText);
    }
    

            

之前其他的ajax返回里如果有error信息,都会有想详细提示错误原因以及位置,这次只弹出个error。
分析一下,如果是微信支付方返回的任何错误,都会有一些相应的提示,查找了下,并没有返回'error'这样得情况。如果是我们的错误,在PC浏览器、手机下载浏览器使用其他支付方式并不会报错,一路顺畅。

麻烦各位,有什么看法吗..

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

吃兔兔 2022-09-12 07:32:14

这个怎么感觉不用ajax去请求什么啊?WeixinJSBridge不是已经封装好公众号支付的方法了吗?如果你已经在php里面完成统一下单过程了,那直接调用WeixinJSBridge的支付方法就行了:

var jsApiParamObj = <?php echo $jsApiParamList; ?>;

payBill: function () {
    var _this = this;
    if (typeof WeixinJSBridge === "undefined") {
        alert("页面尚未加载完毕请稍后再试");
    } else {
        WeixinJSBridge.invoke("getBrandWCPayRequest", jsApiParamObj, function (retObj) {
            if(retObj["err_msg"] === "get_brand_wcpay_request:ok" ) {
                self.location.href = "paySuccess.php?payMode=wechat&amount=" + _this.totalAmount;
            } else {
                alert("支付遇到问题,请稍后再试");
            }
        });
    }
}

其中jsApiParamObj是统一下单完成后拿到的结果,其实也就是预付单的prepay_id。统一下单过程可以在PHP里完成,可以自己按照微信文档实现,也可以直接用微信提供的PHP SDK:

// 统一下单
$unifiedOrder = new WxPayUnifiedOrder();

$unifiedOrder->SetBody($pageTitle . '-' . $productName);
$unifiedOrder->SetOut_trade_no($outTradeNo);
$unifiedOrder->SetTotal_fee(floatval($totalFee) * 100);
$unifiedOrder->SetNotify_url(WECHAT_H5_NOTIFY_URL);
$unifiedOrder->SetTrade_type("JSAPI");
$unifiedOrder->SetOpenid($openId);
$startTime = time();
$unifiedOrder->SetTime_start(date('YmdHis', $startTime));
$unifiedOrder->SetTime_expire(date('YmdHis', $startTime + 300));

$orderResult = WxPayApi::unifiedOrder($unifiedOrder);

if (!isset($orderResult['result_code']) || !isset($orderResult['return_code']) ||
    $orderResult['result_code'] != 'SUCCESS' || $orderResult['return_code'] != 'SUCCESS') {
    exit('微信支付调用失败,请尝试重新下单');
}

// 获取JS参数
$jsApiPay = new JsApiPay();
$jsApiParamList = $jsApiPay->GetJsApiParameters($orderResult);
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文