174 lines
5.8 KiB
JavaScript
174 lines
5.8 KiB
JavaScript
|
|
import { config } from '../../config/index';
|
|||
|
|
|
|||
|
|
Page({
|
|||
|
|
data: {
|
|||
|
|
testResult: ''
|
|||
|
|
},
|
|||
|
|
|
|||
|
|
// 测试正确的支付参数(标准格式)
|
|||
|
|
testWechatPayment() {
|
|||
|
|
const paymentParams = {
|
|||
|
|
timeStamp: String(Math.floor(Date.now() / 1000)),
|
|||
|
|
nonceStr: 'test_nonce_str_' + Math.random().toString(36).substr(2, 15),
|
|||
|
|
package: 'prepay_id=wx_test_prepay_id_123456789',
|
|||
|
|
signType: 'MD5',
|
|||
|
|
paySign: 'test_pay_sign_123456789'
|
|||
|
|
};
|
|||
|
|
|
|||
|
|
console.log('测试标准支付参数:', paymentParams);
|
|||
|
|
console.log('参数详情:');
|
|||
|
|
console.log('- timeStamp:', paymentParams.timeStamp, '(类型:', typeof paymentParams.timeStamp, ')');
|
|||
|
|
console.log('- nonceStr:', paymentParams.nonceStr, '(长度:', paymentParams.nonceStr.length, ')');
|
|||
|
|
console.log('- package:', paymentParams.package, '(格式检查: prepay_id=前缀)');
|
|||
|
|
console.log('- signType:', paymentParams.signType);
|
|||
|
|
console.log('- paySign:', paymentParams.paySign, '(长度:', paymentParams.paySign.length, ')');
|
|||
|
|
|
|||
|
|
wx.requestPayment({
|
|||
|
|
...paymentParams,
|
|||
|
|
success: (res) => {
|
|||
|
|
console.log('支付成功:', res);
|
|||
|
|
this.setData({
|
|||
|
|
testResult: '支付成功: ' + JSON.stringify(res)
|
|||
|
|
});
|
|||
|
|
},
|
|||
|
|
fail: (err) => {
|
|||
|
|
console.log('支付失败:', err);
|
|||
|
|
console.log('错误详情:');
|
|||
|
|
console.log('- errMsg:', err.errMsg);
|
|||
|
|
console.log('- errCode:', err.errCode);
|
|||
|
|
this.setData({
|
|||
|
|
testResult: '支付失败: ' + JSON.stringify(err) + '\n错误信息: ' + err.errMsg
|
|||
|
|
});
|
|||
|
|
}
|
|||
|
|
});
|
|||
|
|
},
|
|||
|
|
|
|||
|
|
// 测试错误的package格式(不含prepay_id前缀)
|
|||
|
|
testWrongPackageFormat() {
|
|||
|
|
const paymentParams = {
|
|||
|
|
timeStamp: String(Math.floor(Date.now() / 1000)),
|
|||
|
|
nonceStr: 'test_nonce_str_' + Math.random().toString(36).substr(2, 15),
|
|||
|
|
package: 'wx_test_prepay_id_123456789', // 错误格式:缺少prepay_id=前缀
|
|||
|
|
signType: 'MD5',
|
|||
|
|
paySign: 'test_pay_sign_123456789'
|
|||
|
|
};
|
|||
|
|
|
|||
|
|
console.log('测试错误package格式:', paymentParams);
|
|||
|
|
|
|||
|
|
wx.requestPayment({
|
|||
|
|
...paymentParams,
|
|||
|
|
success: (res) => {
|
|||
|
|
console.log('支付成功:', res);
|
|||
|
|
this.setData({
|
|||
|
|
testResult: '支付成功: ' + JSON.stringify(res)
|
|||
|
|
});
|
|||
|
|
},
|
|||
|
|
fail: (err) => {
|
|||
|
|
console.log('支付失败:', err);
|
|||
|
|
this.setData({
|
|||
|
|
testResult: '支付失败: ' + JSON.stringify(err)
|
|||
|
|
});
|
|||
|
|
}
|
|||
|
|
});
|
|||
|
|
},
|
|||
|
|
|
|||
|
|
// 测试空的package参数
|
|||
|
|
testEmptyPackage() {
|
|||
|
|
const paymentParams = {
|
|||
|
|
timeStamp: String(Math.floor(Date.now() / 1000)),
|
|||
|
|
nonceStr: 'test_nonce_str_' + Math.random().toString(36).substr(2, 15),
|
|||
|
|
package: '', // 空的package
|
|||
|
|
signType: 'MD5',
|
|||
|
|
paySign: 'test_pay_sign_123456789'
|
|||
|
|
};
|
|||
|
|
|
|||
|
|
console.log('测试空package参数:', paymentParams);
|
|||
|
|
|
|||
|
|
wx.requestPayment({
|
|||
|
|
...paymentParams,
|
|||
|
|
success: (res) => {
|
|||
|
|
console.log('支付成功:', res);
|
|||
|
|
this.setData({
|
|||
|
|
testResult: '支付成功: ' + JSON.stringify(res)
|
|||
|
|
});
|
|||
|
|
},
|
|||
|
|
fail: (err) => {
|
|||
|
|
console.log('支付失败:', err);
|
|||
|
|
this.setData({
|
|||
|
|
testResult: '支付失败: ' + JSON.stringify(err)
|
|||
|
|
});
|
|||
|
|
}
|
|||
|
|
});
|
|||
|
|
},
|
|||
|
|
|
|||
|
|
// 测试真实的后端API调用
|
|||
|
|
testRealPaymentAPI() {
|
|||
|
|
console.log('开始测试真实后端API...');
|
|||
|
|
wx.request({
|
|||
|
|
url: `${config.apiBase}/payment/create`,
|
|||
|
|
method: 'POST',
|
|||
|
|
header: {
|
|||
|
|
'Content-Type': 'application/json'
|
|||
|
|
},
|
|||
|
|
data: {
|
|||
|
|
amount: 1,
|
|||
|
|
description: '测试支付'
|
|||
|
|
},
|
|||
|
|
success: (res) => {
|
|||
|
|
console.log('后端API返回:', res.data);
|
|||
|
|
if (res.data.code === 200 && res.data.data) {
|
|||
|
|
const paymentData = res.data.data;
|
|||
|
|
console.log('后端返回的支付参数:', paymentData);
|
|||
|
|
console.log('参数验证:');
|
|||
|
|
console.log('- timeStamp:', paymentData.timeStamp, '(类型:', typeof paymentData.timeStamp, ')');
|
|||
|
|
console.log('- nonceStr:', paymentData.nonceStr, '(长度:', paymentData.nonceStr ? paymentData.nonceStr.length : 'undefined', ')');
|
|||
|
|
console.log('- package:', paymentData.package, '(格式:', paymentData.package ? (paymentData.package.startsWith('prepay_id=') ? '正确' : '错误') : 'undefined', ')');
|
|||
|
|
console.log('- signType:', paymentData.signType);
|
|||
|
|
console.log('- paySign:', paymentData.paySign, '(长度:', paymentData.paySign ? paymentData.paySign.length : 'undefined', ')');
|
|||
|
|
|
|||
|
|
// 检查是否包含total_fee参数
|
|||
|
|
if (paymentData.total_fee !== undefined) {
|
|||
|
|
console.warn('⚠️ 发现total_fee参数:', paymentData.total_fee);
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
wx.requestPayment({
|
|||
|
|
...paymentData,
|
|||
|
|
success: (payRes) => {
|
|||
|
|
console.log('支付成功:', payRes);
|
|||
|
|
this.setData({
|
|||
|
|
testResult: '真实API支付成功: ' + JSON.stringify(payRes)
|
|||
|
|
});
|
|||
|
|
},
|
|||
|
|
fail: (payErr) => {
|
|||
|
|
console.log('支付失败:', payErr);
|
|||
|
|
console.log('错误详情:');
|
|||
|
|
console.log('- errMsg:', payErr.errMsg);
|
|||
|
|
console.log('- errCode:', payErr.errCode);
|
|||
|
|
this.setData({
|
|||
|
|
testResult: '真实API支付失败: ' + JSON.stringify(payErr) + '\n错误信息: ' + payErr.errMsg
|
|||
|
|
});
|
|||
|
|
}
|
|||
|
|
});
|
|||
|
|
} else {
|
|||
|
|
console.log('API返回错误:', res.data);
|
|||
|
|
this.setData({
|
|||
|
|
testResult: 'API调用失败: ' + JSON.stringify(res.data)
|
|||
|
|
});
|
|||
|
|
}
|
|||
|
|
},
|
|||
|
|
fail: (err) => {
|
|||
|
|
console.log('API请求失败:', err);
|
|||
|
|
this.setData({
|
|||
|
|
testResult: 'API请求失败: ' + JSON.stringify(err)
|
|||
|
|
});
|
|||
|
|
}
|
|||
|
|
});
|
|||
|
|
},
|
|||
|
|
|
|||
|
|
// 清除测试结果
|
|||
|
|
clearResult() {
|
|||
|
|
this.setData({
|
|||
|
|
testResult: ''
|
|||
|
|
});
|
|||
|
|
}
|
|||
|
|
});
|