@ycnt/unionpay
v1.0.1
Published
中国银联开放平台支付SDK
Downloads
3
Readme
介绍
中国银联支付开放平台 Nodejs SDK, 适用于API版本5.0.0
目前支持
安装
npm i -S @ycnt/unionpay
或
yarn add @ycnt/unionpay
使用例子
APP下单
import { Unionpay } from '@ycnt/unionpay';
const pfxPath = __dirname + '/cer/700000000000001_acp.pfx';
const pfxPassword = '000000';
const merId = '777290058160513';
const cer = __dirname + '/cer/verify_sign_acp.cer';
const backUrl = 'http://backUrl';
const unionpay = new Unionpay(pfxPath, pfxPassword, merId, cer, backUrl, true);
(async () => {
try {
await unionpay.init();
const res = await unionpay.appTransReq({
orderId: 'xxx',
accessType: '0',
txnAmt: 1,
});
console.log(res.tn);
} catch(e) {
console.error(e);
}
})();
网关支付,B2B支付下单
import { Unionpay } from '@ycnt/unionpay';
const pfxPath = __dirname + '/cer/700000000000001_acp.pfx';
const pfxPassword = '000000';
const merId = '777290058160513';
const cer = __dirname + '/cer/verify_sign_acp.cer';
const backUrl = 'http://backUrl';
const unionpay = new Unionpay(pfxPath, pfxPassword, merId, cer, backUrl, true);
(async () => {
try {
await unionpay.init();
const res = unionpay.frontTransReq({
orderId: 'xxx',
accessType: '0',
txnAmt: 1,
frontUrl: 'https://frontUrl',
frontFailUrl: 'https://frontFailUrl',
});
console.log(res.api);
console.log(res.params);
} catch(e) {
console.error(e);
}
})();
订单查寻
import { Unionpay } from '@ycnt/unionpay';
const pfxPath = __dirname + '/cer/700000000000001_acp.pfx';
const pfxPassword = '000000';
const merId = '777290058160513';
const cer = __dirname + '/cer/verify_sign_acp.cer';
const backUrl = 'http://backUrl';
const unionpay = new Unionpay(pfxPath, pfxPassword, merId, cer, backUrl, true);
(async () => {
try {
await unionpay.init();
const res = await unionpay.query({
orderId: 'xxx',
accessType: '0',
});
console.log(res);
} catch(e) {
console.error(e);
}
})();
退款
import { Unionpay } from '@ycnt/unionpay';
const pfxPath = __dirname + '/cer/700000000000001_acp.pfx';
const pfxPassword = '000000';
const merId = '777290058160513';
const cer = __dirname + '/cer/verify_sign_acp.cer';
const backUrl = 'http://backUrl';
const unionpay = new Unionpay(pfxPath, pfxPassword, merId, cer, backUrl, true);
(async () => {
try {
await unionpay.init();
const res = await unionpay.refund({
orderId: 'xxx',
accessType: '0',
txnAmt: 1,
origQryId: 'xxx',
});
console.log(res);
} catch(e) {
console.error(e);
}
})();
验签
后台通知验签,本例使用 koa 和 koa-better-body
import { Unionpay } from '@ycnt/unionpay';
const unionpay = new Unionpay(...);
public webhook = async (ctx: IContext) => {
try {
await unionpay.init();
if (!unionpay.verify(ctx.request.fields)) throw new Error('签名错误');
if (ctx.request.fields.origQryId) {
// 这里处理退款
} else {
// 这里处理支付成功
}
ctx.status = 200;
ctx.body = 'SUCCESS';
} catch (e) {
console.error(e);
ctx.body = 'FAIL';
}
};