mtl-js-sdk
Version:
ynf-fw-mtl-api
200 lines (191 loc) • 5.65 kB
JavaScript
;
function Plugin(options, exports = {}) {
const { platform } = options || { platform: window.mtl.platform };
const upesnVersion = window.mtl.upesnVersion || 0
const FAIL_CODE = 1;
const notAddError = {
code: FAIL_CODE,
message: 'module aliPayPlus not added'
}
function successCallBack(object = {}) {
object.success && object.success({});
object.complete && object.complete({});
}
function invokeSuccess(object, ret) {
object.success && object.success(ret);
object.complete && object.complete(ret);
}
function invokeFail(object, err) {
if (err) {
if (!err.message) {
err.message = err.msg || err.errMsg || err.errDescription;
}
if (typeof err.code == 'undefined') {
err.code = err.errCode;
}
}
object.fail && object.fail(err);
object.complete && object.complete(err);
}
//阿里支付
function alipayPayment(object = {}) {
if ( platform === "upesn" && upesnVersion <= 0) {
const {parameters} = object;
if (!parameters) {
let error = {
code: FAIL_CODE,
message: 'parameters is null'
}
object.fail && object.fail(error);
object.complete && object.complete(error);
return;
}
let data = {
...object,
success: function(res) {
object.success && object.success(res);
object.complete && object.complete(res);
},
fail: function(err) {
object.fail && object.fail(err);
object.complete && object.complete(err);
}
};
execEsnBridge('alipayPayment', data);
} else if (platform === 'APIAndroid' || platform === 'APIIos' || (platform === 'upesn' && upesnVersion > 0)) {
let obj = window.api?.require('aliPayPlus');
if (!obj) {
obj = window.api?.require('aliPayTradePlus');
}
if (!obj) {
moduleIsNull(object, 'alipayPayment')
return;
}
let parameters = object.parameters || {};
obj.payOrder(parameters, function(ret, err) {
if (ret) {
if (ret.code == '9000' || ret.code == 9000) {
invokeSuccess(object, {})
} else {
invokeFail(object, ret)
}
} else {
invokeFail(object, err)
}
});
} else {
successCallBack(object)
}
}
//微信支付
function wxpayPayment(object = {}) {
if ( platform === "upesn" && upesnVersion <= 0) {
const {parameters} = object;
if (!parameters) {
let error = {
code: FAIL_CODE,
message: 'parameters is null'
}
object.fail && object.fail(error);
object.complete && object.complete(error);
return;
}
let data = {
...object,
success: function(res) {
object.success && object.success(res);
object.complete && object.complete(res);
},
fail: function(err) {
object.fail && object.fail(err);
object.complete && object.complete(err);
}
};
execEsnBridge('wxpayPayment', data);
} else if (platform === 'APIAndroid' || platform === 'APIIos' || (platform === 'upesn' && upesnVersion > 0)) {
let obj = window.api?.require('wxPayPlus');
if (!obj) {
moduleIsNull(object, 'wxpayPayment')
return;
}
let parameters = param.parameters || {};
parameters.orderId = parameters.prepayId;
parameters.mchId = parameters.partnerId;
obj.payOrder(parameters, function(ret, err) {
if (ret && ret.status) {
invokeSuccess(object, {})
} else {
invokeFail(object, err)
}
});
} else {
successCallBack(object)
}
}
function execEsnBridge(method, source) {
let data = {
...source,
fail: function(error) {
source.fail(_getErrormsg(method, error));
}
};
console.log("exec YYEsnBridge.do method :", method);
console.log("data: ", data);
YYEsnBridge.do(method, data);
}
/**
* 400 参数不合法
401 用户无权限访问
405 APP无权限进行此项操作,如打开照相机,APP未取得授权
406 文件大小超出限制
500 http请求错误
501 http服务器错误
1001 无网络
1002 解析错误
1003 用户取消
-1 未知错误
-2 界面超时
-1000 未找到对应方法
* @param {*} error
*/
function _getErrormsg(method, error) {
let esnError = {
code: -1,
message: errmsg
};
if (typeof error === "object") {
let code = error.errCode;
let msg = "";
if (code == 1003) {
msg = "by user canceled";
} else if (code == -1000) {
msg = "not found function";
} else if (code == 405) {
msg = "Unauthorized and unauthorized to perform this operation";
} else if (code == 401) {
msg = "User does not have permission to access";
}
esnError.code = code;
esnError.message = msg || JSON.stringify(error);
}
let errmsg = `YYZone api ${__start + method}, error message: ${
esnError.message
}`;
esnError.message = errmsg;
return esnError;
}
/** 插件不存在处理 */
function moduleIsNull(object, name) {
if (platform === "upesn" && upesnVersion > 0) {
if (api[name]) {
api[name](object);
return;
}
}
invokeFail(object, notAddError)
}
exports.module = {alipayPayment, wxpayPayment};
exports.symbolPath = "pay";
return exports;
}
export default Plugin;