mirror of
https://gitee.com/liuxioabin/fengketrade.git
synced 2026-04-20 05:33:18 +08:00
up
This commit is contained in:
parent
7df1bbdf19
commit
c5185c9722
@ -211,6 +211,7 @@
|
|||||||
|
|
||||||
<button class="btn" onclick="refreshEnv()">🔄 刷新环境检测</button>
|
<button class="btn" onclick="refreshEnv()">🔄 刷新环境检测</button>
|
||||||
<button class="btn" onclick="decryptCcbParam()">🔓 解密建行参数</button>
|
<button class="btn" onclick="decryptCcbParam()">🔓 解密建行参数</button>
|
||||||
|
<button class="btn btn-success" onclick="testLogin()">🔐 测试登录入库</button>
|
||||||
<button class="btn" onclick="getUserInfo()">获取建行用户信息</button>
|
<button class="btn" onclick="getUserInfo()">获取建行用户信息</button>
|
||||||
<button class="btn btn-secondary" onclick="doAutoLogin()">执行自动登录</button>
|
<button class="btn btn-secondary" onclick="doAutoLogin()">执行自动登录</button>
|
||||||
<button class="btn btn-success" onclick="testPayment()">测试支付功能</button>
|
<button class="btn btn-success" onclick="testPayment()">测试支付功能</button>
|
||||||
@ -397,7 +398,19 @@
|
|||||||
|
|
||||||
// 测试支付功能
|
// 测试支付功能
|
||||||
function testPayment() {
|
function testPayment() {
|
||||||
// 这里需要先调用后端接口生成支付串
|
// 检查是否已登录
|
||||||
|
var token = localStorage.getItem('ccb_token');
|
||||||
|
if (!token) {
|
||||||
|
showResult('错误:未登录\n\n请先执行"测试登录入库"获取 Token');
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
// 检查是否在建行 App 内
|
||||||
|
if (!CcbLifeBridge.isInCcbApp()) {
|
||||||
|
showResult('警告:不在建行生活 App 内\n\n支付功能需要在建行 App 中才能调起');
|
||||||
|
}
|
||||||
|
|
||||||
|
// 输入订单ID
|
||||||
var orderId = prompt('请输入订单ID(测试用):', '1');
|
var orderId = prompt('请输入订单ID(测试用):', '1');
|
||||||
|
|
||||||
if (!orderId) {
|
if (!orderId) {
|
||||||
@ -405,13 +418,14 @@
|
|||||||
}
|
}
|
||||||
|
|
||||||
showLoading(true);
|
showLoading(true);
|
||||||
|
showResult('正在生成支付串...\n1. 验证订单\n2. 生成支付串\n3. 调起建行支付');
|
||||||
|
|
||||||
// 模拟调用后端生成支付串
|
// 调用后端生成支付串
|
||||||
fetch('/addons/shopro/ccbpayment/createPayment', {
|
fetch('/addons/shopro/ccbpayment/createPayment', {
|
||||||
method: 'POST',
|
method: 'POST',
|
||||||
headers: {
|
headers: {
|
||||||
'Content-Type': 'application/json',
|
'Content-Type': 'application/json',
|
||||||
'token': localStorage.getItem('ccb_token') || ''
|
'token': token
|
||||||
},
|
},
|
||||||
body: JSON.stringify({
|
body: JSON.stringify({
|
||||||
order_id: orderId
|
order_id: orderId
|
||||||
@ -422,23 +436,131 @@
|
|||||||
showLoading(false);
|
showLoading(false);
|
||||||
|
|
||||||
if (data.code === 1) {
|
if (data.code === 1) {
|
||||||
// 调起支付
|
var paymentData = data.data;
|
||||||
CcbLifeBridge.payment({
|
|
||||||
payment_string: data.data.payment_string
|
showResult('✅ 支付串生成成功!\n\n' +
|
||||||
}, function(result) {
|
'订单编号:' + paymentData.order_sn + '\n' +
|
||||||
if (result.success) {
|
'支付流水号:' + paymentData.pay_flow_id + '\n' +
|
||||||
showResult('支付调起成功,请在建行 App 内完成支付');
|
'支付金额:¥' + paymentData.amount + '\n' +
|
||||||
} else {
|
'MAC 签名:' + paymentData.mac.substr(0, 20) + '...\n\n' +
|
||||||
showResult('支付调起失败:' + result.error);
|
'支付串:\n' + paymentData.payment_string.substr(0, 100) + '...\n\n' +
|
||||||
}
|
'正在调起支付...'
|
||||||
});
|
);
|
||||||
|
|
||||||
|
// 调起建行支付
|
||||||
|
if (CcbLifeBridge.isInCcbApp()) {
|
||||||
|
CcbLifeBridge.payment({
|
||||||
|
payment_string: paymentData.payment_string
|
||||||
|
}, function(result) {
|
||||||
|
if (result.success) {
|
||||||
|
showResult('✅ 支付调起成功!\n\n请在建行 App 内完成支付\n\n' +
|
||||||
|
'支付完成后,页面会自动跳转');
|
||||||
|
|
||||||
|
// 轮询查询订单状态
|
||||||
|
pollPaymentStatus(orderId);
|
||||||
|
} else {
|
||||||
|
showResult('❌ 支付调起失败:' + result.error);
|
||||||
|
}
|
||||||
|
});
|
||||||
|
} else {
|
||||||
|
showResult('⚠️ 不在建行 App 内,无法调起支付\n\n' +
|
||||||
|
'但支付串已生成,可以手动测试:\n\n' +
|
||||||
|
'支付 URL:\n' + paymentData.payment_url
|
||||||
|
);
|
||||||
|
}
|
||||||
} else {
|
} else {
|
||||||
showResult('生成支付串失败:' + data.msg);
|
showResult('❌ 生成支付串失败:' + data.msg);
|
||||||
}
|
}
|
||||||
})
|
})
|
||||||
.catch(error => {
|
.catch(error => {
|
||||||
showLoading(false);
|
showLoading(false);
|
||||||
showResult('请求失败:' + error.message);
|
showResult('❌ 请求失败:' + error.message);
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
// 轮询查询支付状态
|
||||||
|
function pollPaymentStatus(orderId) {
|
||||||
|
var token = localStorage.getItem('ccb_token');
|
||||||
|
var pollCount = 0;
|
||||||
|
var maxPoll = 60; // 最多轮询60次(5分钟)
|
||||||
|
|
||||||
|
var pollInterval = setInterval(function() {
|
||||||
|
pollCount++;
|
||||||
|
|
||||||
|
fetch('/addons/shopro/order/detail?id=' + orderId, {
|
||||||
|
method: 'GET',
|
||||||
|
headers: {
|
||||||
|
'token': token
|
||||||
|
}
|
||||||
|
})
|
||||||
|
.then(response => response.json())
|
||||||
|
.then(data => {
|
||||||
|
if (data.code === 1) {
|
||||||
|
var order = data.data;
|
||||||
|
|
||||||
|
if (order.status === 'paid' || order.status === 'completed') {
|
||||||
|
clearInterval(pollInterval);
|
||||||
|
showResult('✅ 支付成功!\n\n' +
|
||||||
|
'订单编号:' + order.order_sn + '\n' +
|
||||||
|
'订单状态:' + order.status + '\n' +
|
||||||
|
'支付时间:' + new Date(order.paid_time).toLocaleString()
|
||||||
|
);
|
||||||
|
} else if (pollCount >= maxPoll) {
|
||||||
|
clearInterval(pollInterval);
|
||||||
|
showResult('⏱ 查询超时\n\n请手动刷新订单状态');
|
||||||
|
}
|
||||||
|
}
|
||||||
|
})
|
||||||
|
.catch(error => {
|
||||||
|
console.error('轮询订单状态失败:', error);
|
||||||
|
});
|
||||||
|
|
||||||
|
}, 5000); // 每5秒查询一次
|
||||||
|
}
|
||||||
|
|
||||||
|
// 测试登录入库
|
||||||
|
function testLogin() {
|
||||||
|
var params = CcbLifeBridge.getUrlParams();
|
||||||
|
|
||||||
|
if (!params.ccbParamSJ) {
|
||||||
|
showResult('错误:URL 中没有 ccbParamSJ 参数\n\n请从建行生活 App 跳转到此页面,或在 URL 中添加 ccbParamSJ 参数');
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
showLoading(true);
|
||||||
|
showResult('正在登录...\n1. 解密建行参数\n2. 验证用户信息\n3. 创建/更新用户\n4. 生成登录 Token');
|
||||||
|
|
||||||
|
// 调用后端登录接口
|
||||||
|
fetch('/addons/shopro/ccblife/login?ccbParamSJ=' + encodeURIComponent(params.ccbParamSJ), {
|
||||||
|
method: 'GET'
|
||||||
|
})
|
||||||
|
.then(response => response.json())
|
||||||
|
.then(data => {
|
||||||
|
showLoading(false);
|
||||||
|
|
||||||
|
if (data.code === 1) {
|
||||||
|
var loginData = data.data;
|
||||||
|
|
||||||
|
// 保存 token 和用户信息
|
||||||
|
localStorage.setItem('ccb_token', loginData.token);
|
||||||
|
localStorage.setItem('ccb_user_info', JSON.stringify(loginData.user_info));
|
||||||
|
|
||||||
|
// 更新页面显示
|
||||||
|
updateLoginStatus({ userInfo: loginData.user_info });
|
||||||
|
|
||||||
|
showResult('✅ 登录成功!\n\n' +
|
||||||
|
'用户信息:\n' + JSON.stringify(loginData.user_info, null, 2) + '\n\n' +
|
||||||
|
'Token:' + loginData.token.substr(0, 20) + '...\n\n' +
|
||||||
|
'是否新用户:' + (loginData.user_info.is_new ? '是' : '否') + '\n\n' +
|
||||||
|
'跳转URL:' + loginData.redirect_url
|
||||||
|
);
|
||||||
|
} else {
|
||||||
|
showResult('❌ 登录失败:' + data.msg);
|
||||||
|
}
|
||||||
|
})
|
||||||
|
.catch(error => {
|
||||||
|
showLoading(false);
|
||||||
|
showResult('❌ 请求失败:' + error.message);
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user