公众号支付成功后执行ajax,真香,微信公众号支付完整流程案例
/**
* 获取授权链接,首先调用此方法
* @return
*/
@GetMapping(value= "getOauthUrl")
public void getOauthUrl (HttpServletResponse response)throws IOException{
String url= "/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;
} 演示
网址:,查看更多
公众号支付成功后执行ajax,真香,微信公众号支付完整流程案例
/**
* 获取授权链接,首先调用此方法
* @return
*/
@GetMapping(value= "getOauthUrl")
public void getOauthUrl (HttpServletResponse response)throws IOException{
String url= "/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;
} 演示
网址:,查看更多