簡化實作智付通付款流程與相關功能串接
- MPG API (v1.2)
- Periodical API (v1.0)
- CreditCard Collect Refund API (v1.0)
- CreditCard DeAuthorize API (v1.0)
- Transaction API
- 付款(建立付款表單)
const SpGateway = require("spgateway-api");
const spgateway = new SpGateway(
true, //(true for a dry run)
your MerchantID,
your HashKey,
your HashIV,
true // if you want to print info in console to debug. default is false
);
const mpgService = spgateway.createMpgService();
// crate payModel
let payModel = mpgService.createMpgPayModel();
// set properties
payModel.MerchantOrderNo = "myordernohere";
payModel.NotifyURL = "http://mysite.com/api/spgateway/notify";
payModel.ReturnURL = "http://mysite.com/api/spgateway/return";
payModel.ClientBackURL = "http://mysite.com/shop";
payModel.Amt = 928;
payModel.ItemDesc = "ProductX";
// create payform
let payFormHtml = mpgService.getAutoPayForm(payModel);
- 接收通知(notify & return)
// take express request as example
let JSONData = request.body.JSONData;
mpgService
.parseNotification(JSONData)
.then((notify) => {
// update your order here
})
.catch((err) => {
// exception or checkCode validation fails
})
- 付款(建立付款表單)
let periodService = spgateway.createPeriodicalService();
let payModel = periodService.createPeriodicalPayModel();
// set properties
payModel.PeriodAmt = 829;
// create pay form html
let payFormHtml = periodService.getAutoPayForm(payModel);
- 接收通知(notify & return)
// take express request as example
let body = request.body; // it would be { "Period": "xxxxx..." }
periodService
.parseNotification(body)
.then((notify) => {
// update your order here
})
.catch((err) => {
// exception or checkCode validation fails
})
let tradeInfoService = spgateway.createTradeInfoService();
tradeInfoService.queryOrder("yourOrderNoHere", 200)
.then((model) => {
// success
})
.catch((err) => {
// if check value validation fails or exception
})
let cardCancelService = spgateway.createCreditCardCancelService();
cardCancelService
.CancelTransaction("yourOrderNoHere", 200)
.then((model) => {
// success
})
.catch((err) => {
// if status !== success or exception
})
let cardloseService = spgateway.createCreditCardCloseService();
// 請款
cardloseService
.requestPayment("yourOrderNoHere", 200)
.then((model) => {
})
.catch((err) => {
})
// 退款
cardloseService
.refund("yourOrderNoHere", 200)
.then((model) => {
})
.catch((err) => {
})
const spgateway = new SpGateway(
true, //(true for a dry run)
your MerchantID,
your HashKey,
your HashIV,
true // if you want to print info to debug, default is false
);
歡迎 fork & pull request