UNPKG

mini-jsdk

Version:

NNW小程序jsdk统一

922 lines (856 loc) 29.1 kB
/* 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); } })); } }; });