|
@@ -86,15 +86,15 @@ export class PayService extends BaseService {
|
|
await this.validParam(payload);
|
|
await this.validParam(payload);
|
|
const merchant = await this.validMerchant(payload.mchId);
|
|
const merchant = await this.validMerchant(payload.mchId);
|
|
const rate = await this.validRate(payload.mchId, payload.payType, payload.currency);
|
|
const rate = await this.validRate(payload.mchId, payload.payType, payload.currency);
|
|
- const channel = await this.validPayWay(payload.mchId, payload.payType, payload.amount);
|
|
|
|
|
|
+ const channel = await this.validPayWay(payload.mchId, payload.payType, payload.amount, payload.currency);
|
|
await this.validSign(payload, merchant);
|
|
await this.validSign(payload, merchant);
|
|
await this.validOutOrderNo(payload);
|
|
await this.validOutOrderNo(payload);
|
|
let channelCharge = (+payload.amount * +channel.rate) / 100 + +channel.basicFee;
|
|
let channelCharge = (+payload.amount * +channel.rate) / 100 + +channel.basicFee;
|
|
- if(channelCharge < channel.feeMin) {
|
|
|
|
|
|
+ if (channelCharge < channel.feeMin) {
|
|
channelCharge = channel.feeMin;
|
|
channelCharge = channel.feeMin;
|
|
}
|
|
}
|
|
let charge = (+payload.amount * +rate.rate) / 100 + +rate.basicFee;
|
|
let charge = (+payload.amount * +rate.rate) / 100 + +rate.basicFee;
|
|
- if(charge < rate.feeMin) {
|
|
|
|
|
|
+ if (charge < rate.feeMin) {
|
|
charge = rate.feeMin;
|
|
charge = rate.feeMin;
|
|
}
|
|
}
|
|
order = {
|
|
order = {
|
|
@@ -192,8 +192,8 @@ export class PayService extends BaseService {
|
|
return rate;
|
|
return rate;
|
|
}
|
|
}
|
|
|
|
|
|
- async validPayWay(mchId, payType, amount) {
|
|
|
|
- const mchChannels = await this.mchChannelService.getByMchIdAndType(mchId, payType);
|
|
|
|
|
|
+ async validPayWay(mchId, payType, amount, currency) {
|
|
|
|
+ const mchChannels = await this.mchChannelService.getByMchIdAndType(mchId, payType, currency);
|
|
if (mchChannels.length === 0) {
|
|
if (mchChannels.length === 0) {
|
|
throw new Error('暂无可用支付路由');
|
|
throw new Error('暂无可用支付路由');
|
|
}
|
|
}
|
|
@@ -201,6 +201,7 @@ export class PayService extends BaseService {
|
|
if (channels.length === 0) {
|
|
if (channels.length === 0) {
|
|
throw new Error('暂无可用支付路由');
|
|
throw new Error('暂无可用支付路由');
|
|
}
|
|
}
|
|
|
|
+ channels = channels.filter(item => item.currency === currency);
|
|
// 筛选出金额范围符合的,并且计算出所有可用通道的最大金额和最小金额
|
|
// 筛选出金额范围符合的,并且计算出所有可用通道的最大金额和最小金额
|
|
let allMax = 0;
|
|
let allMax = 0;
|
|
let allMin = 0;
|
|
let allMin = 0;
|
|
@@ -211,7 +212,7 @@ export class PayService extends BaseService {
|
|
allMax = item.max;
|
|
allMax = item.max;
|
|
}
|
|
}
|
|
if (item.min < allMin) {
|
|
if (item.min < allMin) {
|
|
- allMin = 0;
|
|
|
|
|
|
+ allMin = item.min;
|
|
}
|
|
}
|
|
const mchChannel = mchChannels.find(i => i.code === item.code);
|
|
const mchChannel = mchChannels.find(i => i.code === item.code);
|
|
item['weight'] = mchChannel.weight || 0;
|
|
item['weight'] = mchChannel.weight || 0;
|