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

这个怎么感觉不用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);

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值