php微信支付使用ajax,接入微信公众号支付,选择支付方式后,只弹出“error’”(php)...
這個怎么感覺不用ajax去請求什么啊?WeixinJSBridge不是已經(jīng)封裝好公眾號支付的方法了嗎?如果你已經(jīng)在php里面完成統(tǒng)一下單過程了,那直接調(diào)用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是統(tǒng)一下單完成后拿到的結(jié)果,其實也就是預(yù)付單的prepay_id。統(tǒng)一下單過程可以在PHP里完成,可以自己按照微信文檔實現(xiàn),也可以直接用微信提供的PHP SDK:
// 統(tǒng)一下單
$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('微信支付調(diào)用失敗,請嘗試重新下單');
}
// 獲取JS參數(shù)
$jsApiPay = new JsApiPay();
$jsApiParamList = $jsApiPay->GetJsApiParameters($orderResult);
總結(jié)
以上是生活随笔為你收集整理的php微信支付使用ajax,接入微信公众号支付,选择支付方式后,只弹出“error’”(php)...的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 静态成员函数与静态成员变量
- 下一篇: Linux手机适配,nginx同时适配P