| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162 |
- // 测试 Alipay SDK 修复后是否能正确签名
- async function test() {
- const { AlipaySdk } = await import('alipay-sdk');
- const rawKey = 'MIIEvQIBADANBgkqhkiG9w0BAQEFAASCBKcwggSjAgEAAoIBAQC798Z+2//v0KPswSiczFy/oGv7M99FCgQ4nh4i/F8OtWDs37+Ts/5HD0Jo4wxgrlKHLtUmsEDH2hXn2/08wj0V2cDNgUe2IrOOrpmaiVnBczjilmheUZDtnG26I38WyE3viZ7zQ5ZfNTcVxRH1gbpSC512922Vi9lFRJycIlptvKzsov11RtE29NDoKcPxTo6gMa94hLEVsDRoJroGBlGjw27Pbynwdgcjb4URacUO4T8ZFTnuYZeTyZHqyJF41WUIwRfzRSrlFUb7oRfF4LC23eXELATtpL+28Y5k4CyA6uIOPKJ02CsmCg+VjYxvV/JEw8slm/IUJiLAfjoy8vf3AgMBAAECggEAL6OyuUBE86DrivvBsUvSTfb4pygUdEj/nOHmPXO9G9s4f5CN23+I+LWTXUX+Qxqra/ugpjeRk5Vga+1Dl3ybQsh3px4W8MCGxajW4WXiS7dKOZNpTE5b7vzwinaopTuLFSTKFlmQ6Pxxw6C41oJUmKq89APt0DMrk/S5xJCoXps86xp6zbXjlPm8HtLwuL0OP0WfgnwfXm8kOkaCswS4NXrz83DcR/tUrsdNmcOUmXXuXx+hwu/x0hgMOnSZYlrea/el6deM/giU+JPbM9BMrM8IeMW0MkLSBTikSsav+hetosxuPUrCebcK4QSUrTJ+mwqWNvFFeJuM/P6HbvfTQQKBgQD8GQlwpaQBRe2VXoapjB4ShL6ml+vVNwsjhR0WiwJHavGRS/hKIe/YLRqgfpHUR0/bUOFFxpkRApBT0LevL74c1HriXzHmGhC7DLmYQD+MZmTEbHNbEgVUsJeB04Cn+teWIsKYe80YYbvpwNvsX/Eu5FutOoZCNLrR5SAR7iZNZwKBgQC+4J39gO35W1Kc91tpX5UsmuGPdO6F89BFqvydkcYAYsEi3P92lrTXiplhNnGBDe7KoM8M7gWrnjvTr9S3ZLylKK7cgKn1VUYIqdAqyikiI7hVCfKZZeMa4TKZ0Os0PnGf6PqX3Rm/3yFZpXqD48QqVq2zLePWQGDXdd6BVFDW8QKBgEpBda5gm/ZkCp88wJ2gUBtUTnPzu9uJ4xYLV44UVA+FSLJrli7/4A3k+zrbDUlh1/vZzwEmhl+kSa7mg7Ruc6k6TRfwwlnsw5DVJrXZ9t38KyJQb4obvMY9XeM30WWpVWc7xeX0UW0lHJy12hG+EOSnDvnviyxlK8I3o0Kky1NxAoGAFsyVknYX9rTlxUH2dTupgc5uKsh4xR8+PVQTIG8NC3bAQv3KtcuChkxTzbzHCfc0Epfqo0y6+KjJ1Jsn+U/bCI83c7calec9mkNOTg4fo6hImD+77n6xBcDoXl8J+Q+MWuFlLUaHkNeCEEcnvyExiS0ZSlGs6SZ/arz1etUrYsECgYEA3D2gaibcyTAYrJ/mk5pu2M6g+Ga7A4TSwUCAwUIN0pYVCgFLvl6Faii5n9AzHRd9/H5CQKl2pqEw44tBYPNAyv8zGivyUAO2uDWpQYm7enZjJ/4eSKAJgoF2tGQEjOyORQub6i78P4vnW0yQLpfR7O73JGF9C+PohmfyDpSkbXY=';
- const pubKey = 'MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAg2H/H1UoYUUSr3hdtgrMQqoFvHpWaz9nSOC9+rM2Csci9iRWW/K9mk4Vfawh9qwaRAv4OPB82arS7NSPUQirUraeGw3JbZ/HUhBY0blkES9GznhQzeht/IES2WccNC+nCprcXcvaLCqEx0gPTb1ujhKDZOkoc9H2JZCyPOiOsMlKdFJjk7jlR/Vn5aA+M9TaK8hOwCz02VCg7d/NfXZFwdg+88k9e4GLbdHI0MnmQ2Mg7DmuSM0TjSk6oPh3OlePMIPcvO/Wt/k2x6Fl2aVvH3FabtqZzNRtseKiTSzKCiNb7mJktkSsoE7lySXsUEP4X+hlesjNyIGRgf/yTCDlNwIDAQAB';
- // 使用 PKCS#8 头(修复后的方式)
- const privateKey = '-----BEGIN PRIVATE KEY-----\n' + rawKey + '\n-----END PRIVATE KEY-----';
- const alipayPublicKey = '-----BEGIN PUBLIC KEY-----\n' + pubKey + '\n-----END PUBLIC KEY-----';
- console.log('=== 测试1: 修复后 SDK 初始化 ===');
- const sdk = new AlipaySdk({
- appId: '2021006154659461',
- privateKey,
- keyType: 'PKCS8',
- alipayPublicKey,
- gateway: 'https://openapi.alipay.com/gateway.do',
- signType: 'RSA2',
- });
- console.log('✅ SDK 初始化成功\n');
- console.log('=== 测试2: pageExecute 生成支付表单 ===');
- try {
- const form = sdk.pageExecute('alipay.trade.wap.pay', 'POST', {
- bizContent: {
- out_trade_no: 'TEST' + Date.now(),
- total_amount: '0.01',
- subject: 'AI有声书订阅-测试',
- product_code: 'QUICK_WAP_WAY',
- },
- returnUrl: 'https://book.rrbrr.com/#/pages/payment-result/index',
- notifyUrl: 'https://book.rrbrr.com/api/payment/alipay/notify',
- });
- const actionMatch = String(form).match(/action="([^"]+)"/);
- const paymentUrl = actionMatch ? actionMatch[1] : '未能提取action';
- console.log('✅ pageExecute 调用成功');
- console.log('支付网关地址:', paymentUrl);
- console.log('表单前200字符:', String(form).substring(0, 200));
- } catch (e) {
- console.error('❌ pageExecute 失败:', e.message);
- }
- console.log('\n=== 测试3: 错误格式对比 (PKCS#1 包装) ===');
- try {
- const wrongKey = '-----BEGIN RSA PRIVATE KEY-----\n' + rawKey + '\n-----END RSA PRIVATE KEY-----';
- const sdkWrong = new AlipaySdk({
- appId: '2021006154659461',
- privateKey: wrongKey,
- keyType: 'PKCS1',
- alipayPublicKey,
- gateway: 'https://openapi.alipay.com/gateway.do',
- });
- // 能初始化但签名会是错的
- console.log('SDK 未报错(但签名会是错的,支付宝会返回 invalid-signature)');
- } catch (e) {
- console.log('SDK 报错:', e.message);
- }
- }
- test().catch(e => console.error('脚本异常:', e));
|