@ycnt/uniondocpay
v1.0.2
Published
中国银联支付SDK(非开放平台)
Downloads
2
Readme
介绍
中国银联支付非开放平台 Nodejs SDK
目前支持
- 微信公众号支付
- 微信公众号无卡支付
- 微信/支付宝 扫码支付
- APP支付(支付宝)
- APP支付(银联全渠道)
- 订单查寻
- 退款
注:APP支付暂时没有测试。
安装
npm i -S @ycnt/uniondocpay
或
yarn add @ycnt/uniondocpay
使用例子
构造函数
import { Uniondocpay } from '@ycnt/uniondocpay';
const mid = '898340149000005';
const tid = '88880001';
const msgSrc = 'WWW.TEST.COM';
const msgId = '3194';
const md5 = 'fcAmtnx7MwismjWNhNKdHC44mNXtnEQeJkRrhKJwyrW2ysRR';
const notifyUrl = 'http://notifyUrl';
const uniondocpay = new Uniondocpay(mid, tid, msgSrc, msgId, md5, notifyUrl, true);
微信公众号支付
import { Uniondocpay } from '@ycnt/uniondocpay';
const uniondocpay = new Uniondocpay(...);
const url = uniondocpay.mpReq({
merOrderId: 'xxx',
totalAmount: 1,
returnUrl: 'https://frontUrl',
srcReserve: 'xxx',
});
console.log(url);
微信公众号无卡支付
import { Uniondocpay } from '@ycnt/uniondocpay';
const uniondocpay = new Uniondocpay(...);
const url = uniondocpay.noCardReq({
merOrderId: 'xxx',
totalAmount: 1,
returnUrl: 'https://frontUrl',
srcReserve: 'xxx',
});
console.log(url);
微信/支付宝 扫码支付
import { Uniondocpay } from '@ycnt/uniondocpay';
const uniondocpay = new Uniondocpay(...);
(async () => {
const url = await uniondocpay.qrReq({
billNo: 'xxx',
totalAmount: 1,
returnUrl: 'https://frontUrl',
srcReserve: 'xxx',
});
console.log(url);
});
APP支付
import { Uniondocpay } from '@ycnt/uniondocpay';
const uniondocpay = new Uniondocpay(...);
// 支付宝支付
(async () => {
const appAliRes = await uniondocpay.appReq({
merOrderId: Math.floor(Math.random() * 999999).toString(),
totalAmount: 1,
msgType: 'trade.precreate',
srcReserve: 'test001',
});
console.log(appAliRes)
});
// 银联全渠道
(async () => {
const appUacRes = await uniondocpay.appReq({
merOrderId: Math.floor(Math.random() * 999999).toString(),
totalAmount: 1,
msgType: 'uac.appOrder',
srcReserve: 'test001',
});
console.log(appUacRes)
});
订单查寻
- YUEDANDEFAULT: 微信公众号支付,微信公众号无卡支付
- QRPAYDEFAULT: 微信/支付宝 扫码支付
- APPDEFAULT: APP支付
import { Uniondocpay } from '@ycnt/uniondocpay';
const uniondocpay = new Uniondocpay(...);
(async () => {
try {
const res = await uniondocpay.query({
instMid: 'YUEDANDEFAULT',
merOrderId: 'xxx',
});
console.log(res);
} catch(e) {
console.error(e);
}
})();
退款
import { Uniondocpay } from '@ycnt/uniondocpay';
const uniondocpay = new Uniondocpay(...);
(async () => {
try {
const res = await uniondocpay.refund({
instMid: 'YUEDANDEFAULT',
merOrderId: 'xxx',
refundAmount: 0,
});
console.log(res);
} catch(e) {
console.error(e);
}
})();
验签
后台通知验签,本例使用 koa 和 koa-better-body
import { Uniondocpay } from '@ycnt/uniondocpay';
const uniondocpay = new Uniondocpay(...);
public webhook = async (ctx: IContext) => {
try {
if (!uniondocpay.verify(ctx.request.fields)) throw new Error('签名错误');
// 这里处理支付成功
ctx.status = 200;
ctx.body = 'SUCCESS';
} catch (e) {
console.error(e);
ctx.body = 'FAIL';
}
};