const getpay = (price: string) => {
setInterval(() => {
axios
.get("http://localhost:3000/payprice/getpay", { params: { price } })
.then((res) => {
console.log(res);
if (res.data.code === 0) {
alert(res.data.msg);
} else {
switch (res.data.type) {
case "WAIT_BUYER_PAY":
return alert("交易创建,等待买家付款");
break;
case "TRADE_CLOSED":
return alert("未付款交易超时关闭,或支付完成后全额退款");
break;
case "TRADE_SUCCESS":
return alert("交易支付成功");
break;
default:
break;
}
}
});
}, 3000);
};
前端编写接口使用定时器支付通过返回的状态码确定支付状态
后端使用的是用MongoDB编写后端接口
async payprice(ctx) {
const { price } = ctx.request.query;
const bizContent = {
out_trade_no: price,
product_code: "FAST_INSTANT_TRADE_PAY",
subject: "abc",
body: "234",
total_amount: "0.01",
};
const result = alipaySdk.pageExec("alipay.trade.page.pay", {
method: "GET",
bizContent,
returnUrl: "http://127.0.0.1:5173/home/pay",
});
ctx.body = {
code: 200,
msg: "支付成功",
result,
};
}
async getpay(ctx) {
const { price } = ctx.request.query;
const bizContent = {
out_trade_no: price,
};
const result = alipaySdk.pageExec("alipay.trade.query", {
method: "GET",
bizContent,
returnUrl: "http://127.0.0.1:5173/home/pay",
});
let { data } = await axios.get(result);
console.log(data);
switch (data.alipay_trade_query_response.code) {
case "10000":
switch (data.alipay_trade_query_response.trade_status) {
case "WAIT_BUYER_PAY":
return (ctx.body = {
code: 1,
type: "WAIT_BUYER_PAY",
msg: "交易创建,等待买家付款",
});
break;
case "TRADE_CLOSED":
return (ctx.body = {
code: 1,
type: "TRADE_CLOSED",
msg: "未付款交易超时关闭,或支付完成后全额退款",
});
break;
case "TRADE_SUCCESS":
return (ctx.body = {
code: 1,
type: "TRADE_SUCCESS",
msg: "交易支付成功",
});
break;
case "TRADE_FINISHED":
return (ctx.body = {
code: 1,
type: "TRADE_FINISHED",
msg: "交易结束,不可退款",
});
break;
default:
ctx.body={
code: 0,
msg: "交易失败",
}
break;
}
break;
default:
ctx.body={
code: 0,
msg: "交易创件,等待买家付款",
}
break;
}
}