captain-ui
Version:
有赞vue wap业务组件库
360 lines (284 loc) • 8.55 kB
JavaScript
/*
* PayManager Class
* 使用Facade pattern处理所有支付相关操作和请求。
* Uses Facade pattern to manage all pay-related actions.
*/
import CashierOrderManager from './components/cashier_order_manager';
import ThirdPartyManager from './components/third_party_manager';
var PayManager =
/*#__PURE__*/
function () {
/**
* @constructor
* @params @required {object} options
* -cashierRequestUrl @required {string} 创建收单接口地址。
* -payRequestUrl @required {string} 支付接口地址。
* -fail {function} 失败回调
*/
function PayManager(options) {
if (options === void 0) {
options = {};
}
this.cashierOrderManager = new CashierOrderManager(options);
this.thirdPartyManager = new ThirdPartyManager(options);
this.lastPayData = {};
}
/**
* @public getCashierNo
* @return 收单号 or ''
*/
var _proto = PayManager.prototype;
_proto.getCashierNo = function getCashierNo() {
return this.cashierOrderManager.getCashierNo();
};
/**
* @public getPayWays
* @return 支付方式列表 or []
*/
_proto.getPayWays = function getPayWays() {
return this.cashierOrderManager.getPayWays();
};
/**
* @public createCashierOrder
* @param @required {object} cashierData 创建收单需要的数据。
* @param {function} 创建成功回调。
*/
_proto.createCashierOrder = function createCashierOrder(cashierData, callback) {
return this.cashierOrderManager.createCashierOrder(cashierData, callback);
};
/**
* @public getQrcodePay
* @param {function} 获取二维码成功后回调。
*/
_proto.getQrcodePay = function getQrcodePay(callback) {
this.cashierOrderManager.getQrcodePay(function (qrcodeUrl) {
if (typeof callback === 'function') callback(qrcodeUrl);
});
};
/**
* @public getPayStatus
* @param {function} 获取支付状态成功后回调。
*/
_proto.validQrcodePay = function validQrcodePay(finish, callback) {
var _this = this;
this.cashierOrderManager.getPayStatus(function (payStatus) {
if (typeof callback === 'function') callback(payStatus);
if (finish && payStatus === 'success') {
_this.thirdPartyManager.doQrcodePay(_this.lastPayData);
}
});
};
/**
* @public getPayStatus
* @param {function} 获取支付状态成功后回调。
*/
_proto.getPayStatus = function getPayStatus(callback) {
this.cashierOrderManager.getPayStatus(function (payStatus) {
if (typeof callback === 'function') callback(payStatus);
});
};
/**
* @public doPayAction
* @param @required {object} data 创建收单需要的数据。
* @param {function} 创建成功回调。
*/
_proto.doPayAction = function doPayAction(data, callback) {
var _this2 = this;
if (data === void 0) {
data = {};
}
this.cashierOrderManager.doPayAction(data, function (payData) {
_this2.lastPayData = payData || {};
if (typeof callback === 'function') callback(payData);
_this2.doPayWithChannel(data.payWay.pay_channel, payData);
});
};
/**
* @public doPayWithPayWay
* @param @required {object} data 创建收单需要的数据。
* @param {function} 创建成功回调。
*/
_proto.doPayWithPayWay = function doPayWithPayWay(cashierData, payWayData, callback) {
var _this3 = this;
if (cashierData === void 0) {
cashierData = {};
}
if (payWayData === void 0) {
payWayData = {};
}
this.cashierOrderManager.doPayWithPayWay(cashierData, payWayData, function (payData) {
_this3.lastPayData = payData || {};
if (typeof callback === 'function') callback(payData);
_this3.doPayWithChannel(payWayData.payChannel, payData);
});
};
/**
* @public doPayActionAllowCancel
* @param @required {object} data 支付参数
* @param {function} callback 返回true则继续处理后续,否则中断
*/
_proto.doPayActionAllowCancel = function doPayActionAllowCancel(data, callback) {
var _this4 = this;
if (data === void 0) {
data = {};
}
this.cashierOrderManager.doPayAction(data, function (payData) {
_this4.lastPayData = payData || {};
var notCancel = true;
if (typeof callback === 'function') {
try {
notCancel = callback(payData);
} catch (error) {
console.error(error);
notCancel = false;
}
}
!!notCancel && _this4.doPayWithChannel(data.payWay.pay_channel, payData);
});
};
/**
* @public isOrderCreated
* @return {boolean} True if 收单已创建。
*/
_proto.isOrderCreated = function isOrderCreated() {
return this.cashierOrderManager.isOrderCreated();
};
/**
* @public isPaying
* @return {boolean} True if 正在支付过程中。
*/
_proto.isPaying = function isPaying() {
return this.cashierOrderManager.getIsPaying();
};
/**
* @public doWeiXinPay
* @param {object} payData 微信支付需要的参数。
*/
_proto.doWeixinPay = function doWeixinPay(payData) {
if (payData === void 0) {
payData = {};
}
return this.thirdPartyManager.doWeixinPay(payData);
};
/**
* @public doWeixinH5Pay
* @param {object} payData 微信H5支付需要的参数。
*/
_proto.doWeixinH5Pay = function doWeixinH5Pay(payData) {
if (payData === void 0) {
payData = {};
}
return this.thirdPartyManager.doWeixinH5Pay(payData);
};
/**
* @public doWeixinAppPay
* @param {object} payData 微信有赞客户端支付需要的参数。
*/
_proto.doWeixinAppPay = function doWeixinAppPay(payData) {
if (payData === void 0) {
payData = {};
}
return this.thirdPartyManager.doWeixinAppPay(payData);
};
/**
* @public doAlipay
* @param {object} payData 支付宝支付需要的参数。
*/
_proto.doAliPay = function doAliPay(payData) {
if (payData === void 0) {
payData = {};
}
return this.thirdPartyManager.doAliPay(payData);
};
/**
* @public doECardpay
* @param {object} payData 支付宝支付需要的参数。
*/
_proto.doECardPay = function doECardPay(payData) {
if (payData === void 0) {
payData = {};
}
return this.thirdPartyManager.doECardPay(payData);
};
/**
* @public doGiftCardPay
* @param {object} payData 支付需要的参数。
*/
_proto.doGiftCardPay = function doGiftCardPay(payData) {
if (payData === void 0) {
payData = {};
}
return this.thirdPartyManager.doGiftCardPay(payData);
};
/**
* 货到付款
*/
_proto.doCODPay = function doCODPay(payData) {
if (payData === void 0) {
payData = {};
}
return this.thirdPartyManager.doCODPay(payData);
};
/**
* @public doPeerpay
* @param {object} payData 支付宝支付需要的参数。
*/
_proto.doPeerPay = function doPeerPay(payData) {
if (payData === void 0) {
payData = {};
}
return this.thirdPartyManager.doPeerpay(payData);
};
/**
* @public doPrepaidPay
* @param {object} payData 支付宝支付需要的参数。
*/
_proto.doPrepaidPay = function doPrepaidPay(payData) {
if (payData === void 0) {
payData = {};
}
return this.thirdPartyManager.doPrepaidPay(payData);
};
/**
* @public doPayWithChannel
* @param {string} payChannel 支付方式。
* @param {object} payData 支付需要的参数.
*/
_proto.doPayWithChannel = function doPayWithChannel(payChannel, payData) {
switch (payChannel) {
// 微信内部支付
case 'WX_JS':
this.doWeixinPay(payData);
break;
// 微信H5支付
case 'WX_H5':
this.doWeixinH5Pay(payData);
break;
// 微信有赞客户端支付
case 'WX_APP':
this.doWeixinAppPay(payData);
break;
// E卡支付
case 'ECARD':
this.doECardPay(payData);
break;
case 'PREPAID_PAY':
case 'VALUE_CARD':
this.doPrepaidPay(payData);
break;
case 'GIFT_CARD':
case 'ENCHASHMENT_GIFT_CARD':
this.doGiftCardPay(payData);
break;
// 货到付款
case 'CASH_ON_DELIVERY':
this.doCODPay(payData);
break;
// 支付宝、找人代付
default:
this.thirdPartyManager.doDefaultPay(payData);
}
};
return PayManager;
}();
export default PayManager;