| 1234567891011121314151617181920212223242526272829303132333435 |
- import test from 'node:test';
- import assert from 'node:assert/strict';
- import { parseVirtualPayNotifyXml } from '../src/api/virtualPay/virtualPayXml.js';
- test('解析 XML 内嵌对象形式的发货通知', () => {
- const xml = `<xml>
- <Event><![CDATA[xpay_goods_deliver_notify]]></Event>
- <OpenId><![CDATA[test-openid]]></OpenId>
- <OutTradeNo>202608260001</OutTradeNo>
- <Env>1</Env>
- <WeChatPayInfo><TransactionId><![CDATA[wx-transaction]]></TransactionId><PaidTime>1770000000</PaidTime></WeChatPayInfo>
- <GoodsInfo><ProductId><![CDATA[miaoguo-year]]></ProductId><Quantity>1</Quantity><OrigPrice>36500</OrigPrice><ActualPrice>19900</ActualPrice></GoodsInfo>
- </xml>`;
- assert.deepEqual(parseVirtualPayNotifyXml(xml), {
- Event: 'xpay_goods_deliver_notify',
- OpenId: 'test-openid',
- OutTradeNo: '202608260001',
- Env: '1',
- WeChatPayInfo: { TransactionId: 'wx-transaction', PaidTime: '1770000000' },
- GoodsInfo: { ProductId: 'miaoguo-year', Quantity: '1', OrigPrice: '36500', ActualPrice: '19900' }
- });
- });
- test('解析 XML 内 JSON 形式的发货通知对象', () => {
- const xml = `<xml>
- <Event>xpay_goods_deliver_notify</Event>
- <GoodsInfo><![CDATA[{"ProductId":"miaoguo-year","Quantity":1,"OrigPrice":36500,"ActualPrice":19900}]]></GoodsInfo>
- <WeChatPayInfo><![CDATA[{"TransactionId":"wx-transaction"}]]></WeChatPayInfo>
- </xml>`;
- const result = parseVirtualPayNotifyXml(xml);
- assert.equal(result.GoodsInfo.ProductId, 'miaoguo-year');
- assert.equal(result.GoodsInfo.ActualPrice, 19900);
- assert.equal(result.WeChatPayInfo.TransactionId, 'wx-transaction');
- });
|