thinkraz-api-sdk
Version:
橡芮科技API开发包
267 lines (252 loc) • 8.73 kB
JavaScript
const Promise = require('bluebird');
const baseClass = require('../lib/baseClass');
module.exports = class Payment extends baseClass {
/**
* 建立账户,返回id
*/
makeAccount() {
return new Promise((resolve, reject) => {
this.request().post(`account`).then(object => {
resolve(object.id);
}).catch(err => {
reject(err);
});
});
}
/**
* 查询账户,输入id,返回对象
*/
getAccount(id) {
return new Promise((resolve, reject) => {
this.request().get(`account/${id}`).then(object => {
resolve(object);
}).catch(err => {
reject(err);
});
});
}
/**
* 创建“钱袋” / “钱的购物车”,用于收款
*/
makePayment(amount, orderId, notifyUrl, notifyParams, notifyHeaders,useOriginalOrder) {
return new Promise((resolve, reject) => {
this.request().post(this.getPath(), {
notifyUrl: notifyUrl,
notifyParams: notifyParams,
notifyHeaders: notifyHeaders,
amount: amount,
orderId: orderId,
useOriginalOrder: useOriginalOrder === undefined ? true : useOriginalOrder
}).then(object => {
resolve(object);
}).catch(err => {
reject(err);
});
});
}
getNativeQrCode(channel, amount, paymentId, receiver, body, certToken) {
return new Promise((resolve, reject)=> {
switch (channel) {
case 'WEIXIN':
this.request().post(`${this.getPath()}/weixin/native/pay`, {
amount: amount,
paymentId: paymentId,
receiver: receiver,
body: body,
certToken: certToken,
notifyUrl: `${this.request().getBaseAddress()}/${this.getPath()}/weixin/webHook/`
}).then(object => {
resolve(object.url);
}).catch(err => {
reject(err);
});
break;
case 'ALIPAY':
this.request().post(`${this.getPath()}/alipay/native/pay`, {
amount: amount,
paymentId: paymentId,
receiver: receiver,
body: body,
certToken: certToken,
notifyUrl: `${this.request().getBaseAddress()}/${this.getPath()}/alipay/webHook/`
}).then(object => {
resolve(object.url);
}).catch(err => {
reject(err);
});
break;
default:
throw new Error('channel 参数不正确');
}
});
}
payWithAuthcode(authCode, amount, paymentId, receiver, body, certToken) {
return new Promise((resolve, reject)=> {
this.request().post(`${this.getPath()}/uni/scan/pay`, {
authCode: authCode,
amount: amount,
paymentId: paymentId,
receiver: receiver,
body: body,
certToken: certToken
}).then(object => {
resolve(object);
}).catch(err => {
reject(err);
});
});
}
payOffline(amount, paymentId, receiver, channel, mchid) {
return new Promise((resolve, reject)=> {
this.request().post(`${this.getPath()}/offline/pay`, {
amount: amount,
paymentId: paymentId,
receiver: receiver,
channel: mchid + '_' + channel
}).then(object => {
resolve(object);
}).catch(err => {
reject(err);
});
});
}
payTransfer(amount, paymentId, receiver, payer) {
return new Promise((resolve, reject)=> {
this.request().post(`${this.getPath()}/transfer/pay`, {
amount: amount,
paymentId: paymentId,
receiver: receiver,
payer: payer
}).then(object => {
resolve(object);
}).catch(err => {
reject(err);
});
});
}
/**
* 单笔payment按原channel倒回,不包含order的refund
* @param paymentId
* @param receiver
* @param amount
*/
refundPaymentRollback(paymentId, receiver,amount) {
return new Promise((resolve, reject)=> {
this.request().post(`${this.getPath()}/rollback`, {
paymentId: paymentId,
receiver: receiver,
amount:amount
}).then(object => {
resolve(object);
}).catch(err => {
reject(err);
});
});
}
/**
* 单笔payment强制按某个channel退回,如果channel余额不足将报错。现金可以超支退
* @param paymentId
* @param channel
* @param amount
* @param receiver
*/
refundPaymentByOtherChannel(paymentId, channel, amount, receiver) {
return new Promise((resolve, reject)=> {
this.request().post(`${this.getPath()}/refund`, {
paymentId: paymentId,
channel: channel,
amount: amount,
receiver: receiver
}).then(object => {
resolve(object);
}).catch(err => {
reject(err);
});
});
}
/**
* 查询某个payment的所有记录
* @param paymentId
*/
queryPayment(paymentId) {
return new Promise((resolve, reject)=> {
this.request().get(`${this.getPath()}/query/${paymentId}`).then(object => {
resolve(object);
}).catch(err => {
reject(err);
});
});
}
getPayment(query) {
return new Promise((resolve, reject)=> {
this.request().get(`${this.getPath()}`, query).then(object => {
if(!object){
reject('找不到支付单');
}
resolve(object);
}).catch(err => {
reject(err);
});
});
}
registerChannel(name, desc) {
return new Promise((resolve, reject)=> {
this.request().post(`${this.getPath()}/registerChannel`, {
name: name,
desc: desc
}).then(object => {
resolve(object);
}).catch(err => {
reject(err);
});
});
}
registerCert(name, cert) {
return new Promise((resolve, reject)=> {
this.request().post(`${this.getPath()}/registerCert`, {
token: name,
cert: cert
}).then(object => {
resolve(object);
}).catch(err => {
reject(err);
});
});
}
getCert(name) {
return new Promise((resolve, reject)=> {
this.request().get(`${this.getPath()}/getCert/${name}`).then(object => {
resolve(object);
}).catch(err => {
reject(err);
});
});
}
getPendingPayment(){
return new Promise((resolve, reject)=> {
this.request().get(`${this.getPath()}/pending`).then(object => {
resolve(object);
}).catch(err => {
reject(err);
});
});
}
getPayments(query){
return new Promise((resolve, reject)=> {
this.request().post(`${this.getPath()}/payments`,query).then(object => {
resolve(object);
}).catch(err => {
reject(err);
});
});
}
getPaymentRecords(query){
return new Promise((resolve, reject)=> {
this.request().post(`${this.getPath()}/paymentRecords`,query).then(object => {
resolve(object);
}).catch(err => {
reject(err);
});
});
}
};