接上两篇,微信及支付宝支付请求后需要将二维码url展示并轮询订单查询接口,所以本篇就用jsp简单实现二维码的展示并轮询
二维码展示:
//导入qrcodejs
<script type="text/javascript" src="javascript/qrcode.min.js?r=<%=Math.random() %>"></script>
//创建二维码div
//使用qrcode对象展示二维码
var qrCode ;//二维码对象
function makeCode (id,qrUrl) {
if (qrCode){
qrCode.makeCode(qrUrl);
}else{
qrCode = new QRCode(document.getElementById(id), {
width : 207,
height : 206
});
}
qrCode.makeCode(qrUrl);
}
//将二维码清除
qrCode.clear();//置空
js异步轮询查询接口:
var xhr = '';
//ajax异步访问后端
function post(data, url, type) {
//请求参数、url、创建XMLHttpRequest
var data = data;
var postUrl = url;
var type = type;//类型: 1,订购下单 2,下单查询
if (window.XMLHttpRequest) xhr = new XMLHttpRequest();
// IE浏览器
else if (window.ActiveXObject) {
try {
xhr = new ActiveXObject("Msxml2.XMLHTTP");
} catch (e) {
try {
xhr = new ActiveXObject("Microsoft.XMLHTTP");
} catch (e) {
}
}
}
xhr.open('post', postUrl);
//设置header
xhr.setRequestHeader('Content-type', 'application/x-www-form-urlencoded');
xhr.send(data);
xhr.onreadystatechange = function () {
var jsonText = xhr.responseText;
if (xhr.readyState === 4 && (xhr.status === 200 || xhr.status === 304 || xhr.status === 500)) {
if ('' !== jsonText) {
if ('1' === type) {//支付下单
orderJsonParse(jsonText)
} else if ('2' === type) {//下单查询
var jsonP = eval("(" + jsonText + ")");
var result = jsonP.result;
var isKeep = jsonP.isKeep;//继续
if ('1' == isKeep){
if (result == 0) {//
clearInterval(inquire);
hiddenQR();
window.android.payFinish('1');
}
}else {
clearInterval(inquire);
if (result == 0) {//
hiddenQR();
window.android.payFinish('1');
} else {//显示主见面
hiddenQR();
//显示主界面
nowI = 0; //interface 主界面:0 其他
nowF = lastF;
$(nowF).style.visibility = "hidden";
$('f_' + nowF).style.visibility = "visible";
window.android.toast("订购失败");
window.android.payFinish('-1');
}
}
}
}
}
}
}
//解析下单返回的json
function orderJsonParse(orderjson) {
$("wait").style.visibility = "hidden";
var data = JSON.parse(orderjson);
if (data.result === '0') {
nowI = 2;
var qrCodeImg = data.qrCodeImg;
out_trade_no = data.outTrade;
nowF = 'tip3';
$(nowF).style.visibility = "visible";
//重新生成图片
$(nowF + '_1').src = "http://111.19.132.254:8088/joymusic_cs_gwb/imgerU?pic=http://111.19.132.254:8088/joymusic_cs_gwb/images/common/order/gwb/qr_bj_"+payType+".png&type=watermark&z=" + productName + "," + priceStr + "&s=22&x=435&y=250&x2=400&y2=320&rand=<%=Math.random()%>";
$(nowF + '_1').style.visibility = "visible";
//qrCode.clear();//置空
makeCode('qrCodeImg',qrCodeImg);
$('qrCodeImg').style.visibility = "visible";//将二维码div生成显示
$('ico').style.visibility = "visible";
//将num置零
num = 0;
//定时器 定时查询
setTimeout(checkOrder(),3000);
} else {
//下单失败
window.location = 'pay.jsp?k=0&userid=' + userId + '&platform=' + platform + '&ip=' + ip + '&terminalId=' + terminalId + '&token=' + token + '&songId=' + songId;
}
}
支付jsp完整代码:
<%@ page language="java" pageEncoding="UTF-8" %>
<%@ page import="org.apache.commons.lang3.StringUtils" %>
<%@ page import="com.joymusic.servlet.utils.wxPay.PayCommonUtil" %>
<%@ page import="java.text.SimpleDateFormat" %>
<%@ page import="java.util.*" %>
<%@ page import="org.json.JSONObject" %>
<%@ page import="com.joymusic.api.DB" %>
<%!
org.apache.log4j.Logger logger = org.apache.log4j.Logger.getLogger("mydebug");
//记录订购触发
private int setPay(String uid, int platform, String ip, String songId) {
int row = 0;
String sql = "INSERT INTO `user_pay_all` (ip,uid,ctype,result,songid,area,platform,createtime) VALUES ('" + ip + "','" + uid + "','apply','0','" + songId + "','86','" + platform + "',NOW())";
row = DB.update(sql);
return row;
}
//记录发起订购
private int setInitPay(String ip, String uid, int amount, String purchase, String area, String songId, int platform, String myOrderId,String payType) {
int row = 0;
String sname = "";
String sql0 = "SELECT CONCAT(cname,'-',artist) AS songInfo FROM entity_song WHERE id= " + songId;
List