公众号支付成功后执行ajax,真香,微信公众号支付完整流程案例

/**

* 获取授权链接,首先调用此方法

* @return

*/

@GetMapping(value= "getOauthUrl")

public void getOauthUrl (HttpServletResponse response)throws IOException{

String url= "https://xxx.xxxx.vip/pay/weiXin.html?a=1";

String oauthUrl = WxPay.getWxOauthUrl( null, url);

response.sendRedirect(oauthUrl);

}

/**

* 根据 code 获取 openId

* @param code

* @return

*/

@PostMapping(value= "getWxOauthInfo")

public Result getWxOauthInfo (String code){

WxOauthInfo wxOauthInfo = WxPay.getWxOauthInfo(code);

returnResult.ok(wxOauthInfo);

}

/**

* 下单并获取请求参数

* @return

*/

@PostMapping(value= "jsApiPay")

public Result jsApiPay (Product product){

returnwxPayService.jsApiPay(product);

}

前台逻辑:

< th:inline="none">

var order = {};

var openId;

$( function{

var code = GetRequest['code'];

$.ajax({

url:"/pay/getWxOauthInfo",

type: "POST",

data: {'code':code},

success: function ( result){

openId = result.msg.openId;

}

});

});

function callPay{

$.ajax({

url:"/pay/jsApiPay",

data: {

productId:1,

body:"胡列娜精美手办",

totalFee:'1',

openId:openId

},

type: "POST",

success: function ( result){

if(result.code==0){

order = JSON.parse(result.msg);

order.openId = openId;

pay;

}

}

});

}

function pay{

if (typeof WeixinJSBridge == "undefined"){

if( document.addEventListener ){

document.addEventListener('WeixinJSBridgeReady', onBridgeReady, false);

}else if (document.attachEvent){

document.attachEvent('WeixinJSBridgeReady', onBridgeReady);

document.attachEvent('onWeixinJSBridgeReady', onBridgeReady);

}

}else{

onBridgeReady;

}

}

function onBridgeReady{

WeixinJSBridge.invoke('getBrandWCPayRequest',order, function( res){

//使用以上方式判断前端返回,微信团队郑重提示:res.err_msg将在用户支付成功后返回ok,但并不保证它绝对可靠。

if(res.err_msg == "get_brand_wcpay_request:ok"){

//微信 自带 支付成功效果

}else if(res.err_msg == "get_brand_wcpay_request:cancel"){

alert("用户取消支付!");

}else if(res.err_msg == "get_brand_wcpay_request:fail"){

alert("支付失败!");

}

})

}

function GetRequest{

var url = location.search;

var theRequest = new Object;

if (url.indexOf("?") != -1) {

var str = url.substr(1);

strs = str.split("&");

for(var i = 0; i < strs.length; i ++) {

theRequest[strs[i].split("=")[0]]=unescape(strs[i].split("=")[1]);

}

}

return theRequest;

} 演示

网址:https://pay.cloudbed.vip返回搜狐,查看更多

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值