mini-jsdk
Version:
NNW小程序jsdk统一
922 lines (856 loc) • 29.1 kB
JavaScript
/* main.min.js@0.1.1 - SystemJS - dev */
System.register([], function (exports) {
'use strict';
return {
execute: function () {
var UA = window.navigator.userAgent;
var isAliPay = function () {
return /alipay/gi.test(UA);
}();
var isWeChat = function () {
return /MicroMessenger/gi.test(UA);
}();
/*
* @Date 2020-03-23
* @Author gt333
* @description 支付宝webview jsdk
* 支付宝jsdk: https://myjsapi.alipay.com/alipayjsapi/index.html
* 支付宝小程序jsdk: https://opendocs.alipay.com/mini/component/web-view
* ====
* @update_date
* @update_author
* @update_desc
* ====
*/
var miniHomePage = '/pages/invoice/invList/invList';
/**
* 支付宝APP H5方法,非小程序调用 (废弃)
* @func 扫一扫
* @param {Object} param0
*/
// export const scanQRCode = ({
// scanType,
// success = () => undefined,
// fail = () => undefined
// }) => {
// const type = {
// qrCode: "qr",
// barCode: "bar"
// };
// ap.scan(
// {
// type: type[scanType]
// },
// function(res) {
// callback(res, success, fail);
// }
// );
// };
/**
* 支付宝APP H5方法,非小程序调用 (废弃)
* 选择图片
* @param {Object} param0
*/
// export const chooseImage = ({
// count = 9,
// sizeType = ["original", "compressed"],
// sourceType = ["camera", "album"]
// }) => {
// ap.chooseImage({ count, sourceType }, function(res) {
// callback(
// res,
// () => {
// const { apFilePaths } = res;
// success(res);
// },
// fail
// );
// });
// };
// postmessage 统一监听
var onMessage = function onMessage(success, fail) {
// if (!window.NUOMY.onMessage) {
window.NUOMY.onMessage = function (res) {
if (res && res instanceof Object) {
try {
for (var keys in res) {
if (String(keys).toLocaleLowerCase().indexOf('success') > -1) {
success(res[keys]);
}
if (String(keys).toLocaleLowerCase().indexOf('fail') > -1) {
fail(res[keys]);
}
}
} catch (error) {}
} else {
console.warn('小程序传入参数非对象,拒绝访问');
fail({
err: '小程序传入参数非对象,拒绝访问'
});
}
}; // }
};
/**
* 获取小程序环境
* @param {Function} callback
*/
var getEnv = function getEnv(callback) {
window.NUOMY.getEnv(callback);
};
/**
* 支付宝扫码 postmessage 处理
* @param {*} param0
*/
var scanQRCode = function scanQRCode(_ref) {
var scanType = _ref.scanType,
_ref$success = _ref.success,
success = _ref$success === void 0 ? function () {
return undefined;
} : _ref$success,
_ref$fail = _ref.fail,
fail = _ref$fail === void 0 ? function () {
return undefined;
} : _ref$fail;
onMessage(success, fail);
window.NUOMY.postMessage({
eventName: 'openScan'
});
};
/**
* @func 获取支付宝发票抬头 postmessage 处理
* @param {*} param0
*/
var chooseInvoiceTitle = function chooseInvoiceTitle(_ref2) {
var _ref2$success = _ref2.success,
success = _ref2$success === void 0 ? function () {
return undefined;
} : _ref2$success,
_ref2$fail = _ref2.fail,
fail = _ref2$fail === void 0 ? function () {
return undefined;
} : _ref2$fail;
onMessage(success, fail);
window.NUOMY.postMessage({
eventName: 'chooseInvoiceTitle'
});
};
/**
* @func 获取支付宝授权 postmessage 处理
* @param {*} param0
*/
var getAuthCode = function getAuthCode(_ref3) {
var _ref3$success = _ref3.success,
success = _ref3$success === void 0 ? function () {
return undefined;
} : _ref3$success,
_ref3$fail = _ref3.fail,
fail = _ref3$fail === void 0 ? function () {
return undefined;
} : _ref3$fail;
onMessage(success, fail);
window.NUOMY.postMessage({
eventName: 'getAuthCode'
});
};
/**
* desc: https://opendocs.alipay.com/mini/api/navigatetoalipaypage
* 跳转支付宝内置小程序页面 postmessage 处理
* @param {*} param0
*/
var navigateToAlipayPage = function navigateToAlipayPage(_ref4) {
var _ref4$appCode = _ref4.appCode,
appCode = _ref4$appCode === void 0 ? null : _ref4$appCode,
_ref4$appParams = _ref4.appParams,
appParams = _ref4$appParams === void 0 ? null : _ref4$appParams,
_ref4$path = _ref4.path,
path = _ref4$path === void 0 ? '' : _ref4$path,
_ref4$extraParam = _ref4.extraParam,
extraParam = _ref4$extraParam === void 0 ? null : _ref4$extraParam,
_ref4$success = _ref4.success,
success = _ref4$success === void 0 ? function () {
return undefined;
} : _ref4$success,
_ref4$fail = _ref4.fail,
fail = _ref4$fail === void 0 ? function () {
return undefined;
} : _ref4$fail;
onMessage(success, fail);
if (path) {
window.NUOMY.postMessage({
eventName: 'navigateToAlipayPage',
data: {
path: path,
appCode: appCode,
appParams: appParams
},
extraParam: extraParam
});
} else {
fail({
err: '请输入跳转地址'
});
}
};
/**
* webview 跳转小程序
* @param {} param0
*/
var navigateToMiniProgram = function navigateToMiniProgram(_ref5) {
var _ref5$appId = _ref5.appId,
appId = _ref5$appId === void 0 ? '' : _ref5$appId,
_ref5$path = _ref5.path,
path = _ref5$path === void 0 ? '' : _ref5$path,
_ref5$extraData = _ref5.extraData,
extraData = _ref5$extraData === void 0 ? null : _ref5$extraData,
_ref5$success = _ref5.success,
success = _ref5$success === void 0 ? function () {
return undefined;
} : _ref5$success,
_ref5$fail = _ref5.fail,
fail = _ref5$fail === void 0 ? function () {
return undefined;
} : _ref5$fail;
onMessage(success, fail);
if (path && appId) {
window.NUOMY.postMessage({
eventName: 'navigateToMiniProgram',
data: {
path: path,
appId: appId
},
extraData: extraData
});
} else {
fail({
err: '请输入跳转地址path或者appId'
});
}
};
/**
* @func 支付宝实名认证
*/
var startAPVerify = function startAPVerify(_ref6) {
var _ref6$certno = _ref6.certno,
certno = _ref6$certno === void 0 ? '' : _ref6$certno,
_ref6$certname = _ref6.certname,
certname = _ref6$certname === void 0 ? '' : _ref6$certname,
_ref6$extraData = _ref6.extraData,
extraData = _ref6$extraData === void 0 ? null : _ref6$extraData,
_ref6$success = _ref6.success,
success = _ref6$success === void 0 ? function () {
return undefined;
} : _ref6$success,
_ref6$fail = _ref6.fail,
fail = _ref6$fail === void 0 ? function () {
return undefined;
} : _ref6$fail;
onMessage(success, fail);
if (certno && certname) {
window.NUOMY.postMessage({
eventName: 'startAPVerify',
data: {
certno: certno,
certname: certname
},
extraData: extraData
});
} else {
fail({
err: '请输入实名认证用户姓名和身份证号码'
});
}
};
/**
* 支付宝APP 小程序调用
* 选择图片
* @param {*} param0
*/
var chooseImage = function chooseImage(_ref7) {
var _ref7$count = _ref7.count,
count = _ref7$count === void 0 ? 1 : _ref7$count,
_ref7$sizeType = _ref7.sizeType,
_ref7$sourceType = _ref7.sourceType,
sourceType = _ref7$sourceType === void 0 ? ['camera', 'album'] : _ref7$sourceType,
_ref7$success = _ref7.success,
success = _ref7$success === void 0 ? function () {
return undefined;
} : _ref7$success,
_ref7$fail = _ref7.fail,
fail = _ref7$fail === void 0 ? function () {
return undefined;
} : _ref7$fail,
_ref7$complete = _ref7.complete,
complete = _ref7$complete === void 0 ? function () {
return undefined;
} : _ref7$complete;
window.NUOMY.chooseImage({
sourceType: sourceType,
count: count,
success: success,
fail: fail,
complete: complete
});
};
/**
* webview 返回
*/
var navigateBack = function navigateBack() {
window.NUOMY.navigateBack({
fail: function fail(err) {
// 支付宝小程序返回失败执行此方法。统一回到小程序首页
// PS:此处区别与微信小程序,微信小程序返回失败也不会执行fail
window.NUOMY.switchTab({
url: miniHomePage,
fail: function fail(es) {
// 再失败就没救了
console.log('err', es);
}
});
}
});
};
/**
* webview tabbar 跳转
* @param {*} param0
*/
var switchTab = function switchTab(_ref8) {
var _ref8$url = _ref8.url,
url = _ref8$url === void 0 ? miniHomePage : _ref8$url,
success = _ref8.success,
fail = _ref8.fail,
complete = _ref8.complete;
window.NUOMY.switchTab({
url: url,
success: success,
complete: complete,
fail: function fail(es) {
// 失败就没救了
console.log('err', es);
}
});
};
/**
* webview 跳转页面
* @param {*} param0
*/
var navigateTo = function navigateTo(_ref9) {
var url = _ref9.url,
success = _ref9.success,
fail = _ref9.fail,
complete = _ref9.complete;
window.NUOMY.navigateTo({
url: url,
success: success,
fail: fail,
complete: complete
});
};
/**
* webview 重定向
* @param {Object} param
*/
var redirectTo = function redirectTo(_ref10) {
var url = _ref10.url,
success = _ref10.success,
fail = _ref10.fail,
complete = _ref10.complete;
window.NUOMY.redirectTo({
url: url,
fail: fail,
success: success,
complete: complete
});
};
/**
* webview 关闭当前所有页面,跳转到应用内的某个指定页面。
* @param {Object} param
*/
var reLaunch = function reLaunch(_ref11) {
var url = _ref11.url,
success = _ref11.success,
fail = _ref11.fail,
complete = _ref11.complete;
window.NUOMY.reLaunch({
url: url,
success: success,
fail: fail,
complete: complete
});
};
/**
* @func 支付宝支付
* @param {Object} param0
*/
var tradePay = function tradePay(_ref12) {
var _ref12$tradeNO = _ref12.tradeNO,
tradeNO = _ref12$tradeNO === void 0 ? '' : _ref12$tradeNO,
_ref12$payStr = _ref12.payStr,
payStr = _ref12$payStr === void 0 ? '' : _ref12$payStr,
_ref12$success = _ref12.success,
success = _ref12$success === void 0 ? function () {
return undefined;
} : _ref12$success,
_ref12$fail = _ref12.fail,
fail = _ref12$fail === void 0 ? function () {
return undefined;
} : _ref12$fail;
var payNo = payStr || tradeNO;
if (!payNo) {
fail();
console.warn('请输入支付交易号');
return;
}
window.NUOMY.tradePay({
tradeNO: payNo,
success: success,
fail: fail
});
};
/**
* @func 支付宝定位
* @param {Object} param0
*/
var getLocation = function getLocation(_ref13) {
var _ref13$type = _ref13.type,
type = _ref13$type === void 0 ? 0 : _ref13$type,
_ref13$cacheTimeout = _ref13.cacheTimeout,
cacheTimeout = _ref13$cacheTimeout === void 0 ? 30 : _ref13$cacheTimeout,
_ref13$success = _ref13.success,
success = _ref13$success === void 0 ? function () {
return undefined;
} : _ref13$success,
_ref13$fail = _ref13.fail,
fail = _ref13$fail === void 0 ? function () {
return undefined;
} : _ref13$fail;
window.NUOMY.getLocation({
type: type,
cacheTimeout: cacheTimeout,
success: success,
fail: fail
});
};
var alipaySDK = /*#__PURE__*/Object.freeze({
__proto__: null,
getEnv: getEnv,
scanQRCode: scanQRCode,
chooseInvoiceTitle: chooseInvoiceTitle,
getAuthCode: getAuthCode,
navigateToAlipayPage: navigateToAlipayPage,
navigateToMiniProgram: navigateToMiniProgram,
startAPVerify: startAPVerify,
chooseImage: chooseImage,
navigateBack: navigateBack,
switchTab: switchTab,
navigateTo: navigateTo,
redirectTo: redirectTo,
reLaunch: reLaunch,
tradePay: tradePay,
getLocation: getLocation
});
/*
* @Date 2020-03-23
* @Author gt333
* @description 微信webviewjsdk
* ====
* @update_date
* @update_author
* @update_desc
* ====
*/
var miniHomePage$1 = "/pages/invoice/invList/invList";
/**
* 获取小程序环境
* @param {Function} callback
*/
var getEnv$1 = function getEnv(callback) {
window.NUOWX.miniProgram.getEnv(callback);
};
/**
* 微信jsdk扫一扫功能
* @param {*} param0
*/
var scanQRCode$1 = function scanQRCode(_ref) {
var _ref$needResult = _ref.needResult,
needResult = _ref$needResult === void 0 ? 0 : _ref$needResult,
_ref$scanType = _ref.scanType,
scanType = _ref$scanType === void 0 ? "qr" : _ref$scanType,
_ref$success = _ref.success,
success = _ref$success === void 0 ? function () {
return undefined;
} : _ref$success,
_ref$fail = _ref.fail,
_fail = _ref$fail === void 0 ? function () {
return undefined;
} : _ref$fail;
window.NUOWX.scanQRCode({
needResult: needResult,
// 默认为0,扫描结果由微信处理,1则直接返回扫描结果,
scanType: scanType,
// 可以指定扫二维码还是一维码,默认二者都有
success: success,
fail: function fail(err) {
console.log(err);
_fail(err);
}
});
};
/**
* 选择图片
* @param {*} param0
*/
var chooseImage$1 = function chooseImage(_ref2) {
var _ref2$count = _ref2.count,
count = _ref2$count === void 0 ? 1 : _ref2$count,
_ref2$sizeType = _ref2.sizeType,
sizeType = _ref2$sizeType === void 0 ? ["original", "compressed"] : _ref2$sizeType,
_ref2$sourceType = _ref2.sourceType,
sourceType = _ref2$sourceType === void 0 ? ["album", "camera"] : _ref2$sourceType,
_ref2$success = _ref2.success,
_ref2$fail = _ref2.fail,
_fail2 = _ref2$fail === void 0 ? function () {
return undefined;
} : _ref2$fail;
window.NUOWX.chooseImage({
count: count,
sizeType: sizeType,
sourceType: sourceType,
success: function success(res) {
var localIds = res.localIds; // 返回选定照片的本地ID列表,localId可以作为img标签的src属性显示图片
},
fail: function fail(err) {
console.log(err);
_fail2(err);
}
});
};
/**
* webview 跳转小程序
* @param {} param0
*/
var navigateToMiniProgram$1 = function navigateToMiniProgram(_ref3) {
var _ref3$appId = _ref3.appId,
appId = _ref3$appId === void 0 ? "" : _ref3$appId,
_ref3$path = _ref3.path,
path = _ref3$path === void 0 ? "" : _ref3$path,
_ref3$extraData = _ref3.extraData,
extraData = _ref3$extraData === void 0 ? null : _ref3$extraData,
_ref3$success = _ref3.success,
success = _ref3$success === void 0 ? function () {
return undefined;
} : _ref3$success,
_ref3$fail = _ref3.fail,
fail = _ref3$fail === void 0 ? function () {
return undefined;
} : _ref3$fail,
_ref3$complete = _ref3.complete,
complete = _ref3$complete === void 0 ? function () {
return undefined;
} : _ref3$complete;
if (appId && path) {
window.NUOWX.miniProgram.postMessage({
data: {
eventName: "navigateToMiniProgram",
data: {
path: path,
appId: appId
},
extraData: extraData
}
}); // 微信小程序跳转其它小程序需要,跳转到首页再打开小程序
window.NUOWX.miniProgram.switchTab({
url: miniHomePage$1,
success: success,
fail: fail,
complete: complete
});
} else {
fail({
err: "请输入跳转地址或者APPID"
});
console.warn("请输入跳转地址或者APPID");
}
};
/**
*
* 此API只为兼容 支付宝小程序中跳转到支付宝官方业务或运营活动页面。 my.ap.navigateToAlipayPage.
* web-view 跳转小程序请使用 navigateToMiniProgram
* @param {*} param0
*/
var navigateToAlipayPage$1 = function navigateToAlipayPage(_ref4) {
var _ref4$appCode = _ref4.appCode,
appCode = _ref4$appCode === void 0 ? null : _ref4$appCode,
_ref4$appParams = _ref4.appParams,
appParams = _ref4$appParams === void 0 ? null : _ref4$appParams,
_ref4$path = _ref4.path,
path = _ref4$path === void 0 ? "" : _ref4$path,
_ref4$success = _ref4.success,
success = _ref4$success === void 0 ? function () {
return undefined;
} : _ref4$success,
_ref4$fail = _ref4.fail,
fail = _ref4$fail === void 0 ? function () {
return undefined;
} : _ref4$fail,
_ref4$complete = _ref4.complete,
complete = _ref4$complete === void 0 ? function () {
return undefined;
} : _ref4$complete;
if (appParams && appCode) {
window.NUOWX.miniProgram.postMessage({
data: {
eventName: "navigateToAlipayPage",
path: path,
appId: appCode,
extraData: appParams
}
}); // 微信小程序跳转其它小程序需要,跳转到首页再打开小程序
window.NUOWX.miniProgram.switchTab({
url: miniHomePage$1,
success: success,
fail: fail,
complete: complete
});
} else {
fail({
err: "请输入跳转地址或者APPID"
});
}
};
/**
* webview 返回
*/
var navigateBack$1 = function navigateBack() {
window.NUOWX.miniProgram.navigateBack({
fail: function fail(err) {
console.log("err", err);
},
complete: function complete(err) {
// 微信小程序 webview 跳转成功此方法不会执行,失败才会执行
// 容错,防止公众号直接跳入webview调用返回出错
window.NUOWX.miniProgram.switchTab({
url: miniHomePage$1
});
}
});
};
/**
* webview tabbar 跳转
* @param {*} param0
*/
var switchTab$1 = function switchTab(_ref5) {
var _ref5$url = _ref5.url,
url = _ref5$url === void 0 ? miniHomePage$1 : _ref5$url,
success = _ref5.success,
fail = _ref5.fail,
complete = _ref5.complete;
window.NUOWX.miniProgram.switchTab({
url: url,
fail: fail,
success: success,
complete: complete
});
};
/**
* webview 跳转页面
* @param {*} param0
*/
var navigateTo$1 = function navigateTo(_ref6) {
var url = _ref6.url,
success = _ref6.success,
fail = _ref6.fail,
complete = _ref6.complete;
window.NUOWX.miniProgram.navigateTo({
url: url,
fail: fail,
success: success,
complete: complete
});
};
/**
* webview 重定向
* @param {Object} param
*/
var redirectTo$1 = function redirectTo(_ref7) {
var url = _ref7.url,
success = _ref7.success,
fail = _ref7.fail,
complete = _ref7.complete;
window.NUOWX.miniProgram.redirectTo({
url: url,
fail: fail,
success: success,
complete: complete
});
};
/**
* webview 关闭当前所有页面,跳转到应用内的某个指定页面。
* @param {Object} param
*/
var reLaunch$1 = function reLaunch(_ref8) {
var url = _ref8.url,
success = _ref8.success,
fail = _ref8.fail,
complete = _ref8.complete;
window.NUOWX.miniProgram.reLaunch({
url: url,
success: success,
fail: fail,
complete: complete
});
};
/**
* 微信支付
* @param {Object} param0
*/
var tradePay$1 = function tradePay(_ref9) {
var _ref9$payStr = _ref9.payStr,
payStr = _ref9$payStr === void 0 ? "" : _ref9$payStr,
_ref9$tradeNO = _ref9.tradeNO,
tradeNO = _ref9$tradeNO === void 0 ? "" : _ref9$tradeNO,
_ref9$orderStr = _ref9.orderStr,
orderStr = _ref9$orderStr === void 0 ? "" : _ref9$orderStr,
_ref9$callbackUrl = _ref9.callbackUrl,
callbackUrl = _ref9$callbackUrl === void 0 ? "" : _ref9$callbackUrl,
_ref9$success = _ref9.success,
_ref9$fail = _ref9.fail,
fail = _ref9$fail === void 0 ? function () {
return undefined;
} : _ref9$fail;
if (orderStr) {
navigateTo$1({
url: "/pages/pay/pay?payParams=".concat(window.encodeURIComponent(orderStr), "&callbackUrl=").concat(window.encodeURIComponent(callbackUrl), "&tradeNO=").concat(tradeNO)
});
} else if (payStr) {
navigateTo$1({
url: "/pages/pay/pay?payParams=".concat(window.encodeURIComponent(payStr), "&callbackUrl=").concat(window.encodeURIComponent(callbackUrl), "&tradeNO=").concat(tradeNO)
});
} else {
fail({
err: "支付参数不可为空, 微信小程序需要orderStr或者payStr"
});
}
};
/**
* webview 定位
* @param {Object} param
*/
var getLocation$1 = function getLocation(_ref10) {
var _ref10$type = _ref10.type,
type = _ref10$type === void 0 ? "wgs84" : _ref10$type,
_ref10$success = _ref10.success,
success = _ref10$success === void 0 ? function () {
return undefined;
} : _ref10$success,
_ref10$fail = _ref10.fail,
fail = _ref10$fail === void 0 ? function () {
return undefined;
} : _ref10$fail;
window.NUOWX.getLocation({
type: type,
success: success,
fail: fail
});
};
var wxSDK = /*#__PURE__*/Object.freeze({
__proto__: null,
getEnv: getEnv$1,
scanQRCode: scanQRCode$1,
chooseImage: chooseImage$1,
navigateToMiniProgram: navigateToMiniProgram$1,
navigateToAlipayPage: navigateToAlipayPage$1,
navigateBack: navigateBack$1,
switchTab: switchTab$1,
navigateTo: navigateTo$1,
redirectTo: redirectTo$1,
reLaunch: reLaunch$1,
tradePay: tradePay$1,
getLocation: getLocation$1
});
/**
* @func jsdk 初始化
* @param {Function} callback
* @param {Object} params npm 搭配weixin-js-sdk 引入 需要传递jWeixin即weixin-js-sdk对象
*/
function ready(callback, platformObject) {
if (isAliPay) {
if (platformObject) {
// npm 形式引入miniSDK
window.NUOMY = platformObject;
return alipaySDK;
} else {
// 在html直接引入miniJSDK 运行
if (window.my) {
window.NUOMY = window.my;
callback && callback(alipaySDK);
} else {
console.warn("正在加载支付宝:https://appx/web-view.min.js"); // TODO:支付宝需要加载两JSDK,
loadScript("https://appx/web-view.min.js", function () {
window.NUOMY = window.my;
callback && callback(alipaySDK);
});
}
}
}
if (isWeChat) {
if (platformObject) {
window.NUOWX = platformObject;
return wxSDK;
} else {
if (!window.WeixinJSBridge || !WeixinJSBridge.invoke) {
var wxInit = function wxInit() {
window.NUOWX = window.wx;
if (!window.WeixinJSBridge || !WeixinJSBridge.invoke) {
document.addEventListener("WeixinJSBridgeReady", function () {
callback(wxSDK);
}, false);
} else {
callback(wxSDK);
}
};
if (!window.wx) {
loadScript("https://res2.wx.qq.com/open/js/jweixin-1.6.0.js", function () {
wxInit();
});
} else {
wxInit();
}
} else {
callback(wxSDK);
}
}
}
}
/**
* @func 动态加载js
* @param {String} url js url地址
* @param {Function} cb js加载成功回调
*/
function loadScript(url, cb) {
var script = document.createElement("script");
script.setAttribute("type", "text/javascript");
script.setAttribute("src", url);
script.onload = script.onreadystatechange = function () {
if (!this.readyState || this.readyState == "loaded" || this.readyState == "complete") {
cb && cb();
}
script.onload = script.onreadystatechange = null;
};
document.querySelector("head").appendChild(script);
}
var index = exports('default', (function (platformObject) {
if (!platformObject) {
if (isWeChat) {
console.warn("未传入微信jsdk对象,推荐使用script方式引入");
} else {
console.warn("未传入支付宝window.my对象,请在html使用script方式引入https://appx/web-view.min.js");
}
} else {
return ready(function () {
console.info("miniSDK success");
}, platformObject);
}
}));
}
};
});