wxpay-nodejs-sdk 0.2.5 → 0.2.6
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +1 -1
- package/dist/index.d.mts +312 -777
- package/dist/index.d.ts +312 -777
- package/dist/index.js +340 -1064
- package/dist/index.js.map +1 -1
- package/dist/index.mjs +340 -1064
- package/dist/index.mjs.map +1 -1
- package/package.json +1 -1
package/dist/index.mjs
CHANGED
|
@@ -6,7 +6,7 @@ import zlib from 'zlib';
|
|
|
6
6
|
// src/core/client.ts
|
|
7
7
|
|
|
8
8
|
// package.json
|
|
9
|
-
var version = "0.2.
|
|
9
|
+
var version = "0.2.6";
|
|
10
10
|
|
|
11
11
|
// src/version.ts
|
|
12
12
|
var SDK_VERSION = version;
|
|
@@ -1325,30 +1325,16 @@ ${packageStr}
|
|
|
1325
1325
|
};
|
|
1326
1326
|
}
|
|
1327
1327
|
|
|
1328
|
-
// src/services/
|
|
1329
|
-
var
|
|
1328
|
+
// src/services/base-payment.ts
|
|
1329
|
+
var BasePaymentService = class {
|
|
1330
1330
|
client;
|
|
1331
1331
|
constructor(client) {
|
|
1332
1332
|
this.client = client;
|
|
1333
1333
|
}
|
|
1334
1334
|
/**
|
|
1335
|
-
*
|
|
1336
|
-
*
|
|
1337
|
-
* 商户通过此接口生成预付单并获取 prepay_id。
|
|
1338
|
-
* prepay_id 有效期为 2 小时,超过 2 小时需重新请求。
|
|
1339
|
-
*
|
|
1340
|
-
* @see https://pay.weixin.qq.com/doc/v3/merchant/4012791856
|
|
1341
|
-
*/
|
|
1342
|
-
async createOrder(request) {
|
|
1343
|
-
return this.client.post("/v3/pay/transactions/jsapi", request);
|
|
1344
|
-
}
|
|
1345
|
-
/**
|
|
1346
|
-
* 查询 JSAPI 支付订单
|
|
1335
|
+
* 查询订单
|
|
1347
1336
|
*
|
|
1348
1337
|
* 支持通过微信支付订单号或商户订单号查询订单状态。
|
|
1349
|
-
*
|
|
1350
|
-
* @see https://pay.weixin.qq.com/doc/v3/merchant/4012791858 (微信支付订单号查询订单)
|
|
1351
|
-
* @see https://pay.weixin.qq.com/doc/v3/merchant/4012791859 (商户订单号查询订单)
|
|
1352
1338
|
*/
|
|
1353
1339
|
async queryOrderById(params) {
|
|
1354
1340
|
if (params.transactionId) {
|
|
@@ -1361,8 +1347,6 @@ var JsapiService = class {
|
|
|
1361
1347
|
}
|
|
1362
1348
|
/**
|
|
1363
1349
|
* 通过商户订单号查询订单
|
|
1364
|
-
*
|
|
1365
|
-
* @see https://pay.weixin.qq.com/doc/v3/merchant/4012791859
|
|
1366
1350
|
*/
|
|
1367
1351
|
async queryOrderByOutTradeNo(outTradeNo) {
|
|
1368
1352
|
return this.client.get(`/v3/pay/transactions/out-trade-no/${outTradeNo}`, {
|
|
@@ -1371,36 +1355,16 @@ var JsapiService = class {
|
|
|
1371
1355
|
}
|
|
1372
1356
|
/**
|
|
1373
1357
|
* 通过微信支付订单号查询订单
|
|
1374
|
-
*
|
|
1375
|
-
* @see https://pay.weixin.qq.com/doc/v3/merchant/4012791858
|
|
1376
1358
|
*/
|
|
1377
1359
|
async queryOrderByTransactionId(transactionId) {
|
|
1378
1360
|
return this.client.get(`/v3/pay/transactions/id/${transactionId}`, {
|
|
1379
1361
|
mchid: this.client.mchid
|
|
1380
1362
|
});
|
|
1381
1363
|
}
|
|
1382
|
-
/**
|
|
1383
|
-
* JSAPI 下单并生成调起支付参数
|
|
1384
|
-
*
|
|
1385
|
-
* 封装了下单和调起支付参数生成两个步骤,一次调用即可获得
|
|
1386
|
-
* prepay_id 和前端 WeixinJSBridge.invoke() 所需的全部参数。
|
|
1387
|
-
*
|
|
1388
|
-
* @param request - 下单请求参数(需包含 appid)
|
|
1389
|
-
* @param privateKey - 商户私钥
|
|
1390
|
-
* @returns 下单响应 + 调起支付参数
|
|
1391
|
-
*/
|
|
1392
|
-
async prepayWithRequestPayment(request, privateKey) {
|
|
1393
|
-
const response = await this.createOrder(request);
|
|
1394
|
-
const bridgeConfig = buildJsapiBridgeConfig(request.appid, response.data.prepay_id, privateKey);
|
|
1395
|
-
return { ...response, bridgeConfig };
|
|
1396
|
-
}
|
|
1397
1364
|
/**
|
|
1398
1365
|
* 关闭订单
|
|
1399
1366
|
*
|
|
1400
1367
|
* 对于未支付的订单,商户可通过此接口关闭订单。
|
|
1401
|
-
* 关单后,订单状态从未支付(NOTPAY)流转为已关闭(CLOSED)。
|
|
1402
|
-
*
|
|
1403
|
-
* @see https://pay.weixin.qq.com/doc/v3/merchant/4012791860
|
|
1404
1368
|
*/
|
|
1405
1369
|
async closeOrder(outTradeNo, request) {
|
|
1406
1370
|
return this.client.post(`/v3/pay/transactions/out-trade-no/${outTradeNo}/close`, request);
|
|
@@ -1409,9 +1373,6 @@ var JsapiService = class {
|
|
|
1409
1373
|
* 申请退款
|
|
1410
1374
|
*
|
|
1411
1375
|
* 当订单状态为支付成功(SUCCESS)时,商户可通过此接口申请退款。
|
|
1412
|
-
* 仅支持支付成功后 1 年内的订单。
|
|
1413
|
-
*
|
|
1414
|
-
* @see https://pay.weixin.qq.com/doc/v3/merchant/4012791862
|
|
1415
1376
|
*/
|
|
1416
1377
|
async createRefund(request) {
|
|
1417
1378
|
return this.client.post("/v3/refund/domestic/refunds", request);
|
|
@@ -1420,20 +1381,27 @@ var JsapiService = class {
|
|
|
1420
1381
|
* 查询退款单
|
|
1421
1382
|
*
|
|
1422
1383
|
* 通过商户退款单号查询退款状态。
|
|
1423
|
-
*
|
|
1424
|
-
* @see https://pay.weixin.qq.com/doc/v3/merchant/4012791863
|
|
1425
1384
|
*/
|
|
1426
1385
|
async queryRefund(params) {
|
|
1427
1386
|
return this.client.get(
|
|
1428
1387
|
`/v3/refund/domestic/refunds/${params.outRefundNo}`
|
|
1429
1388
|
);
|
|
1430
1389
|
}
|
|
1390
|
+
/**
|
|
1391
|
+
* 申请异常退款
|
|
1392
|
+
*
|
|
1393
|
+
* 当退款状态为 ABNORMAL 时,可通过此接口发起异常退款处理。
|
|
1394
|
+
*/
|
|
1395
|
+
async applyAbnormalRefund(refundId, request) {
|
|
1396
|
+
return this.client.post(
|
|
1397
|
+
`/v3/refund/domestic/refunds/${refundId}/apply-abnormal-refund`,
|
|
1398
|
+
request
|
|
1399
|
+
);
|
|
1400
|
+
}
|
|
1431
1401
|
/**
|
|
1432
1402
|
* 申请交易账单
|
|
1433
1403
|
*
|
|
1434
1404
|
* 商户可通过此接口获取交易账单的下载链接。
|
|
1435
|
-
*
|
|
1436
|
-
* @see https://pay.weixin.qq.com/doc/v3/merchant/4012791866
|
|
1437
1405
|
*/
|
|
1438
1406
|
async tradeBill(params) {
|
|
1439
1407
|
return this.client.get("/v3/bill/tradebill", params);
|
|
@@ -1442,49 +1410,52 @@ var JsapiService = class {
|
|
|
1442
1410
|
* 申请资金账单
|
|
1443
1411
|
*
|
|
1444
1412
|
* 商户可通过此接口获取资金账单的下载链接。
|
|
1445
|
-
*
|
|
1446
|
-
* @see https://pay.weixin.qq.com/doc/v3/merchant/4012791867
|
|
1447
1413
|
*/
|
|
1448
1414
|
async fundFlowBill(params) {
|
|
1449
1415
|
return this.client.get("/v3/bill/fundflowbill", params);
|
|
1450
1416
|
}
|
|
1451
1417
|
/**
|
|
1452
|
-
*
|
|
1418
|
+
* 下载账单
|
|
1453
1419
|
*
|
|
1454
|
-
*
|
|
1455
|
-
|
|
1420
|
+
* 通过申请账单接口返回的 download_url,以 GET 方式下载账单原始文件。
|
|
1421
|
+
*/
|
|
1422
|
+
async downloadBill(downloadUrl) {
|
|
1423
|
+
return this.client.downloadRaw(downloadUrl);
|
|
1424
|
+
}
|
|
1425
|
+
};
|
|
1426
|
+
|
|
1427
|
+
// src/services/jsapi.ts
|
|
1428
|
+
var JsapiService = class extends BasePaymentService {
|
|
1429
|
+
/**
|
|
1430
|
+
* JSAPI/小程序下单
|
|
1456
1431
|
*
|
|
1457
|
-
*
|
|
1458
|
-
*
|
|
1459
|
-
*
|
|
1432
|
+
* 商户通过此接口生成预付单并获取 prepay_id。
|
|
1433
|
+
* prepay_id 有效期为 2 小时,超过 2 小时需重新请求。
|
|
1434
|
+
*
|
|
1435
|
+
* @see https://pay.weixin.qq.com/doc/v3/merchant/4012791856
|
|
1460
1436
|
*/
|
|
1461
|
-
async
|
|
1462
|
-
return this.client.post(
|
|
1463
|
-
`/v3/refund/domestic/refunds/${refundId}/apply-abnormal-refund`,
|
|
1464
|
-
request
|
|
1465
|
-
);
|
|
1437
|
+
async createOrder(request) {
|
|
1438
|
+
return this.client.post("/v3/pay/transactions/jsapi", request);
|
|
1466
1439
|
}
|
|
1467
1440
|
/**
|
|
1468
|
-
*
|
|
1441
|
+
* JSAPI 下单并生成调起支付参数
|
|
1469
1442
|
*
|
|
1470
|
-
*
|
|
1471
|
-
*
|
|
1472
|
-
* 返回的 data 为 Buffer,可能为 GZIP 压缩格式,需要自行解压。
|
|
1443
|
+
* 封装了下单和调起支付参数生成两个步骤,一次调用即可获得
|
|
1444
|
+
* prepay_id 和前端 WeixinJSBridge.invoke() 所需的全部参数。
|
|
1473
1445
|
*
|
|
1474
|
-
* @param
|
|
1475
|
-
* @
|
|
1446
|
+
* @param request - 下单请求参数(需包含 appid)
|
|
1447
|
+
* @param privateKey - 商户私钥
|
|
1448
|
+
* @returns 下单响应 + 调起支付参数
|
|
1476
1449
|
*/
|
|
1477
|
-
async
|
|
1478
|
-
|
|
1450
|
+
async prepayWithRequestPayment(request, privateKey) {
|
|
1451
|
+
const response = await this.createOrder(request);
|
|
1452
|
+
const bridgeConfig = buildJsapiBridgeConfig(request.appid, response.data.prepay_id, privateKey);
|
|
1453
|
+
return { ...response, bridgeConfig };
|
|
1479
1454
|
}
|
|
1480
1455
|
};
|
|
1481
1456
|
|
|
1482
1457
|
// src/services/h5.ts
|
|
1483
|
-
var H5Service = class {
|
|
1484
|
-
client;
|
|
1485
|
-
constructor(client) {
|
|
1486
|
-
this.client = client;
|
|
1487
|
-
}
|
|
1458
|
+
var H5Service = class extends BasePaymentService {
|
|
1488
1459
|
/**
|
|
1489
1460
|
* H5 支付下单
|
|
1490
1461
|
*
|
|
@@ -1496,51 +1467,92 @@ var H5Service = class {
|
|
|
1496
1467
|
async createOrder(request) {
|
|
1497
1468
|
return this.client.post("/v3/pay/transactions/h5", request);
|
|
1498
1469
|
}
|
|
1470
|
+
};
|
|
1471
|
+
|
|
1472
|
+
// src/services/app.ts
|
|
1473
|
+
var AppService = class extends BasePaymentService {
|
|
1499
1474
|
/**
|
|
1500
|
-
*
|
|
1475
|
+
* APP 支付下单
|
|
1501
1476
|
*
|
|
1502
|
-
*
|
|
1477
|
+
* 商户通过此接口生成预付单并获取 prepay_id。
|
|
1478
|
+
* prepay_id 有效期为 2 小时,超过 2 小时需使用原下单参数重新请求。
|
|
1503
1479
|
*
|
|
1504
|
-
* @see https://pay.weixin.qq.com/doc/v3/merchant/
|
|
1505
|
-
* @see https://pay.weixin.qq.com/doc/v3/merchant/4012791838 (商户订单号查询订单)
|
|
1480
|
+
* @see https://pay.weixin.qq.com/doc/v3/merchant/4013070347
|
|
1506
1481
|
*/
|
|
1507
|
-
async
|
|
1508
|
-
|
|
1509
|
-
return this.queryOrderByTransactionId(params.transactionId);
|
|
1510
|
-
}
|
|
1511
|
-
if (params.outTradeNo) {
|
|
1512
|
-
return this.queryOrderByOutTradeNo(params.outTradeNo);
|
|
1513
|
-
}
|
|
1514
|
-
throw new Error("outTradeNo \u6216 transactionId \u5FC5\u987B\u63D0\u4F9B\u5176\u4E2D\u4E00\u4E2A");
|
|
1482
|
+
async createOrder(request) {
|
|
1483
|
+
return this.client.post("/v3/pay/transactions/app", request);
|
|
1515
1484
|
}
|
|
1516
|
-
|
|
1517
|
-
|
|
1518
|
-
|
|
1519
|
-
|
|
1485
|
+
/**
|
|
1486
|
+
* APP 下单并生成调起支付参数
|
|
1487
|
+
*
|
|
1488
|
+
* 封装了下单和调起支付参数生成两个步骤,一次调用即可获得
|
|
1489
|
+
* prepay_id 和 APP 端调起支付所需的全部参数。
|
|
1490
|
+
*
|
|
1491
|
+
* @param request - 下单请求参数(需包含 appid)
|
|
1492
|
+
* @param privateKey - 商户私钥
|
|
1493
|
+
* @returns 下单响应 + 调起支付参数
|
|
1494
|
+
*/
|
|
1495
|
+
async prepayWithRequestPayment(request, privateKey) {
|
|
1496
|
+
const response = await this.createOrder(request);
|
|
1497
|
+
const bridgeConfig = buildAppBridgeConfig(
|
|
1498
|
+
request.appid,
|
|
1499
|
+
this.client.mchid,
|
|
1500
|
+
response.data.prepay_id,
|
|
1501
|
+
privateKey
|
|
1502
|
+
);
|
|
1503
|
+
return { ...response, bridgeConfig };
|
|
1520
1504
|
}
|
|
1521
|
-
|
|
1522
|
-
|
|
1523
|
-
|
|
1524
|
-
|
|
1505
|
+
};
|
|
1506
|
+
|
|
1507
|
+
// src/services/native.ts
|
|
1508
|
+
var NativeService = class extends BasePaymentService {
|
|
1509
|
+
/**
|
|
1510
|
+
* Native 支付下单
|
|
1511
|
+
*
|
|
1512
|
+
* 商户通过此接口生成订单并获取二维码链接(code_url)。
|
|
1513
|
+
* code_url 有效期为 2 小时,超过 2 小时需使用原下单参数重新请求。
|
|
1514
|
+
*
|
|
1515
|
+
* 商户后端获取 code_url 后传递给前端,前端将其转换为二维码图片展示给用户。
|
|
1516
|
+
* 用户使用微信扫一扫扫描二维码后,将调起微信收银台完成支付。
|
|
1517
|
+
*
|
|
1518
|
+
* @see https://pay.weixin.qq.com/doc/v3/merchant/4012791877
|
|
1519
|
+
*/
|
|
1520
|
+
async createOrder(request) {
|
|
1521
|
+
return this.client.post("/v3/pay/transactions/native", request);
|
|
1522
|
+
}
|
|
1523
|
+
};
|
|
1524
|
+
|
|
1525
|
+
// src/services/base-combine.ts
|
|
1526
|
+
var BaseCombineService = class {
|
|
1527
|
+
client;
|
|
1528
|
+
constructor(client) {
|
|
1529
|
+
this.client = client;
|
|
1525
1530
|
}
|
|
1526
1531
|
/**
|
|
1527
|
-
*
|
|
1532
|
+
* 查询合单订单
|
|
1528
1533
|
*
|
|
1529
|
-
*
|
|
1530
|
-
|
|
1534
|
+
* 通过合单商户订单号查询合单订单的支付状态及各子单详情。
|
|
1535
|
+
*/
|
|
1536
|
+
async queryOrderById(params) {
|
|
1537
|
+
return this.client.get(
|
|
1538
|
+
`/v3/combine-transactions/out-trade-no/${params.combineOutTradeNo}`
|
|
1539
|
+
);
|
|
1540
|
+
}
|
|
1541
|
+
/**
|
|
1542
|
+
* 关闭合单订单
|
|
1531
1543
|
*
|
|
1532
|
-
*
|
|
1544
|
+
* 对于未支付的合单订单,商户可通过此接口关闭订单。
|
|
1533
1545
|
*/
|
|
1534
|
-
async closeOrder(
|
|
1535
|
-
return this.client.post(
|
|
1546
|
+
async closeOrder(params, request) {
|
|
1547
|
+
return this.client.post(
|
|
1548
|
+
`/v3/combine-transactions/out-trade-no/${params.combineOutTradeNo}/close`,
|
|
1549
|
+
request
|
|
1550
|
+
);
|
|
1536
1551
|
}
|
|
1537
1552
|
/**
|
|
1538
1553
|
* 申请退款
|
|
1539
1554
|
*
|
|
1540
|
-
*
|
|
1541
|
-
* 仅支持支付成功后 1 年内的订单。
|
|
1542
|
-
*
|
|
1543
|
-
* @see https://pay.weixin.qq.com/doc/v3/merchant/4012810597
|
|
1555
|
+
* 当子单状态为支付成功(SUCCESS)时,商户可通过此接口对子单申请退款。
|
|
1544
1556
|
*/
|
|
1545
1557
|
async createRefund(request) {
|
|
1546
1558
|
return this.client.post("/v3/refund/domestic/refunds", request);
|
|
@@ -1549,8 +1561,6 @@ var H5Service = class {
|
|
|
1549
1561
|
* 查询退款单
|
|
1550
1562
|
*
|
|
1551
1563
|
* 通过商户退款单号查询退款状态。
|
|
1552
|
-
*
|
|
1553
|
-
* @see https://pay.weixin.qq.com/doc/v3/merchant/4012810601
|
|
1554
1564
|
*/
|
|
1555
1565
|
async queryRefund(params) {
|
|
1556
1566
|
return this.client.get(
|
|
@@ -1561,11 +1571,6 @@ var H5Service = class {
|
|
|
1561
1571
|
* 申请异常退款
|
|
1562
1572
|
*
|
|
1563
1573
|
* 当退款状态为 ABNORMAL 时,可通过此接口发起异常退款处理。
|
|
1564
|
-
* 支持退款至用户银行卡或退款至交易商户银行账户两种方式。
|
|
1565
|
-
*
|
|
1566
|
-
* @param refundId - 微信支付退款单号
|
|
1567
|
-
* @param request - 异常退款请求参数
|
|
1568
|
-
* @see https://pay.weixin.qq.com/doc/v3/merchant/4012810603
|
|
1569
1574
|
*/
|
|
1570
1575
|
async applyAbnormalRefund(refundId, request) {
|
|
1571
1576
|
return this.client.post(
|
|
@@ -1577,8 +1582,6 @@ var H5Service = class {
|
|
|
1577
1582
|
* 申请交易账单
|
|
1578
1583
|
*
|
|
1579
1584
|
* 商户可通过此接口获取交易账单的下载链接。
|
|
1580
|
-
*
|
|
1581
|
-
* @see https://pay.weixin.qq.com/doc/v3/merchant/4012810606
|
|
1582
1585
|
*/
|
|
1583
1586
|
async tradeBill(params) {
|
|
1584
1587
|
return this.client.get("/v3/bill/tradebill", params);
|
|
@@ -1587,8 +1590,6 @@ var H5Service = class {
|
|
|
1587
1590
|
* 申请资金账单
|
|
1588
1591
|
*
|
|
1589
1592
|
* 商户可通过此接口获取资金账单的下载链接。
|
|
1590
|
-
*
|
|
1591
|
-
* @see https://pay.weixin.qq.com/doc/v3/merchant/4012810609
|
|
1592
1593
|
*/
|
|
1593
1594
|
async fundFlowBill(params) {
|
|
1594
1595
|
return this.client.get("/v3/bill/fundflowbill", params);
|
|
@@ -1597,526 +1598,61 @@ var H5Service = class {
|
|
|
1597
1598
|
* 下载账单
|
|
1598
1599
|
*
|
|
1599
1600
|
* 通过申请账单接口返回的 download_url,以 GET 方式下载账单原始文件。
|
|
1600
|
-
* 下载地址 5 分钟内有效,请及时下载。
|
|
1601
|
-
* 返回的 data 为 Buffer,可能为 GZIP 压缩格式,需要自行解压。
|
|
1602
|
-
*
|
|
1603
|
-
* @param downloadUrl - 申请账单返回的 download_url
|
|
1604
|
-
* @see https://pay.weixin.qq.com/doc/v3/merchant/4012810615
|
|
1605
1601
|
*/
|
|
1606
1602
|
async downloadBill(downloadUrl) {
|
|
1607
1603
|
return this.client.downloadRaw(downloadUrl);
|
|
1608
1604
|
}
|
|
1609
1605
|
};
|
|
1610
1606
|
|
|
1611
|
-
// src/services/
|
|
1612
|
-
var
|
|
1613
|
-
client;
|
|
1614
|
-
constructor(client) {
|
|
1615
|
-
this.client = client;
|
|
1616
|
-
}
|
|
1607
|
+
// src/services/combine.ts
|
|
1608
|
+
var CombineService = class extends BaseCombineService {
|
|
1617
1609
|
/**
|
|
1618
|
-
*
|
|
1610
|
+
* JSAPI 合单下单
|
|
1619
1611
|
*
|
|
1620
|
-
*
|
|
1612
|
+
* 商户通过此接口生成合单预付单并获取 prepay_id。
|
|
1621
1613
|
* prepay_id 有效期为 2 小时,超过 2 小时需使用原下单参数重新请求。
|
|
1622
1614
|
*
|
|
1623
|
-
*
|
|
1615
|
+
* 关键约束:
|
|
1616
|
+
* - combine_mchid 需先申请发起合单支付权限
|
|
1617
|
+
* - sub_orders 中的 mchid 需先申请接收合单支付权限
|
|
1618
|
+
* - 合单发起方和子单参与方需绑定同一个 combine_appid
|
|
1619
|
+
* - 子单数量为 2-10 笔
|
|
1620
|
+
* - time_expire 不能早于下单时间后 1 分钟,不能超过下单时间后 7 天
|
|
1621
|
+
*
|
|
1622
|
+
* @see https://pay.weixin.qq.com/doc/v3/merchant/4012556926
|
|
1624
1623
|
*/
|
|
1625
1624
|
async createOrder(request) {
|
|
1626
|
-
return this.client.post("/v3/
|
|
1625
|
+
return this.client.post("/v3/combine-transactions/jsapi", request);
|
|
1627
1626
|
}
|
|
1627
|
+
};
|
|
1628
|
+
|
|
1629
|
+
// src/services/combine-h5.ts
|
|
1630
|
+
var CombineH5Service = class extends BaseCombineService {
|
|
1628
1631
|
/**
|
|
1629
|
-
*
|
|
1632
|
+
* H5 合单下单
|
|
1630
1633
|
*
|
|
1631
|
-
*
|
|
1634
|
+
* 商户通过此接口生成 H5 合单支付链接(h5_url),用于在已配置 H5 支付域名的
|
|
1635
|
+
* 网页中跳转并唤起微信支付收银台。h5_url 有效期为 5 分钟,过期后需使用
|
|
1636
|
+
* 原下单参数重新请求。
|
|
1637
|
+
*
|
|
1638
|
+
* 关键约束:
|
|
1639
|
+
* - combine_mchid 需先申请发起合单支付权限
|
|
1640
|
+
* - sub_orders 中的 mchid 需先申请接收合单支付权限
|
|
1641
|
+
* - 合单发起方和子单参与方需绑定同一个 combine_appid
|
|
1642
|
+
* - 子单数量为 2-10 笔
|
|
1643
|
+
* - scene_info.payer_client_ip 需传真实的用户端 IP
|
|
1644
|
+
* - scene_info.h5_info 必填,需指定 type 为 Wap/iOS/Android 之一
|
|
1645
|
+
* - time_expire 不能早于下单时间后 1 分钟,不能超过下单时间后 7 天
|
|
1632
1646
|
*
|
|
1633
|
-
* @see https://pay.weixin.qq.com/doc/v3/merchant/
|
|
1634
|
-
* @see https://pay.weixin.qq.com/doc/v3/merchant/4013070356 (商户订单号查询订单)
|
|
1647
|
+
* @see https://pay.weixin.qq.com/doc/v3/merchant/4012556961
|
|
1635
1648
|
*/
|
|
1636
|
-
async
|
|
1637
|
-
|
|
1638
|
-
return this.queryOrderByTransactionId(params.transactionId);
|
|
1639
|
-
}
|
|
1640
|
-
if (params.outTradeNo) {
|
|
1641
|
-
return this.queryOrderByOutTradeNo(params.outTradeNo);
|
|
1642
|
-
}
|
|
1643
|
-
throw new Error("outTradeNo \u6216 transactionId \u5FC5\u987B\u63D0\u4F9B\u5176\u4E2D\u4E00\u4E2A");
|
|
1644
|
-
}
|
|
1645
|
-
async queryOrderByOutTradeNo(outTradeNo) {
|
|
1646
|
-
return this.client.get(`/v3/pay/transactions/out-trade-no/${outTradeNo}`, {
|
|
1647
|
-
mchid: this.client.mchid
|
|
1648
|
-
});
|
|
1649
|
-
}
|
|
1650
|
-
async queryOrderByTransactionId(transactionId) {
|
|
1651
|
-
return this.client.get(`/v3/pay/transactions/id/${transactionId}`, {
|
|
1652
|
-
mchid: this.client.mchid
|
|
1653
|
-
});
|
|
1654
|
-
}
|
|
1655
|
-
async prepayWithRequestPayment(request, privateKey) {
|
|
1656
|
-
const response = await this.createOrder(request);
|
|
1657
|
-
const bridgeConfig = buildAppBridgeConfig(
|
|
1658
|
-
request.appid,
|
|
1659
|
-
this.client.mchid,
|
|
1660
|
-
response.data.prepay_id,
|
|
1661
|
-
privateKey
|
|
1662
|
-
);
|
|
1663
|
-
return { ...response, bridgeConfig };
|
|
1664
|
-
}
|
|
1665
|
-
/**
|
|
1666
|
-
* 关闭订单
|
|
1667
|
-
*
|
|
1668
|
-
* 对于未支付的订单,商户可通过此接口关闭订单。
|
|
1669
|
-
* 关单后,订单状态从未支付(NOTPAY)流转为已关闭(CLOSED)。
|
|
1670
|
-
*
|
|
1671
|
-
* @see https://pay.weixin.qq.com/doc/v3/merchant/4013070360
|
|
1672
|
-
*/
|
|
1673
|
-
async closeOrder(outTradeNo, request) {
|
|
1674
|
-
return this.client.post(`/v3/pay/transactions/out-trade-no/${outTradeNo}/close`, request);
|
|
1675
|
-
}
|
|
1676
|
-
/**
|
|
1677
|
-
* 申请退款
|
|
1678
|
-
*
|
|
1679
|
-
* 当订单状态为支付成功(SUCCESS)时,商户可通过此接口申请退款。
|
|
1680
|
-
* 仅支持支付成功后 1 年内的订单。
|
|
1681
|
-
*
|
|
1682
|
-
* @see https://pay.weixin.qq.com/doc/v3/merchant/4013070371
|
|
1683
|
-
*/
|
|
1684
|
-
async createRefund(request) {
|
|
1685
|
-
return this.client.post("/v3/refund/domestic/refunds", request);
|
|
1686
|
-
}
|
|
1687
|
-
/**
|
|
1688
|
-
* 查询退款单
|
|
1689
|
-
*
|
|
1690
|
-
* 通过商户退款单号查询退款状态。
|
|
1691
|
-
*
|
|
1692
|
-
* @see https://pay.weixin.qq.com/doc/v3/merchant/4013070374
|
|
1693
|
-
*/
|
|
1694
|
-
async queryRefund(params) {
|
|
1695
|
-
return this.client.get(
|
|
1696
|
-
`/v3/refund/domestic/refunds/${params.outRefundNo}`
|
|
1697
|
-
);
|
|
1698
|
-
}
|
|
1699
|
-
/**
|
|
1700
|
-
* 申请异常退款
|
|
1701
|
-
*
|
|
1702
|
-
* 当退款状态为 ABNORMAL 时,可通过此接口发起异常退款处理。
|
|
1703
|
-
* 支持退款至用户银行卡或退款至交易商户银行账户两种方式。
|
|
1704
|
-
*
|
|
1705
|
-
* @param refundId - 微信支付退款单号
|
|
1706
|
-
* @param request - 异常退款请求参数
|
|
1707
|
-
* @see https://pay.weixin.qq.com/doc/v3/merchant/4013070379
|
|
1708
|
-
*/
|
|
1709
|
-
async applyAbnormalRefund(refundId, request) {
|
|
1710
|
-
return this.client.post(
|
|
1711
|
-
`/v3/refund/domestic/refunds/${refundId}/apply-abnormal-refund`,
|
|
1712
|
-
request
|
|
1713
|
-
);
|
|
1714
|
-
}
|
|
1715
|
-
/**
|
|
1716
|
-
* 申请交易账单
|
|
1717
|
-
*
|
|
1718
|
-
* 商户可通过此接口获取交易账单的下载链接。
|
|
1719
|
-
*
|
|
1720
|
-
* @see https://pay.weixin.qq.com/doc/v3/merchant/4013070395
|
|
1721
|
-
*/
|
|
1722
|
-
async tradeBill(params) {
|
|
1723
|
-
return this.client.get("/v3/bill/tradebill", params);
|
|
1724
|
-
}
|
|
1725
|
-
/**
|
|
1726
|
-
* 申请资金账单
|
|
1727
|
-
*
|
|
1728
|
-
* 商户可通过此接口获取资金账单的下载链接。
|
|
1729
|
-
*
|
|
1730
|
-
* @see https://pay.weixin.qq.com/doc/v3/merchant/4013070400
|
|
1731
|
-
*/
|
|
1732
|
-
async fundFlowBill(params) {
|
|
1733
|
-
return this.client.get("/v3/bill/fundflowbill", params);
|
|
1734
|
-
}
|
|
1735
|
-
/**
|
|
1736
|
-
* 下载账单
|
|
1737
|
-
*
|
|
1738
|
-
* 通过申请账单接口返回的 download_url,以 GET 方式下载账单原始文件。
|
|
1739
|
-
* 下载地址 5 分钟内有效,请及时下载。
|
|
1740
|
-
* 返回的 data 为 Buffer,可能为 GZIP 压缩格式,需要自行解压。
|
|
1741
|
-
*
|
|
1742
|
-
* @param downloadUrl - 申请账单返回的 download_url
|
|
1743
|
-
* @see https://pay.weixin.qq.com/doc/v3/merchant/4013070401
|
|
1744
|
-
*/
|
|
1745
|
-
async downloadBill(downloadUrl) {
|
|
1746
|
-
return this.client.downloadRaw(downloadUrl);
|
|
1747
|
-
}
|
|
1748
|
-
};
|
|
1749
|
-
|
|
1750
|
-
// src/services/native.ts
|
|
1751
|
-
var NativeService = class {
|
|
1752
|
-
client;
|
|
1753
|
-
constructor(client) {
|
|
1754
|
-
this.client = client;
|
|
1755
|
-
}
|
|
1756
|
-
/**
|
|
1757
|
-
* Native 支付下单
|
|
1758
|
-
*
|
|
1759
|
-
* 商户通过此接口生成订单并获取二维码链接(code_url)。
|
|
1760
|
-
* code_url 有效期为 2 小时,超过 2 小时需使用原下单参数重新请求。
|
|
1761
|
-
*
|
|
1762
|
-
* 商户后端获取 code_url 后传递给前端,前端将其转换为二维码图片展示给用户。
|
|
1763
|
-
* 用户使用微信扫一扫扫描二维码后,将调起微信收银台完成支付。
|
|
1764
|
-
*
|
|
1765
|
-
* @see https://pay.weixin.qq.com/doc/v3/merchant/4012791877
|
|
1766
|
-
*/
|
|
1767
|
-
async createOrder(request) {
|
|
1768
|
-
return this.client.post("/v3/pay/transactions/native", request);
|
|
1769
|
-
}
|
|
1770
|
-
/**
|
|
1771
|
-
* 查询订单
|
|
1772
|
-
*
|
|
1773
|
-
* 支持通过微信支付订单号或商户订单号查询订单状态。
|
|
1774
|
-
*
|
|
1775
|
-
* @see https://pay.weixin.qq.com/doc/v3/merchant/4012791879 (微信支付订单号查询订单)
|
|
1776
|
-
* @see https://pay.weixin.qq.com/doc/v3/merchant/4012791880 (商户订单号查询订单)
|
|
1777
|
-
*/
|
|
1778
|
-
async queryOrderById(params) {
|
|
1779
|
-
if (params.transactionId) {
|
|
1780
|
-
return this.queryOrderByTransactionId(params.transactionId);
|
|
1781
|
-
}
|
|
1782
|
-
if (params.outTradeNo) {
|
|
1783
|
-
return this.queryOrderByOutTradeNo(params.outTradeNo);
|
|
1784
|
-
}
|
|
1785
|
-
throw new Error("outTradeNo \u6216 transactionId \u5FC5\u987B\u63D0\u4F9B\u5176\u4E2D\u4E00\u4E2A");
|
|
1786
|
-
}
|
|
1787
|
-
async queryOrderByOutTradeNo(outTradeNo) {
|
|
1788
|
-
return this.client.get(`/v3/pay/transactions/out-trade-no/${outTradeNo}`, {
|
|
1789
|
-
mchid: this.client.mchid
|
|
1790
|
-
});
|
|
1791
|
-
}
|
|
1792
|
-
async queryOrderByTransactionId(transactionId) {
|
|
1793
|
-
return this.client.get(`/v3/pay/transactions/id/${transactionId}`, {
|
|
1794
|
-
mchid: this.client.mchid
|
|
1795
|
-
});
|
|
1796
|
-
}
|
|
1797
|
-
/**
|
|
1798
|
-
* 关闭订单
|
|
1799
|
-
*
|
|
1800
|
-
* 对于未支付的订单,商户可通过此接口关闭订单。
|
|
1801
|
-
* 关单后,订单状态从未支付(NOTPAY)流转为已关闭(CLOSED)。
|
|
1802
|
-
*
|
|
1803
|
-
* @see https://pay.weixin.qq.com/doc/v3/merchant/4012791881
|
|
1804
|
-
*/
|
|
1805
|
-
async closeOrder(outTradeNo, request) {
|
|
1806
|
-
return this.client.post(`/v3/pay/transactions/out-trade-no/${outTradeNo}/close`, request);
|
|
1807
|
-
}
|
|
1808
|
-
/**
|
|
1809
|
-
* 申请退款
|
|
1810
|
-
*
|
|
1811
|
-
* 当订单状态为支付成功(SUCCESS)时,商户可通过此接口申请退款。
|
|
1812
|
-
* 仅支持支付成功后 1 年内的订单。
|
|
1813
|
-
*
|
|
1814
|
-
* @see https://pay.weixin.qq.com/doc/v3/merchant/4012791883
|
|
1815
|
-
*/
|
|
1816
|
-
async createRefund(request) {
|
|
1817
|
-
return this.client.post("/v3/refund/domestic/refunds", request);
|
|
1818
|
-
}
|
|
1819
|
-
/**
|
|
1820
|
-
* 查询退款单
|
|
1821
|
-
*
|
|
1822
|
-
* 通过商户退款单号查询退款状态。
|
|
1823
|
-
*
|
|
1824
|
-
* @see https://pay.weixin.qq.com/doc/v3/merchant/4012791884
|
|
1825
|
-
*/
|
|
1826
|
-
async queryRefund(params) {
|
|
1827
|
-
return this.client.get(
|
|
1828
|
-
`/v3/refund/domestic/refunds/${params.outRefundNo}`
|
|
1829
|
-
);
|
|
1830
|
-
}
|
|
1831
|
-
/**
|
|
1832
|
-
* 申请异常退款
|
|
1833
|
-
*
|
|
1834
|
-
* 当退款状态为 ABNORMAL 时,可通过此接口发起异常退款处理。
|
|
1835
|
-
* 支持退款至用户银行卡或退款至交易商户银行账户两种方式。
|
|
1836
|
-
*
|
|
1837
|
-
* @param refundId - 微信支付退款单号
|
|
1838
|
-
* @param request - 异常退款请求参数
|
|
1839
|
-
* @see https://pay.weixin.qq.com/doc/v3/merchant/4012791885
|
|
1840
|
-
*/
|
|
1841
|
-
async applyAbnormalRefund(refundId, request) {
|
|
1842
|
-
return this.client.post(
|
|
1843
|
-
`/v3/refund/domestic/refunds/${refundId}/apply-abnormal-refund`,
|
|
1844
|
-
request
|
|
1845
|
-
);
|
|
1846
|
-
}
|
|
1847
|
-
/**
|
|
1848
|
-
* 申请交易账单
|
|
1849
|
-
*
|
|
1850
|
-
* 商户可通过此接口获取交易账单的下载链接。
|
|
1851
|
-
*
|
|
1852
|
-
* @see https://pay.weixin.qq.com/doc/v3/merchant/4012791887
|
|
1853
|
-
*/
|
|
1854
|
-
async tradeBill(params) {
|
|
1855
|
-
return this.client.get("/v3/bill/tradebill", params);
|
|
1856
|
-
}
|
|
1857
|
-
/**
|
|
1858
|
-
* 申请资金账单
|
|
1859
|
-
*
|
|
1860
|
-
* 商户可通过此接口获取资金账单的下载链接。
|
|
1861
|
-
*
|
|
1862
|
-
* @see https://pay.weixin.qq.com/doc/v3/merchant/4012791888
|
|
1863
|
-
*/
|
|
1864
|
-
async fundFlowBill(params) {
|
|
1865
|
-
return this.client.get("/v3/bill/fundflowbill", params);
|
|
1866
|
-
}
|
|
1867
|
-
/**
|
|
1868
|
-
* 下载账单
|
|
1869
|
-
*
|
|
1870
|
-
* 通过申请账单接口返回的 download_url,以 GET 方式下载账单原始文件。
|
|
1871
|
-
* 下载地址 5 分钟内有效,请及时下载。
|
|
1872
|
-
* 返回的 data 为 Buffer,可能为 GZIP 压缩格式,需要自行解压。
|
|
1873
|
-
*
|
|
1874
|
-
* @param downloadUrl - 申请账单返回的 download_url
|
|
1875
|
-
* @see https://pay.weixin.qq.com/doc/v3/merchant/4012791889
|
|
1876
|
-
*/
|
|
1877
|
-
async downloadBill(downloadUrl) {
|
|
1878
|
-
return this.client.downloadRaw(downloadUrl);
|
|
1879
|
-
}
|
|
1880
|
-
};
|
|
1881
|
-
|
|
1882
|
-
// src/services/combine.ts
|
|
1883
|
-
var CombineService = class {
|
|
1884
|
-
client;
|
|
1885
|
-
constructor(client) {
|
|
1886
|
-
this.client = client;
|
|
1887
|
-
}
|
|
1888
|
-
/**
|
|
1889
|
-
* JSAPI 合单下单
|
|
1890
|
-
*
|
|
1891
|
-
* 商户通过此接口生成合单预付单并获取 prepay_id。
|
|
1892
|
-
* prepay_id 有效期为 2 小时,超过 2 小时需使用原下单参数重新请求。
|
|
1893
|
-
*
|
|
1894
|
-
* 关键约束:
|
|
1895
|
-
* - combine_mchid 需先申请发起合单支付权限
|
|
1896
|
-
* - sub_orders 中的 mchid 需先申请接收合单支付权限
|
|
1897
|
-
* - 合单发起方和子单参与方需绑定同一个 combine_appid
|
|
1898
|
-
* - 子单数量为 2-10 笔
|
|
1899
|
-
* - time_expire 不能早于下单时间后 1 分钟,不能超过下单时间后 7 天
|
|
1900
|
-
*
|
|
1901
|
-
* @see https://pay.weixin.qq.com/doc/v3/merchant/4012556926
|
|
1902
|
-
*/
|
|
1903
|
-
async createOrder(request) {
|
|
1904
|
-
return this.client.post("/v3/combine-transactions/jsapi", request);
|
|
1905
|
-
}
|
|
1906
|
-
/**
|
|
1907
|
-
* 查询合单订单
|
|
1908
|
-
*
|
|
1909
|
-
* 通过合单商户订单号查询合单订单的支付状态及各子单详情。
|
|
1910
|
-
*
|
|
1911
|
-
* 订单状态(sub_orders[].trade_state):
|
|
1912
|
-
* - SUCCESS:支付成功(终态)
|
|
1913
|
-
* - NOTPAY:未支付
|
|
1914
|
-
* - CLOSED:已关闭(终态)
|
|
1915
|
-
*
|
|
1916
|
-
* 注意:请勿使用非合单支付的查单接口查询合单订单。
|
|
1917
|
-
*
|
|
1918
|
-
* @see https://pay.weixin.qq.com/doc/v3/merchant/4013421222
|
|
1919
|
-
*/
|
|
1920
|
-
async queryOrderById(params) {
|
|
1921
|
-
return this.client.get(
|
|
1922
|
-
`/v3/combine-transactions/out-trade-no/${params.combineOutTradeNo}`
|
|
1923
|
-
);
|
|
1924
|
-
}
|
|
1925
|
-
/**
|
|
1926
|
-
* 关闭合单订单
|
|
1927
|
-
*
|
|
1928
|
-
* 对于未支付的合单订单,商户可通过此接口关闭订单。
|
|
1929
|
-
* 关单后,所有子单状态从未支付(NOTPAY)流转为已关闭(CLOSED)。
|
|
1930
|
-
*
|
|
1931
|
-
* 关键约束:
|
|
1932
|
-
* - 只能整单关闭,不支持关闭部分子单
|
|
1933
|
-
* - combine_appid、sub_orders 中的 mchid 和 out_trade_no 必须与下单时完全一致
|
|
1934
|
-
* - 仅支持未支付状态的订单
|
|
1935
|
-
*
|
|
1936
|
-
* @see https://pay.weixin.qq.com/doc/v3/merchant/4013421225
|
|
1937
|
-
*/
|
|
1938
|
-
async closeOrder(params, request) {
|
|
1939
|
-
return this.client.post(
|
|
1940
|
-
`/v3/combine-transactions/out-trade-no/${params.combineOutTradeNo}/close`,
|
|
1941
|
-
request
|
|
1942
|
-
);
|
|
1943
|
-
}
|
|
1944
|
-
/**
|
|
1945
|
-
* 申请退款
|
|
1946
|
-
*
|
|
1947
|
-
* 当子单状态为支付成功(SUCCESS)时,商户可通过此接口对子单申请退款。
|
|
1948
|
-
* 仅支持支付成功后 1 年内的订单。
|
|
1949
|
-
*
|
|
1950
|
-
* 注意:合单支付的订单无法通过合单总单号 combine_out_trade_no 退款,
|
|
1951
|
-
* 需要传入子单的 transaction_id 或 out_trade_no。
|
|
1952
|
-
*
|
|
1953
|
-
* @see https://pay.weixin.qq.com/doc/v3/merchant/4013421249
|
|
1954
|
-
*/
|
|
1955
|
-
async createRefund(request) {
|
|
1956
|
-
return this.client.post("/v3/refund/domestic/refunds", request);
|
|
1957
|
-
}
|
|
1958
|
-
/**
|
|
1959
|
-
* 查询退款单
|
|
1960
|
-
*
|
|
1961
|
-
* 通过商户退款单号查询退款状态。
|
|
1962
|
-
*
|
|
1963
|
-
* @see https://pay.weixin.qq.com/doc/v3/merchant/4013421261
|
|
1964
|
-
*/
|
|
1965
|
-
async queryRefund(params) {
|
|
1966
|
-
return this.client.get(
|
|
1967
|
-
`/v3/refund/domestic/refunds/${params.outRefundNo}`
|
|
1968
|
-
);
|
|
1969
|
-
}
|
|
1970
|
-
/**
|
|
1971
|
-
* 申请异常退款
|
|
1972
|
-
*
|
|
1973
|
-
* 当退款状态为 ABNORMAL 时,可通过此接口发起异常退款处理。
|
|
1974
|
-
* 支持退款至用户银行卡或退款至交易商户银行账户两种方式。
|
|
1975
|
-
*
|
|
1976
|
-
* @param refundId - 微信支付退款单号
|
|
1977
|
-
* @param request - 异常退款请求参数
|
|
1978
|
-
* @see https://pay.weixin.qq.com/doc/v3/merchant/4013421269
|
|
1979
|
-
*/
|
|
1980
|
-
async applyAbnormalRefund(refundId, request) {
|
|
1981
|
-
return this.client.post(
|
|
1982
|
-
`/v3/refund/domestic/refunds/${refundId}/apply-abnormal-refund`,
|
|
1983
|
-
request
|
|
1984
|
-
);
|
|
1985
|
-
}
|
|
1986
|
-
};
|
|
1987
|
-
|
|
1988
|
-
// src/services/combine-h5.ts
|
|
1989
|
-
var CombineH5Service = class {
|
|
1990
|
-
client;
|
|
1991
|
-
constructor(client) {
|
|
1992
|
-
this.client = client;
|
|
1993
|
-
}
|
|
1994
|
-
/**
|
|
1995
|
-
* H5 合单下单
|
|
1996
|
-
*
|
|
1997
|
-
* 商户通过此接口生成 H5 合单支付链接(h5_url),用于在已配置 H5 支付域名的
|
|
1998
|
-
* 网页中跳转并唤起微信支付收银台。h5_url 有效期为 5 分钟,过期后需使用
|
|
1999
|
-
* 原下单参数重新请求。
|
|
2000
|
-
*
|
|
2001
|
-
* 关键约束:
|
|
2002
|
-
* - combine_mchid 需先申请发起合单支付权限
|
|
2003
|
-
* - sub_orders 中的 mchid 需先申请接收合单支付权限
|
|
2004
|
-
* - 合单发起方和子单参与方需绑定同一个 combine_appid
|
|
2005
|
-
* - 子单数量为 2-10 笔
|
|
2006
|
-
* - scene_info.payer_client_ip 需传真实的用户端 IP
|
|
2007
|
-
* - scene_info.h5_info 必填,需指定 type 为 Wap/iOS/Android 之一
|
|
2008
|
-
* - time_expire 不能早于下单时间后 1 分钟,不能超过下单时间后 7 天
|
|
2009
|
-
*
|
|
2010
|
-
* @see https://pay.weixin.qq.com/doc/v3/merchant/4012556961
|
|
2011
|
-
*/
|
|
2012
|
-
async createOrder(request) {
|
|
2013
|
-
return this.client.post("/v3/combine-transactions/h5", request);
|
|
2014
|
-
}
|
|
2015
|
-
/**
|
|
2016
|
-
* 查询合单订单
|
|
2017
|
-
*
|
|
2018
|
-
* 通过合单商户订单号查询合单订单的支付状态及各子单详情。
|
|
2019
|
-
* 合单支付订单需使用合单查单接口,不可使用非合单支付的查单接口。
|
|
2020
|
-
*
|
|
2021
|
-
* 订单状态(sub_orders[].trade_state):
|
|
2022
|
-
* - SUCCESS:支付成功(终态)
|
|
2023
|
-
* - NOTPAY:未支付
|
|
2024
|
-
* - CLOSED:已关闭(终态)
|
|
2025
|
-
*
|
|
2026
|
-
* 典型使用场景:
|
|
2027
|
-
* - 用户支付后从收银台返回商户页面时,确认订单支付状态
|
|
2028
|
-
* - 未收到支付成功回调通知时,主动查询确认订单状态
|
|
2029
|
-
* - 关单前确认订单仍为未支付状态
|
|
2030
|
-
*
|
|
2031
|
-
* @see https://pay.weixin.qq.com/doc/v3/merchant/4013421126
|
|
2032
|
-
*/
|
|
2033
|
-
async queryOrderById(params) {
|
|
2034
|
-
return this.client.get(
|
|
2035
|
-
`/v3/combine-transactions/out-trade-no/${params.combineOutTradeNo}`
|
|
2036
|
-
);
|
|
2037
|
-
}
|
|
2038
|
-
/**
|
|
2039
|
-
* 关闭合单订单
|
|
2040
|
-
*
|
|
2041
|
-
* 对于未支付的合单订单,商户可通过此接口关闭订单。
|
|
2042
|
-
* 关单后,所有子单状态从未支付(NOTPAY)流转为已关闭(CLOSED)。
|
|
2043
|
-
*
|
|
2044
|
-
* 关键约束:
|
|
2045
|
-
* - 只能整单关闭,不支持关闭部分子单
|
|
2046
|
-
* - combine_appid、sub_orders 中的 mchid 和 out_trade_no 必须与下单时完全一致
|
|
2047
|
-
* - 仅支持未支付状态的订单
|
|
2048
|
-
* - 关单后订单为失败终态
|
|
2049
|
-
*
|
|
2050
|
-
* 典型使用场景:
|
|
2051
|
-
* - 用户超过商户系统内部规定的支付时间
|
|
2052
|
-
* - 超过下单时设置的 time_expire 时间
|
|
2053
|
-
* - 因特殊原因需在可支付时间范围内关闭订单
|
|
2054
|
-
*
|
|
2055
|
-
* @see https://pay.weixin.qq.com/doc/v3/merchant/4013421130
|
|
2056
|
-
*/
|
|
2057
|
-
async closeOrder(params, request) {
|
|
2058
|
-
return this.client.post(
|
|
2059
|
-
`/v3/combine-transactions/out-trade-no/${params.combineOutTradeNo}/close`,
|
|
2060
|
-
request
|
|
2061
|
-
);
|
|
2062
|
-
}
|
|
2063
|
-
/**
|
|
2064
|
-
* 申请退款(基于子单)
|
|
2065
|
-
*
|
|
2066
|
-
* 合单支付的订单退款,无法通过合单商户订单号(combine_out_trade_no)退款,
|
|
2067
|
-
* 只能根据单个子单进行退款。传入子单的 out_trade_no 或 transaction_id。
|
|
2068
|
-
*
|
|
2069
|
-
* 当子单状态为支付成功(SUCCESS)时,商户可通过此接口申请退款。
|
|
2070
|
-
* 仅支持支付成功后 1 年内的订单。
|
|
2071
|
-
*
|
|
2072
|
-
* @see https://pay.weixin.qq.com/doc/v3/merchant/4013421148
|
|
2073
|
-
*/
|
|
2074
|
-
async createRefund(request) {
|
|
2075
|
-
return this.client.post("/v3/refund/domestic/refunds", request);
|
|
2076
|
-
}
|
|
2077
|
-
/**
|
|
2078
|
-
* 查询退款单
|
|
2079
|
-
*
|
|
2080
|
-
* 通过商户退款单号查询退款状态。
|
|
2081
|
-
* 退款申请成功后,可通过此接口确认退款是否到账。
|
|
2082
|
-
*
|
|
2083
|
-
* 退款状态:
|
|
2084
|
-
* - SUCCESS:退款成功
|
|
2085
|
-
* - CLOSED:退款关闭
|
|
2086
|
-
* - PROCESSING:退款处理中
|
|
2087
|
-
* - ABNORMAL:退款异常
|
|
2088
|
-
*
|
|
2089
|
-
* @see https://pay.weixin.qq.com/doc/v3/merchant/4013421156
|
|
2090
|
-
*/
|
|
2091
|
-
async queryRefund(params) {
|
|
2092
|
-
return this.client.get(
|
|
2093
|
-
`/v3/refund/domestic/refunds/${params.outRefundNo}`
|
|
2094
|
-
);
|
|
2095
|
-
}
|
|
2096
|
-
/**
|
|
2097
|
-
* 申请异常退款
|
|
2098
|
-
*
|
|
2099
|
-
* 当退款状态为 ABNORMAL 时,可通过此接口发起异常退款处理。
|
|
2100
|
-
* 支持退款至用户银行卡或退款至交易商户银行账户两种方式。
|
|
2101
|
-
*
|
|
2102
|
-
* @param refundId - 微信支付退款单号
|
|
2103
|
-
* @param request - 异常退款请求参数
|
|
2104
|
-
* @see https://pay.weixin.qq.com/doc/v3/merchant/4013421164
|
|
2105
|
-
*/
|
|
2106
|
-
async applyAbnormalRefund(refundId, request) {
|
|
2107
|
-
return this.client.post(
|
|
2108
|
-
`/v3/refund/domestic/refunds/${refundId}/apply-abnormal-refund`,
|
|
2109
|
-
request
|
|
2110
|
-
);
|
|
1649
|
+
async createOrder(request) {
|
|
1650
|
+
return this.client.post("/v3/combine-transactions/h5", request);
|
|
2111
1651
|
}
|
|
2112
1652
|
};
|
|
2113
1653
|
|
|
2114
1654
|
// src/services/combine-app.ts
|
|
2115
|
-
var CombineAppService = class {
|
|
2116
|
-
client;
|
|
2117
|
-
constructor(client) {
|
|
2118
|
-
this.client = client;
|
|
2119
|
-
}
|
|
1655
|
+
var CombineAppService = class extends BaseCombineService {
|
|
2120
1656
|
/**
|
|
2121
1657
|
* APP 合单下单
|
|
2122
1658
|
*
|
|
@@ -2134,329 +1670,45 @@ var CombineAppService = class {
|
|
|
2134
1670
|
* - 子单数量为 2-10 笔
|
|
2135
1671
|
* - time_expire 不能早于下单时间后 1 分钟,不能超过下单时间后 7 天
|
|
2136
1672
|
*
|
|
2137
|
-
* @see https://pay.weixin.qq.com/doc/v3/merchant/4012556944
|
|
2138
|
-
*/
|
|
2139
|
-
async createOrder(request) {
|
|
2140
|
-
return this.client.post("/v3/combine-transactions/app", request);
|
|
2141
|
-
}
|
|
2142
|
-
/**
|
|
2143
|
-
* 查询合单订单
|
|
2144
|
-
*
|
|
2145
|
-
* 通过合单商户订单号查询合单订单的支付状态及各子单详情。
|
|
2146
|
-
* 合单支付订单需使用合单查单接口,不可使用非合单支付的查单接口。
|
|
2147
|
-
*
|
|
2148
|
-
* 订单状态(sub_orders[].trade_state):
|
|
2149
|
-
* - SUCCESS:支付成功(终态)
|
|
2150
|
-
* - NOTPAY:未支付
|
|
2151
|
-
* - CLOSED:已关闭(终态)
|
|
2152
|
-
*
|
|
2153
|
-
* 典型使用场景:
|
|
2154
|
-
* - 用户支付后从微信收银台返回商户 APP 时,OpenSDK 回调 onResp 后确认订单支付状态
|
|
2155
|
-
* - 未收到支付成功回调通知时,主动查询确认订单状态
|
|
2156
|
-
* - 关单前确认订单仍为未支付状态
|
|
2157
|
-
*
|
|
2158
|
-
* @see https://pay.weixin.qq.com/doc/v3/merchant/4012557006
|
|
2159
|
-
*/
|
|
2160
|
-
async queryOrderById(params) {
|
|
2161
|
-
return this.client.get(
|
|
2162
|
-
`/v3/combine-transactions/out-trade-no/${params.combineOutTradeNo}`
|
|
2163
|
-
);
|
|
2164
|
-
}
|
|
2165
|
-
/**
|
|
2166
|
-
* 关闭合单订单
|
|
2167
|
-
*
|
|
2168
|
-
* 对于未支付的合单订单,商户可通过此接口关闭订单。
|
|
2169
|
-
* 关单后,所有子单状态从未支付(NOTPAY)流转为已关闭(CLOSED)。
|
|
2170
|
-
*
|
|
2171
|
-
* 关键约束:
|
|
2172
|
-
* - 只能整单关闭,不支持关闭部分子单
|
|
2173
|
-
* - combine_appid、sub_orders 中的 mchid 和 out_trade_no 必须与下单时完全一致
|
|
2174
|
-
* - 仅支持未支付状态的订单
|
|
2175
|
-
* - 关单后订单为失败终态
|
|
2176
|
-
*
|
|
2177
|
-
* 典型使用场景:
|
|
2178
|
-
* - 用户超过商户系统内部规定的支付时间
|
|
2179
|
-
* - 超过下单时设置的 time_expire 时间
|
|
2180
|
-
* - 因特殊原因需在可支付时间范围内关闭订单
|
|
2181
|
-
*
|
|
2182
|
-
* @see https://pay.weixin.qq.com/doc/v3/merchant/4012577452
|
|
2183
|
-
*/
|
|
2184
|
-
async closeOrder(params, request) {
|
|
2185
|
-
return this.client.post(
|
|
2186
|
-
`/v3/combine-transactions/out-trade-no/${params.combineOutTradeNo}/close`,
|
|
2187
|
-
request
|
|
2188
|
-
);
|
|
2189
|
-
}
|
|
2190
|
-
/**
|
|
2191
|
-
* 申请退款(基于子单)
|
|
2192
|
-
*
|
|
2193
|
-
* 合单支付的订单退款,无法通过合单商户订单号(combine_out_trade_no)退款,
|
|
2194
|
-
* 只能根据单个子单进行退款。传入子单的 out_trade_no 或 transaction_id。
|
|
2195
|
-
*
|
|
2196
|
-
* 当子单状态为支付成功(SUCCESS)时,商户可通过此接口申请退款。
|
|
2197
|
-
* 仅支持支付成功后 1 年内的订单。
|
|
2198
|
-
*
|
|
2199
|
-
* 注意:
|
|
2200
|
-
* - 一笔订单最多支持 50 次部分退款,间隔至少 1 分钟
|
|
2201
|
-
* - 重试时必须使用原商户退款单号,避免重复退款
|
|
2202
|
-
* - 接口返回成功仅表示受理成功,最终结果以回调通知和查询接口为准
|
|
2203
|
-
*
|
|
2204
|
-
* @see https://pay.weixin.qq.com/doc/v3/merchant/4012556524
|
|
2205
|
-
*/
|
|
2206
|
-
async createRefund(request) {
|
|
2207
|
-
return this.client.post("/v3/refund/domestic/refunds", request);
|
|
2208
|
-
}
|
|
2209
|
-
/**
|
|
2210
|
-
* 查询退款单
|
|
2211
|
-
*
|
|
2212
|
-
* 通过商户退款单号查询退款状态。
|
|
2213
|
-
* 退款申请成功后,可通过此接口确认退款是否到账。
|
|
2214
|
-
*
|
|
2215
|
-
* 退款状态:
|
|
2216
|
-
* - SUCCESS:退款成功
|
|
2217
|
-
* - CLOSED:退款关闭
|
|
2218
|
-
* - PROCESSING:退款处理中
|
|
2219
|
-
* - ABNORMAL:退款异常
|
|
2220
|
-
*
|
|
2221
|
-
* @see https://pay.weixin.qq.com/doc/v3/merchant/4012556587
|
|
2222
|
-
*/
|
|
2223
|
-
async queryRefund(params) {
|
|
2224
|
-
return this.client.get(
|
|
2225
|
-
`/v3/refund/domestic/refunds/${params.outRefundNo}`
|
|
2226
|
-
);
|
|
2227
|
-
}
|
|
2228
|
-
/**
|
|
2229
|
-
* 申请异常退款
|
|
2230
|
-
*
|
|
2231
|
-
* 当退款状态为 ABNORMAL 时,可通过此接口发起异常退款处理。
|
|
2232
|
-
* 支持退款至用户银行卡或退款至交易商户银行账户两种方式。
|
|
2233
|
-
*
|
|
2234
|
-
* @param refundId - 微信支付退款单号
|
|
2235
|
-
* @param request - 异常退款请求参数
|
|
2236
|
-
* @see https://pay.weixin.qq.com/doc/v3/merchant/4013420988
|
|
2237
|
-
*/
|
|
2238
|
-
async applyAbnormalRefund(refundId, request) {
|
|
2239
|
-
return this.client.post(
|
|
2240
|
-
`/v3/refund/domestic/refunds/${refundId}/apply-abnormal-refund`,
|
|
2241
|
-
request
|
|
2242
|
-
);
|
|
2243
|
-
}
|
|
2244
|
-
/**
|
|
2245
|
-
* 申请交易账单
|
|
2246
|
-
*
|
|
2247
|
-
* 合单支付的订单账单是以子单为维度,每笔子单都会记录在各个子单商户账单内,
|
|
2248
|
-
* 需要各个子单商户自己进行下载。
|
|
2249
|
-
*
|
|
2250
|
-
* 商户可通过此接口获取交易账单的下载链接,下载地址 5 分钟内有效。
|
|
2251
|
-
*
|
|
2252
|
-
* @see https://pay.weixin.qq.com/doc/v3/merchant/4012556692
|
|
2253
|
-
*/
|
|
2254
|
-
async tradeBill(params) {
|
|
2255
|
-
return this.client.get("/v3/bill/tradebill", params);
|
|
2256
|
-
}
|
|
2257
|
-
/**
|
|
2258
|
-
* 申请资金账单
|
|
2259
|
-
*
|
|
2260
|
-
* 商户可通过此接口获取资金账单的下载链接,下载地址 5 分钟内有效。
|
|
2261
|
-
*
|
|
2262
|
-
* @see https://pay.weixin.qq.com/doc/v3/merchant/4012556748
|
|
2263
|
-
*/
|
|
2264
|
-
async fundFlowBill(params) {
|
|
2265
|
-
return this.client.get("/v3/bill/fundflowbill", params);
|
|
2266
|
-
}
|
|
2267
|
-
/**
|
|
2268
|
-
* 下载账单
|
|
2269
|
-
*
|
|
2270
|
-
* 通过申请账单接口返回的 download_url,以 GET 方式下载账单原始文件。
|
|
2271
|
-
* 下载地址 5 分钟内有效,请及时下载。
|
|
2272
|
-
* 返回的 data 为 Buffer,可能为 GZIP 压缩格式,需要自行解压。
|
|
2273
|
-
*
|
|
2274
|
-
* @param downloadUrl - 申请账单返回的 download_url
|
|
2275
|
-
* @see https://pay.weixin.qq.com/doc/v3/merchant/4012085923
|
|
2276
|
-
*/
|
|
2277
|
-
async downloadBill(downloadUrl) {
|
|
2278
|
-
return this.client.downloadRaw(downloadUrl);
|
|
2279
|
-
}
|
|
2280
|
-
};
|
|
2281
|
-
|
|
2282
|
-
// src/services/combine-miniprogram.ts
|
|
2283
|
-
var CombineMiniProgramService = class {
|
|
2284
|
-
client;
|
|
2285
|
-
constructor(client) {
|
|
2286
|
-
this.client = client;
|
|
2287
|
-
}
|
|
2288
|
-
/**
|
|
2289
|
-
* 小程序合单下单
|
|
2290
|
-
*
|
|
2291
|
-
* 商户通过此接口生成小程序合单预付单并获取 prepay_id。
|
|
2292
|
-
* 获取 prepay_id 后,配合 buildMiniProgramBridgeConfig 生成调起支付参数,
|
|
2293
|
-
* 通过小程序 wx.requestPayment() 方法唤起微信支付收银台。
|
|
2294
|
-
*
|
|
2295
|
-
* prepay_id 有效期为 2 小时,超过 2 小时需使用原下单参数重新请求。
|
|
2296
|
-
*
|
|
2297
|
-
* 关键约束:
|
|
2298
|
-
* - combine_mchid 需先申请发起合单支付权限
|
|
2299
|
-
* - sub_orders 中的 mchid 需先申请接收合单支付权限
|
|
2300
|
-
* - 合单发起方和子单参与方需绑定同一个 combine_appid
|
|
2301
|
-
* - combine_appid 必须为小程序 AppID
|
|
2302
|
-
* - combine_payer_info.openid 在小程序场景下可选(由运行环境隐式提供)
|
|
2303
|
-
* - 子单数量为 2-10 笔
|
|
2304
|
-
* - time_expire 不能早于下单时间后 1 分钟,不能超过下单时间后 7 天
|
|
2305
|
-
*
|
|
2306
|
-
* @see https://pay.weixin.qq.com/doc/v3/merchant/4012556931
|
|
2307
|
-
*/
|
|
2308
|
-
async createOrder(request) {
|
|
2309
|
-
return this.client.post(
|
|
2310
|
-
"/v3/combine-transactions/jsapi",
|
|
2311
|
-
request
|
|
2312
|
-
);
|
|
2313
|
-
}
|
|
2314
|
-
/**
|
|
2315
|
-
* 查询合单订单
|
|
2316
|
-
*
|
|
2317
|
-
* 通过合单商户订单号查询合单订单的支付状态及各子单详情。
|
|
2318
|
-
* 合单支付订单需使用合单查单接口,不可使用非合单支付的查单接口。
|
|
2319
|
-
*
|
|
2320
|
-
* 订单状态(sub_orders[].trade_state):
|
|
2321
|
-
* - SUCCESS:支付成功(终态)
|
|
2322
|
-
* - NOTPAY:未支付
|
|
2323
|
-
* - CLOSED:已关闭(终态)
|
|
2324
|
-
*
|
|
2325
|
-
* 典型使用场景:
|
|
2326
|
-
* - 用户支付后从收银台返回小程序页面时,requestPayment 回调后确认订单支付状态
|
|
2327
|
-
* - 未收到支付成功回调通知时,主动查询确认订单状态
|
|
2328
|
-
* - 关单前确认订单仍为未支付状态
|
|
2329
|
-
*
|
|
2330
|
-
* @see https://pay.weixin.qq.com/doc/v3/merchant/4013421401
|
|
2331
|
-
*/
|
|
2332
|
-
async queryOrderById(params) {
|
|
2333
|
-
return this.client.get(
|
|
2334
|
-
`/v3/combine-transactions/out-trade-no/${params.combineOutTradeNo}`
|
|
2335
|
-
);
|
|
2336
|
-
}
|
|
2337
|
-
/**
|
|
2338
|
-
* 关闭合单订单
|
|
2339
|
-
*
|
|
2340
|
-
* 对于未支付的合单订单,商户可通过此接口关闭订单。
|
|
2341
|
-
* 关单后,所有子单状态从未支付(NOTPAY)流转为已关闭(CLOSED)。
|
|
2342
|
-
*
|
|
2343
|
-
* 关键约束:
|
|
2344
|
-
* - 只能整单关闭,不支持关闭部分子单
|
|
2345
|
-
* - combine_appid、sub_orders 中的 mchid 和 out_trade_no 必须与下单时完全一致
|
|
2346
|
-
* - 仅支持未支付状态的订单
|
|
2347
|
-
* - 关单后订单为失败终态
|
|
2348
|
-
*
|
|
2349
|
-
* 典型使用场景:
|
|
2350
|
-
* - 用户超过商户系统内部规定的支付时间
|
|
2351
|
-
* - 超过下单时设置的 time_expire 时间
|
|
2352
|
-
* - 因特殊原因需在可支付时间范围内关闭订单
|
|
2353
|
-
*
|
|
2354
|
-
* @see https://pay.weixin.qq.com/doc/v3/merchant/4013421404
|
|
2355
|
-
*/
|
|
2356
|
-
async closeOrder(params, request) {
|
|
2357
|
-
return this.client.post(
|
|
2358
|
-
`/v3/combine-transactions/out-trade-no/${params.combineOutTradeNo}/close`,
|
|
2359
|
-
request
|
|
2360
|
-
);
|
|
2361
|
-
}
|
|
2362
|
-
/**
|
|
2363
|
-
* 申请退款(基于子单)
|
|
2364
|
-
*
|
|
2365
|
-
* 合单支付的订单退款,无法通过合单商户订单号(combine_out_trade_no)退款,
|
|
2366
|
-
* 只能根据单个子单进行退款。传入子单的 out_trade_no 或 transaction_id。
|
|
2367
|
-
*
|
|
2368
|
-
* 当子单状态为支付成功(SUCCESS)时,商户可通过此接口申请退款。
|
|
2369
|
-
* 仅支持支付成功后 1 年内的订单。
|
|
2370
|
-
*
|
|
2371
|
-
* 注意:
|
|
2372
|
-
* - 一笔订单最多支持 50 次部分退款,间隔至少 1 分钟
|
|
2373
|
-
* - 重试时必须使用原商户退款单号,避免重复退款
|
|
2374
|
-
* - 接口返回成功仅表示受理成功,最终结果以回调通知和查询接口为准
|
|
2375
|
-
*
|
|
2376
|
-
* @see https://pay.weixin.qq.com/doc/v3/merchant/4013421410
|
|
2377
|
-
*/
|
|
2378
|
-
async createRefund(request) {
|
|
2379
|
-
return this.client.post("/v3/refund/domestic/refunds", request);
|
|
2380
|
-
}
|
|
2381
|
-
/**
|
|
2382
|
-
* 查询退款单
|
|
2383
|
-
*
|
|
2384
|
-
* 通过商户退款单号查询退款状态。
|
|
2385
|
-
* 退款申请成功后,可通过此接口确认退款是否到账。
|
|
2386
|
-
*
|
|
2387
|
-
* 退款状态:
|
|
2388
|
-
* - SUCCESS:退款成功
|
|
2389
|
-
* - CLOSED:退款关闭
|
|
2390
|
-
* - PROCESSING:退款处理中
|
|
2391
|
-
* - ABNORMAL:退款异常
|
|
2392
|
-
*
|
|
2393
|
-
* @see https://pay.weixin.qq.com/doc/v3/merchant/4013421421
|
|
2394
|
-
*/
|
|
2395
|
-
async queryRefund(params) {
|
|
2396
|
-
return this.client.get(
|
|
2397
|
-
`/v3/refund/domestic/refunds/${params.outRefundNo}`
|
|
2398
|
-
);
|
|
2399
|
-
}
|
|
2400
|
-
/**
|
|
2401
|
-
* 申请异常退款
|
|
2402
|
-
*
|
|
2403
|
-
* 当退款状态为 ABNORMAL 时,可通过此接口发起异常退款处理。
|
|
2404
|
-
* 支持退款至用户银行卡或退款至交易商户银行账户两种方式。
|
|
2405
|
-
*
|
|
2406
|
-
* @param refundId - 微信支付退款单号
|
|
2407
|
-
* @param request - 异常退款请求参数
|
|
2408
|
-
* @see https://pay.weixin.qq.com/doc/v3/merchant/4013421429
|
|
2409
|
-
*/
|
|
2410
|
-
async applyAbnormalRefund(refundId, request) {
|
|
2411
|
-
return this.client.post(
|
|
2412
|
-
`/v3/refund/domestic/refunds/${refundId}/apply-abnormal-refund`,
|
|
2413
|
-
request
|
|
2414
|
-
);
|
|
2415
|
-
}
|
|
2416
|
-
/**
|
|
2417
|
-
* 申请交易账单
|
|
2418
|
-
*
|
|
2419
|
-
* 合单支付的订单账单是以子单为维度,每笔子单都会记录在各个子单商户账单内,
|
|
2420
|
-
* 需要各个子单商户自己进行下载。
|
|
2421
|
-
*
|
|
2422
|
-
* 商户可通过此接口获取交易账单的下载链接,下载地址 5 分钟内有效。
|
|
2423
|
-
*
|
|
2424
|
-
* @see https://pay.weixin.qq.com/doc/v3/merchant/4013421450
|
|
2425
|
-
*/
|
|
2426
|
-
async tradeBill(params) {
|
|
2427
|
-
return this.client.get("/v3/bill/tradebill", params);
|
|
2428
|
-
}
|
|
2429
|
-
/**
|
|
2430
|
-
* 申请资金账单
|
|
2431
|
-
*
|
|
2432
|
-
* 商户可通过此接口获取资金账单的下载链接,下载地址 5 分钟内有效。
|
|
2433
|
-
*
|
|
2434
|
-
* @see https://pay.weixin.qq.com/doc/v3/merchant/4013421456
|
|
1673
|
+
* @see https://pay.weixin.qq.com/doc/v3/merchant/4012556944
|
|
2435
1674
|
*/
|
|
2436
|
-
async
|
|
2437
|
-
return this.client.
|
|
1675
|
+
async createOrder(request) {
|
|
1676
|
+
return this.client.post("/v3/combine-transactions/app", request);
|
|
2438
1677
|
}
|
|
1678
|
+
};
|
|
1679
|
+
|
|
1680
|
+
// src/services/combine-miniprogram.ts
|
|
1681
|
+
var CombineMiniProgramService = class extends BaseCombineService {
|
|
2439
1682
|
/**
|
|
2440
|
-
*
|
|
1683
|
+
* 小程序合单下单
|
|
2441
1684
|
*
|
|
2442
|
-
*
|
|
2443
|
-
*
|
|
2444
|
-
*
|
|
1685
|
+
* 商户通过此接口生成小程序合单预付单并获取 prepay_id。
|
|
1686
|
+
* 获取 prepay_id 后,配合 buildMiniProgramBridgeConfig 生成调起支付参数,
|
|
1687
|
+
* 通过小程序 wx.requestPayment() 方法唤起微信支付收银台。
|
|
1688
|
+
*
|
|
1689
|
+
* prepay_id 有效期为 2 小时,超过 2 小时需使用原下单参数重新请求。
|
|
1690
|
+
*
|
|
1691
|
+
* 关键约束:
|
|
1692
|
+
* - combine_mchid 需先申请发起合单支付权限
|
|
1693
|
+
* - sub_orders 中的 mchid 需先申请接收合单支付权限
|
|
1694
|
+
* - 合单发起方和子单参与方需绑定同一个 combine_appid
|
|
1695
|
+
* - combine_appid 必须为小程序 AppID
|
|
1696
|
+
* - combine_payer_info.openid 在小程序场景下可选(由运行环境隐式提供)
|
|
1697
|
+
* - 子单数量为 2-10 笔
|
|
1698
|
+
* - time_expire 不能早于下单时间后 1 分钟,不能超过下单时间后 7 天
|
|
2445
1699
|
*
|
|
2446
|
-
* @
|
|
2447
|
-
* @see https://pay.weixin.qq.com/doc/v3/merchant/4013421461
|
|
1700
|
+
* @see https://pay.weixin.qq.com/doc/v3/merchant/4012556931
|
|
2448
1701
|
*/
|
|
2449
|
-
async
|
|
2450
|
-
return this.client.
|
|
1702
|
+
async createOrder(request) {
|
|
1703
|
+
return this.client.post(
|
|
1704
|
+
"/v3/combine-transactions/jsapi",
|
|
1705
|
+
request
|
|
1706
|
+
);
|
|
2451
1707
|
}
|
|
2452
1708
|
};
|
|
2453
1709
|
|
|
2454
1710
|
// src/services/combine-native.ts
|
|
2455
|
-
var CombineNativeService = class {
|
|
2456
|
-
client;
|
|
2457
|
-
constructor(client) {
|
|
2458
|
-
this.client = client;
|
|
2459
|
-
}
|
|
1711
|
+
var CombineNativeService = class extends BaseCombineService {
|
|
2460
1712
|
/**
|
|
2461
1713
|
* Native 合单下单
|
|
2462
1714
|
*
|
|
@@ -2483,144 +1735,6 @@ var CombineNativeService = class {
|
|
|
2483
1735
|
request
|
|
2484
1736
|
);
|
|
2485
1737
|
}
|
|
2486
|
-
/**
|
|
2487
|
-
* 查询合单订单
|
|
2488
|
-
*
|
|
2489
|
-
* 通过合单商户订单号查询合单订单的支付状态及各子单详情。
|
|
2490
|
-
* 合单支付订单需使用合单查单接口,不可使用非合单支付的查单接口。
|
|
2491
|
-
*
|
|
2492
|
-
* 订单状态(sub_orders[].trade_state):
|
|
2493
|
-
* - SUCCESS:支付成功(终态)
|
|
2494
|
-
* - NOTPAY:未支付
|
|
2495
|
-
* - CLOSED:已关闭(终态)
|
|
2496
|
-
*
|
|
2497
|
-
* 典型使用场景:
|
|
2498
|
-
* - 用户扫码支付后,轮询确认订单支付状态
|
|
2499
|
-
* - 未收到支付成功回调通知时,主动查询确认订单状态
|
|
2500
|
-
* - 关单前确认订单仍为未支付状态
|
|
2501
|
-
*
|
|
2502
|
-
* @see https://pay.weixin.qq.com/doc/v3/merchant/4013421316
|
|
2503
|
-
*/
|
|
2504
|
-
async queryOrderById(params) {
|
|
2505
|
-
return this.client.get(
|
|
2506
|
-
`/v3/combine-transactions/out-trade-no/${params.combineOutTradeNo}`
|
|
2507
|
-
);
|
|
2508
|
-
}
|
|
2509
|
-
/**
|
|
2510
|
-
* 关闭合单订单
|
|
2511
|
-
*
|
|
2512
|
-
* 对于未支付的合单订单,商户可通过此接口关闭订单。
|
|
2513
|
-
* 关单后,所有子单状态从未支付(NOTPAY)流转为已关闭(CLOSED)。
|
|
2514
|
-
*
|
|
2515
|
-
* 关键约束:
|
|
2516
|
-
* - 只能整单关闭,不支持关闭部分子单
|
|
2517
|
-
* - combine_appid、sub_orders 中的 mchid 和 out_trade_no 必须与下单时完全一致
|
|
2518
|
-
* - 仅支持未支付状态的订单
|
|
2519
|
-
* - 关单后订单为失败终态
|
|
2520
|
-
*
|
|
2521
|
-
* 典型使用场景:
|
|
2522
|
-
* - 用户超过商户系统内部规定的支付时间
|
|
2523
|
-
* - 超过下单时设置的 time_expire 时间
|
|
2524
|
-
* - 因特殊原因需在可支付时间范围内关闭订单
|
|
2525
|
-
*
|
|
2526
|
-
* @see https://pay.weixin.qq.com/doc/v3/merchant/4013421330
|
|
2527
|
-
*/
|
|
2528
|
-
async closeOrder(params, request) {
|
|
2529
|
-
return this.client.post(
|
|
2530
|
-
`/v3/combine-transactions/out-trade-no/${params.combineOutTradeNo}/close`,
|
|
2531
|
-
request
|
|
2532
|
-
);
|
|
2533
|
-
}
|
|
2534
|
-
/**
|
|
2535
|
-
* 申请退款(基于子单)
|
|
2536
|
-
*
|
|
2537
|
-
* 合单支付的订单退款,无法通过合单商户订单号(combine_out_trade_no)退款,
|
|
2538
|
-
* 只能根据单个子单进行退款。传入子单的 out_trade_no 或 transaction_id。
|
|
2539
|
-
*
|
|
2540
|
-
* 当子单状态为支付成功(SUCCESS)时,商户可通过此接口申请退款。
|
|
2541
|
-
* 仅支持支付成功后 1 年内的订单。
|
|
2542
|
-
*
|
|
2543
|
-
* 注意:
|
|
2544
|
-
* - 一笔订单最多支持 50 次部分退款,间隔至少 1 分钟
|
|
2545
|
-
* - 重试时必须使用原商户退款单号,避免重复退款
|
|
2546
|
-
* - 接口返回成功仅表示受理成功,最终结果以回调通知和查询接口为准
|
|
2547
|
-
*
|
|
2548
|
-
* @see https://pay.weixin.qq.com/doc/v3/merchant/4013421340
|
|
2549
|
-
*/
|
|
2550
|
-
async createRefund(request) {
|
|
2551
|
-
return this.client.post("/v3/refund/domestic/refunds", request);
|
|
2552
|
-
}
|
|
2553
|
-
/**
|
|
2554
|
-
* 查询退款单
|
|
2555
|
-
*
|
|
2556
|
-
* 通过商户退款单号查询退款状态。
|
|
2557
|
-
* 退款申请成功后,可通过此接口确认退款是否到账。
|
|
2558
|
-
*
|
|
2559
|
-
* 退款状态:
|
|
2560
|
-
* - SUCCESS:退款成功
|
|
2561
|
-
* - CLOSED:退款关闭
|
|
2562
|
-
* - PROCESSING:退款处理中
|
|
2563
|
-
* - ABNORMAL:退款异常
|
|
2564
|
-
*
|
|
2565
|
-
* @see https://pay.weixin.qq.com/doc/v3/merchant/4013421346
|
|
2566
|
-
*/
|
|
2567
|
-
async queryRefund(params) {
|
|
2568
|
-
return this.client.get(
|
|
2569
|
-
`/v3/refund/domestic/refunds/${params.outRefundNo}`
|
|
2570
|
-
);
|
|
2571
|
-
}
|
|
2572
|
-
/**
|
|
2573
|
-
* 申请异常退款
|
|
2574
|
-
*
|
|
2575
|
-
* 当退款状态为 ABNORMAL 时,可通过此接口发起异常退款处理。
|
|
2576
|
-
* 支持退款至用户银行卡或退款至交易商户银行账户两种方式。
|
|
2577
|
-
*
|
|
2578
|
-
* @param refundId - 微信支付退款单号
|
|
2579
|
-
* @param request - 异常退款请求参数
|
|
2580
|
-
* @see https://pay.weixin.qq.com/doc/v3/merchant/4013421352
|
|
2581
|
-
*/
|
|
2582
|
-
async applyAbnormalRefund(refundId, request) {
|
|
2583
|
-
return this.client.post(
|
|
2584
|
-
`/v3/refund/domestic/refunds/${refundId}/apply-abnormal-refund`,
|
|
2585
|
-
request
|
|
2586
|
-
);
|
|
2587
|
-
}
|
|
2588
|
-
/**
|
|
2589
|
-
* 申请交易账单
|
|
2590
|
-
*
|
|
2591
|
-
* 合单支付的订单账单是以子单为维度,每笔子单都会记录在各个子单商户账单内,
|
|
2592
|
-
* 需要各个子单商户自己进行下载。
|
|
2593
|
-
*
|
|
2594
|
-
* 商户可通过此接口获取交易账单的下载链接,下载地址 5 分钟内有效。
|
|
2595
|
-
*
|
|
2596
|
-
* @see https://pay.weixin.qq.com/doc/v3/merchant/4013421361
|
|
2597
|
-
*/
|
|
2598
|
-
async tradeBill(params) {
|
|
2599
|
-
return this.client.get("/v3/bill/tradebill", params);
|
|
2600
|
-
}
|
|
2601
|
-
/**
|
|
2602
|
-
* 申请资金账单
|
|
2603
|
-
*
|
|
2604
|
-
* 商户可通过此接口获取资金账单的下载链接,下载地址 5 分钟内有效。
|
|
2605
|
-
*
|
|
2606
|
-
* @see https://pay.weixin.qq.com/doc/v3/merchant/4013421365
|
|
2607
|
-
*/
|
|
2608
|
-
async fundFlowBill(params) {
|
|
2609
|
-
return this.client.get("/v3/bill/fundflowbill", params);
|
|
2610
|
-
}
|
|
2611
|
-
/**
|
|
2612
|
-
* 下载账单
|
|
2613
|
-
*
|
|
2614
|
-
* 通过申请账单接口返回的 download_url,以 GET 方式下载账单原始文件。
|
|
2615
|
-
* 下载地址 5 分钟内有效,请及时下载。
|
|
2616
|
-
* 返回的 data 为 Buffer,可能为 GZIP 压缩格式,需要自行解压。
|
|
2617
|
-
*
|
|
2618
|
-
* @param downloadUrl - 申请账单返回的 download_url
|
|
2619
|
-
* @see https://pay.weixin.qq.com/doc/v3/merchant/4013421368
|
|
2620
|
-
*/
|
|
2621
|
-
async downloadBill(downloadUrl) {
|
|
2622
|
-
return this.client.downloadRaw(downloadUrl);
|
|
2623
|
-
}
|
|
2624
1738
|
};
|
|
2625
1739
|
|
|
2626
1740
|
// src/services/profitsharing.ts
|
|
@@ -5381,6 +4495,19 @@ var PartnerTransferService = class {
|
|
|
5381
4495
|
{ sub_mchid: subMchid }
|
|
5382
4496
|
);
|
|
5383
4497
|
}
|
|
4498
|
+
/**
|
|
4499
|
+
* 通过微信单号查询转账单
|
|
4500
|
+
*
|
|
4501
|
+
* @param transferBillNo - 微信转账单号
|
|
4502
|
+
* @param subMchid - 特约商户号
|
|
4503
|
+
* @returns 转账单详情
|
|
4504
|
+
*/
|
|
4505
|
+
async queryTransferByTransferBillNo(transferBillNo, subMchid) {
|
|
4506
|
+
return this.client.get(
|
|
4507
|
+
`/v3/fund-app/mch-transfer/partner/transfer-bills/transfer-bill-no/${transferBillNo}`,
|
|
4508
|
+
{ sub_mchid: subMchid }
|
|
4509
|
+
);
|
|
4510
|
+
}
|
|
5384
4511
|
/**
|
|
5385
4512
|
* 撤销转账
|
|
5386
4513
|
*
|
|
@@ -5393,6 +4520,155 @@ var PartnerTransferService = class {
|
|
|
5393
4520
|
{ sub_mchid: subMchid }
|
|
5394
4521
|
);
|
|
5395
4522
|
}
|
|
4523
|
+
// ============= 电子回单 =============
|
|
4524
|
+
/**
|
|
4525
|
+
* 商户单号申请电子回单
|
|
4526
|
+
*
|
|
4527
|
+
* 申请条件:
|
|
4528
|
+
* - 转账单据状态为 SUCCESS
|
|
4529
|
+
* - 传入了收款用户姓名
|
|
4530
|
+
* - 六个月内的转账单据
|
|
4531
|
+
*
|
|
4532
|
+
* 回单有效期为90天,过期需重新申请。
|
|
4533
|
+
*
|
|
4534
|
+
* @see https://pay.weixin.qq.com/doc/v3/partner/4012716452
|
|
4535
|
+
*/
|
|
4536
|
+
async applyElecSignByOutBillNo(request) {
|
|
4537
|
+
return this.client.post(
|
|
4538
|
+
"/v3/fund-app/mch-transfer/partner/elecsign/out-bill-no",
|
|
4539
|
+
request
|
|
4540
|
+
);
|
|
4541
|
+
}
|
|
4542
|
+
/**
|
|
4543
|
+
* 商户单号查询电子回单
|
|
4544
|
+
*
|
|
4545
|
+
* 当申请单状态为 FINISHED 时,返回回单文件的下载地址和摘要信息。
|
|
4546
|
+
* 下载地址有效期为10分钟,过期后需重新调用此接口获取。
|
|
4547
|
+
*
|
|
4548
|
+
* @param outBillNo - 商户单号
|
|
4549
|
+
* @param subMchid - 特约商户号
|
|
4550
|
+
*
|
|
4551
|
+
* @see https://pay.weixin.qq.com/doc/v3/partner/4012716436
|
|
4552
|
+
*/
|
|
4553
|
+
async queryElecSignByOutBillNo(outBillNo, subMchid) {
|
|
4554
|
+
return this.client.get(
|
|
4555
|
+
`/v3/fund-app/mch-transfer/partner/elecsign/out-bill-no/${outBillNo}`,
|
|
4556
|
+
{ sub_mchid: subMchid }
|
|
4557
|
+
);
|
|
4558
|
+
}
|
|
4559
|
+
/**
|
|
4560
|
+
* 微信单号申请电子回单
|
|
4561
|
+
*
|
|
4562
|
+
* @see https://pay.weixin.qq.com/doc/v3/partner/4012716456
|
|
4563
|
+
*/
|
|
4564
|
+
async applyElecSignByTransferBillNo(request) {
|
|
4565
|
+
return this.client.post(
|
|
4566
|
+
"/v3/fund-app/mch-transfer/partner/elecsign/transfer-bill-no",
|
|
4567
|
+
request
|
|
4568
|
+
);
|
|
4569
|
+
}
|
|
4570
|
+
/**
|
|
4571
|
+
* 微信单号查询电子回单
|
|
4572
|
+
*
|
|
4573
|
+
* @param transferBillNo - 微信转账单号
|
|
4574
|
+
* @param subMchid - 特约商户号
|
|
4575
|
+
*
|
|
4576
|
+
* @see https://pay.weixin.qq.com/doc/v3/partner/4012716455
|
|
4577
|
+
*/
|
|
4578
|
+
async queryElecSignByTransferBillNo(transferBillNo, subMchid) {
|
|
4579
|
+
return this.client.get(
|
|
4580
|
+
`/v3/fund-app/mch-transfer/partner/elecsign/transfer-bill-no/${transferBillNo}`,
|
|
4581
|
+
{ sub_mchid: subMchid }
|
|
4582
|
+
);
|
|
4583
|
+
}
|
|
4584
|
+
/**
|
|
4585
|
+
* 下载电子回单
|
|
4586
|
+
*
|
|
4587
|
+
* 通过申请电子回单接口返回的 download_url,以 GET 方式下载回单原始文件。
|
|
4588
|
+
* 下载地址有效期为 10 分钟,过期后需重新调用查询接口获取。
|
|
4589
|
+
* 返回的 data 为 PDF 文件的 Buffer。
|
|
4590
|
+
*
|
|
4591
|
+
* @param downloadUrl - 查询电子回单返回的 download_url
|
|
4592
|
+
* @returns 电子回单文件 Buffer
|
|
4593
|
+
*
|
|
4594
|
+
* @see https://pay.weixin.qq.com/doc/v3/partner/4013866774
|
|
4595
|
+
*/
|
|
4596
|
+
async downloadElecSign(downloadUrl) {
|
|
4597
|
+
return this.client.downloadRaw(downloadUrl);
|
|
4598
|
+
}
|
|
4599
|
+
// ============= 用户授权免确认模式 =============
|
|
4600
|
+
/**
|
|
4601
|
+
* 发起转账并完成免确认收款授权
|
|
4602
|
+
*
|
|
4603
|
+
* 在发起转账的同时申请免确认收款授权,用户确认收款时可同时完成授权。
|
|
4604
|
+
* 授权成功后,后续转账无需用户逐笔确认。
|
|
4605
|
+
*
|
|
4606
|
+
* @see https://pay.weixin.qq.com/doc/v3/partner/4014399293
|
|
4607
|
+
*/
|
|
4608
|
+
async createTransferWithAuthorization(request) {
|
|
4609
|
+
return this.client.post(
|
|
4610
|
+
"/v3/fund-app/mch-transfer/partner/transfer-bills/pre-transfer-with-authorization",
|
|
4611
|
+
request
|
|
4612
|
+
);
|
|
4613
|
+
}
|
|
4614
|
+
/**
|
|
4615
|
+
* 发起免确认收款授权
|
|
4616
|
+
*
|
|
4617
|
+
* 直接申请免确认收款授权,不发起转账。
|
|
4618
|
+
* 用户需在24小时内完成授权,未确认记录保留30天。
|
|
4619
|
+
* 同一微信号在同商户下待确认+已授权状态的授权单最多5个。
|
|
4620
|
+
*
|
|
4621
|
+
* @see https://pay.weixin.qq.com/doc/v3/partner/4015901167
|
|
4622
|
+
*/
|
|
4623
|
+
async createAuthorization(request) {
|
|
4624
|
+
return this.client.post(
|
|
4625
|
+
"/v3/fund-app/mch-transfer/partner/user-confirm-authorization",
|
|
4626
|
+
request
|
|
4627
|
+
);
|
|
4628
|
+
}
|
|
4629
|
+
/**
|
|
4630
|
+
* 商户单号查询授权结果
|
|
4631
|
+
*
|
|
4632
|
+
* @param request - 查询请求参数
|
|
4633
|
+
*
|
|
4634
|
+
* @see https://pay.weixin.qq.com/doc/v3/partner/4014399423
|
|
4635
|
+
*/
|
|
4636
|
+
async queryAuthorizationByOutAuthorizationNo(request) {
|
|
4637
|
+
const { sub_mchid, out_authorization_no, is_display_authorization } = request;
|
|
4638
|
+
return this.client.get(
|
|
4639
|
+
`/v3/fund-app/mch-transfer/partner/user-confirm-authorization/out-authorization-no/${out_authorization_no}`,
|
|
4640
|
+
{ sub_mchid, is_display_authorization }
|
|
4641
|
+
);
|
|
4642
|
+
}
|
|
4643
|
+
/**
|
|
4644
|
+
* 用户授权后转账
|
|
4645
|
+
*
|
|
4646
|
+
* 用户完成授权后,商户可直接发起转账,无需用户逐笔确认收款。
|
|
4647
|
+
* 需要提供 authorization_id 或 out_authorization_no(二选一)。
|
|
4648
|
+
*
|
|
4649
|
+
* @see https://pay.weixin.qq.com/doc/v3/partner/4014399371
|
|
4650
|
+
*/
|
|
4651
|
+
async createTransferAfterAuthorization(request) {
|
|
4652
|
+
return this.client.post(
|
|
4653
|
+
"/v3/fund-app/mch-transfer/partner/transfer-bills/transfer",
|
|
4654
|
+
request
|
|
4655
|
+
);
|
|
4656
|
+
}
|
|
4657
|
+
/**
|
|
4658
|
+
* 解除免确认收款授权
|
|
4659
|
+
*
|
|
4660
|
+
* 商户可调用此接口帮助用户发起解除授权。
|
|
4661
|
+
* 用户也可通过微信支付入账消息的收款设置操作关闭授权。
|
|
4662
|
+
*
|
|
4663
|
+
* @see https://pay.weixin.qq.com/doc/v3/partner/4015653811
|
|
4664
|
+
*/
|
|
4665
|
+
async closeAuthorization(request) {
|
|
4666
|
+
const { sub_mchid, out_authorization_no } = request;
|
|
4667
|
+
return this.client.post(
|
|
4668
|
+
`/v3/fund-app/mch-transfer/partner/user-confirm-authorization/out-authorization-no/${out_authorization_no}/close`,
|
|
4669
|
+
{ sub_mchid }
|
|
4670
|
+
);
|
|
4671
|
+
}
|
|
5396
4672
|
};
|
|
5397
4673
|
|
|
5398
4674
|
// src/services/transfer-batch.ts
|