实现了真实的支付验证流程:
用户下单 → 显示二维码 → 用户扫码支付 → 轮询验证支付状态 → 支付成功 → 创建订单 → 清空购物车
↓
支付失败 → 提示用户
启动后端服务:
mvn spring-boot:run
打开主页面:
oederFoodVue/index.html
添加菜品到购物车(满¥20起送)
点击"去结算"按钮,会显示支付二维码
复制二维码中的支付链接,在新标签页打开 payment-simulator.html,并在URL中添加支付信息:
payment-simulator.html?paymentId=PAY1234567890&amount=25.00
在模拟器页面点击"支付成功"或"支付失败"按钮
主页面会自动检测到支付状态并创建订单
使用Postman或curl调用模拟支付接口:
# 模拟支付成功
curl -X POST "http://localhost:8086/api/payment/simulate?paymentId=PAY1234567890&status=success"
# 模拟支付失败
curl -X POST "http://localhost:8086/api/payment/simulate?paymentId=PAY1234567890&status=failed"
GET /api/payment/verifypaymentId - 支付单号返回:
{
"code": 200,
"data": {
"paymentId": "PAY1234567890",
"status": "success",
"paid": true,
"failed": false
}
}
POST /api/payment/simulatepaymentId - 支付单号status - 支付状态(success/failed)返回:
{
"code": 200,
"data": "支付模拟成功"
}
POST /api/orders请求体:
{
"items": [
{"dishId": "1", "quantity": 2}
],
"totalAmount": 20.00,
"deliveryFee": 5.00,
"finalAmount": 25.00,
"remark": ""
}
pending: 待支付(继续轮询)success: 支付成功(创建订单)failed: 支付失败(提示用户)checkout(): 准备订单数据,显示二维码showPaymentQRCode(): 生成二维码,开始轮询startPaymentPolling(): 轮询支付状态createOrderAfterPayment(): 支付成功后创建订单showPaymentSuccess(): 显示支付成功showPaymentFailure(): 显示支付失败在实际生产环境中,需要:
集成真实支付平台(微信支付/支付宝)
实现支付回调接口
使用Redis存储支付状态
添加安全措施