UNPKG

mini-jsdk

Version:

NNW小程序jsdk统一

857 lines (780 loc) 18.3 kB
/* main.min.js@0.1.1 - ES2015 - dev */ function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; } function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); keys.push.apply(keys, symbols); } return keys; } function _objectSpread2(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; } const UA = window.navigator.userAgent; const isAliPay = (() => /alipay/gi.test(UA))(); const isWeChat = (() => /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 * ==== */ const 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 统一监听 const 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 */ const getEnv = callback => { window.NUOMY.getEnv(callback); }; /** * 支付宝扫码 postmessage 处理 * @param {*} param0 */ const scanQRCode = ({ scanType, success: _success = () => undefined, fail: _fail = () => undefined }) => { onMessage(_success, _fail); window.NUOMY.postMessage({ eventName: 'openScan' }); }; /** * @func 获取支付宝发票抬头 postmessage 处理 * @param {*} param0 */ const chooseInvoiceTitle = ({ success: _success2 = () => undefined, fail: _fail2 = () => undefined }) => { onMessage(_success2, _fail2); window.NUOMY.postMessage({ eventName: 'chooseInvoiceTitle' }); }; /** * @func 获取支付宝授权 postmessage 处理 * @param {*} param0 */ const getAuthCode = ({ success: _success3 = () => undefined, fail: _fail3 = () => undefined }) => { onMessage(_success3, _fail3); window.NUOMY.postMessage({ eventName: 'getAuthCode' }); }; /** * desc: https://opendocs.alipay.com/mini/api/navigatetoalipaypage * 跳转支付宝内置小程序页面 postmessage 处理 * @param {*} param0 */ const navigateToAlipayPage = ({ appCode: _appCode = null, appParams: _appParams = null, path: _path = '', extraParam: _extraParam = null, success: _success4 = () => undefined, fail: _fail4 = () => undefined }) => { onMessage(_success4, _fail4); if (_path) { window.NUOMY.postMessage({ eventName: 'navigateToAlipayPage', data: { path: _path, appCode: _appCode, appParams: _appParams }, extraParam: _extraParam }); } else { _fail4({ err: '请输入跳转地址' }); } }; /** * webview 跳转小程序 * @param {} param0 */ const navigateToMiniProgram = ({ appId: _appId = '', path: _path2 = '', extraData: _extraData = null, success: _success5 = () => undefined, fail: _fail5 = () => undefined }) => { onMessage(_success5, _fail5); if (_path2 && _appId) { window.NUOMY.postMessage({ eventName: 'navigateToMiniProgram', data: { path: _path2, appId: _appId }, extraData: _extraData }); } else { _fail5({ err: '请输入跳转地址path或者appId' }); } }; /** * @func 支付宝实名认证 */ const startAPVerify = ({ certno: _certno = '', certname: _certname = '', extraData: _extraData2 = null, success: _success6 = () => undefined, fail: _fail6 = () => undefined }) => { onMessage(_success6, _fail6); if (_certno && _certname) { window.NUOMY.postMessage({ eventName: 'startAPVerify', data: { certno: _certno, certname: _certname }, extraData: _extraData2 }); } else { _fail6({ err: '请输入实名认证用户姓名和身份证号码' }); } }; /** * 支付宝APP 小程序调用 * 选择图片 * @param {*} param0 */ const chooseImage = ({ count: _count = 1, // 默认1 sizeType: _sizeType = ['original', 'compressed'], sourceType: _sourceType = ['camera', 'album'], success: _success7 = () => undefined, fail: _fail7 = () => undefined, complete: _complete = () => undefined }) => { window.NUOMY.chooseImage({ sourceType: _sourceType, count: _count, success: _success7, fail: _fail7, complete: _complete }); }; /** * webview 返回 */ const navigateBack = () => { window.NUOMY.navigateBack({ fail(err) { // 支付宝小程序返回失败执行此方法。统一回到小程序首页 // PS:此处区别与微信小程序,微信小程序返回失败也不会执行fail window.NUOMY.switchTab({ url: miniHomePage, fail(es) { // 再失败就没救了 console.log('err', es); } }); } }); }; /** * webview tabbar 跳转 * @param {*} param0 */ const switchTab = ({ url: _url = miniHomePage, success, fail, complete }) => { window.NUOMY.switchTab({ url: _url, success, complete, fail(es) { // 失败就没救了 console.log('err', es); } }); }; /** * webview 跳转页面 * @param {*} param0 */ const navigateTo = ({ url, success, fail, complete }) => { window.NUOMY.navigateTo({ url, success, fail, complete }); }; /** * webview 重定向 * @param {Object} param */ const redirectTo = ({ url, success, fail, complete }) => { window.NUOMY.redirectTo({ url, fail, success, complete }); }; /** * webview 关闭当前所有页面,跳转到应用内的某个指定页面。 * @param {Object} param */ const reLaunch = ({ url, success, fail, complete }) => { window.NUOMY.reLaunch({ url, success, fail, complete }); }; /** * @func 支付宝支付 * @param {Object} param0 */ const tradePay = ({ tradeNO: _tradeNO = '', payStr: _payStr = '', success: _success8 = () => undefined, fail: _fail8 = () => undefined }) => { const payNo = _payStr || _tradeNO; if (!payNo) { _fail8(); console.warn('请输入支付交易号'); return; } window.NUOMY.tradePay({ tradeNO: payNo, success: _success8, fail: _fail8 }); }; /** * @func 支付宝定位 * @param {Object} param0 */ const getLocation = ({ type: _type = 0, cacheTimeout: _cacheTimeout = 30, success: _success9 = () => undefined, fail: _fail9 = () => undefined }) => { window.NUOMY.getLocation({ type: _type, cacheTimeout: _cacheTimeout, success: _success9, fail: _fail9 }); }; 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 * ==== */ const miniHomePage$1 = "/pages/invoice/invList/invList"; /** * 获取小程序环境 * @param {Function} callback */ const getEnv$1 = callback => { window.NUOWX.miniProgram.getEnv(callback); }; /** * 微信jsdk扫一扫功能 * @param {*} param0 */ const scanQRCode$1 = ({ needResult: _needResult = 0, scanType: _scanType = "qr", success: _success = () => undefined, fail: _fail = () => undefined }) => { window.NUOWX.scanQRCode({ needResult: _needResult, // 默认为0,扫描结果由微信处理,1则直接返回扫描结果, scanType: _scanType, // 可以指定扫二维码还是一维码,默认二者都有 success: _success, fail: err => { console.log(err); _fail(err); } }); }; /** * 选择图片 * @param {*} param0 */ const chooseImage$1 = ({ count: _count = 1, // 默认1 sizeType: _sizeType = ["original", "compressed"], // 可以指定是原图还是压缩图,默认二者都有 sourceType: _sourceType = ["album", "camera"], // 可以指定来源是相册还是相机,默认二者都有 success: _success2 = () => undefined, fail: _fail2 = () => undefined }) => { window.NUOWX.chooseImage({ count: _count, sizeType: _sizeType, sourceType: _sourceType, success: res => { var localIds = res.localIds; // 返回选定照片的本地ID列表,localId可以作为img标签的src属性显示图片 }, fail: err => { console.log(err); _fail2(err); } }); }; /** * webview 跳转小程序 * @param {} param0 */ const navigateToMiniProgram$1 = ({ appId: _appId = "", path: _path = "", extraData: _extraData = null, success: _success3 = () => undefined, fail: _fail3 = () => undefined, complete: _complete = () => undefined }) => { 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: _success3, fail: _fail3, complete: _complete }); } else { _fail3({ err: "请输入跳转地址或者APPID" }); console.warn("请输入跳转地址或者APPID"); } }; /** * * 此API只为兼容 支付宝小程序中跳转到支付宝官方业务或运营活动页面。 my.ap.navigateToAlipayPage. * web-view 跳转小程序请使用 navigateToMiniProgram * @param {*} param0 */ const navigateToAlipayPage$1 = ({ appCode: _appCode = null, appParams: _appParams = null, path: _path2 = "", success: _success4 = () => undefined, fail: _fail4 = () => undefined, complete: _complete2 = () => undefined }) => { if (_appParams && _appCode) { window.NUOWX.miniProgram.postMessage({ data: { eventName: "navigateToAlipayPage", path: _path2, appId: _appCode, extraData: _appParams } }); // 微信小程序跳转其它小程序需要,跳转到首页再打开小程序 window.NUOWX.miniProgram.switchTab({ url: miniHomePage$1, success: _success4, fail: _fail4, complete: _complete2 }); } else { _fail4({ err: "请输入跳转地址或者APPID" }); } }; /** * webview 返回 */ const navigateBack$1 = () => { window.NUOWX.miniProgram.navigateBack({ fail(err) { console.log("err", err); }, complete(err) { // 微信小程序 webview 跳转成功此方法不会执行,失败才会执行 // 容错,防止公众号直接跳入webview调用返回出错 window.NUOWX.miniProgram.switchTab({ url: miniHomePage$1 }); } }); }; /** * webview tabbar 跳转 * @param {*} param0 */ const switchTab$1 = ({ url: _url = miniHomePage$1, success, fail, complete }) => { window.NUOWX.miniProgram.switchTab({ url: _url, fail, success, complete }); }; /** * webview 跳转页面 * @param {*} param0 */ const navigateTo$1 = ({ url, success, fail, complete }) => { window.NUOWX.miniProgram.navigateTo({ url, fail, success, complete }); }; /** * webview 重定向 * @param {Object} param */ const redirectTo$1 = ({ url, success, fail, complete }) => { window.NUOWX.miniProgram.redirectTo({ url, fail, success, complete }); }; /** * webview 关闭当前所有页面,跳转到应用内的某个指定页面。 * @param {Object} param */ const reLaunch$1 = ({ url, success, fail, complete }) => { window.NUOWX.miniProgram.reLaunch({ url, success, fail, complete }); }; /** * 微信支付 * @param {Object} param0 */ const tradePay$1 = ({ payStr: _payStr = "", tradeNO: _tradeNO = "", orderStr: _orderStr = "", callbackUrl: _callbackUrl = "", // 支付回调跳转地址 success: _success5 = () => undefined, fail: _fail5 = () => undefined }) => { if (_orderStr) { navigateTo$1({ url: `/pages/pay/pay?payParams=${window.encodeURIComponent(_orderStr)}&callbackUrl=${window.encodeURIComponent(_callbackUrl)}&tradeNO=${_tradeNO}` }); } else if (_payStr) { navigateTo$1({ url: `/pages/pay/pay?payParams=${window.encodeURIComponent(_payStr)}&callbackUrl=${window.encodeURIComponent(_callbackUrl)}&tradeNO=${_tradeNO}` }); } else { _fail5({ err: "支付参数不可为空, 微信小程序需要orderStr或者payStr" }); } }; /** * webview 定位 * @param {Object} param */ const getLocation$1 = ({ type: _type = "wgs84", // 默认为wgs84的gps坐标,如果要返回直接给openLocation用的火星坐标,可传入'gcj02' success: _success6 = () => undefined, fail: _fail6 = () => undefined }) => { window.NUOWX.getLocation({ type: _type, success: _success6, fail: _fail6 }); }; 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", () => { window.NUOMY = window.my; callback && callback(alipaySDK); }); } } } if (isWeChat) { if (platformObject) { window.NUOWX = platformObject; return wxSDK; } else { if (!window.WeixinJSBridge || !WeixinJSBridge.invoke) { const wxInit = () => { window.NUOWX = window.wx; if (!window.WeixinJSBridge || !WeixinJSBridge.invoke) { document.addEventListener("WeixinJSBridgeReady", () => { callback(wxSDK); }, false); } else { callback(wxSDK); } }; if (!window.wx) { loadScript("https://res2.wx.qq.com/open/js/jweixin-1.6.0.js", () => { wxInit(); }); } else { wxInit(); } } else { callback(wxSDK); } } } } /** * @func 动态加载js * @param {String} url js url地址 * @param {Function} cb js加载成功回调 */ function loadScript(url, cb) { const 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 main = ready(sdk => { window.miniSDK = _objectSpread2({}, sdk); }); export default main; //# sourceMappingURL=calculate.dev.js.map