UNPKG

@yorkjs/wechat

Version:

process wechat auth/pay/share tool

3 lines (2 loc) 2.96 kB
import*as e from"@yorkjs/url";let t;function n(){return t}const i=navigator.userAgent;/iphone|ipad/i.test(i);const r=/android/i.test(i);let a=!1;function o(){var e,i;a&&(e="auth_page_unload_timestamp",i=n().getTimestamp(),t.storage.set(`@@wechat@@_${e}`,i))}function s(e,t,n,i,r){let o=`appid=${i}&redirect_uri=${encodeURIComponent(t)}&response_type=code&scope=${n}&state=${e}`;r&&(o+=`&component_appid=${r}`),a=!0,location.href=`https://open.weixin.qq.com/connect/oauth2/authorize?${o}#wechat_redirect`}function c(t,n){const i=e.parseUrl(t);if(!i)return t;if(i.search){const t=e.parseQuery(i.search.slice(1));if(t.state&&t.code){delete t.state,delete t.code;const n=e.stringifyQuery(t);i.search=n?`?${n}`:""}}return n&&n(i),e.stringifyUrl(i)}const u={};function p(e){const i=n().getTimestamp(),r=(a="auth_page_unload_timestamp",t.storage.get(`@@wechat@@_${a}`));var a;return!!r&&i-r<e}const l=function(e){t=e,e.onPageLeave(o)},d=function(e,t,n,i){s(encodeURIComponent(e),t,"snsapi_userinfo",n,i)},m=function(e,t,n,i){s(encodeURIComponent(e),t,"snsapi_base",n,i)},g=function(e){var n;a=!1,n="auth_page_unload_timestamp",t.storage.remove(`@@wechat@@_${n}`)},h=function(t,n){const i=function(t){const n={},i=e.parseUrl(t);if(!i.search)return n;const r=e.parseQuery(i.search.slice(1));return r.state&&r.code&&(n.code=r.code,n.state=r.state),n}(t),{state:r,code:a}=i;if(r&&a){if(!n)return i;const{once:e}=n;if(!function(e,t){const{expireSeconds:n,once:i}=t,{state:r}=e;return!(!r||n&&!p(1e3*n)||i&&u[r])}(i,n))return{};e&&(u[r]=!0)}return i},f=function(e,t,n,i,r=!1){return new Promise((function(a,o){e.config({debug:r,appId:t.appId,timestamp:t.timestamp,nonceStr:t.nonceStr,signature:t.signature,jsApiList:n}),e.ready((function(){e.checkJsApi({jsApiList:n,success(t){const n=t.checkResult;n.updateAppMessageShareData&&e.updateAppMessageShareData({title:i.title,desc:i.content,link:i.url,imgUrl:i.image}),n.updateTimelineShareData&&e.updateTimelineShareData({title:i.title,link:i.url,imgUrl:i.image}),n.onMenuShareWeibo&&e.onMenuShareWeibo({title:i.title,desc:i.content,link:i.url,imgUrl:i.image}),n.onMenuShareAppMessage&&e.onMenuShareAppMessage({title:i.title,desc:i.content,link:i.url,imgUrl:i.image}),n.onMenuShareTimeline&&e.onMenuShareTimeline({title:i.title,link:i.url,imgUrl:i.image})}})})),e.error((function(e){o(e)})),a()}))},_=function(e){return new Promise((function(t,n){window.WeixinJSBridge?window.WeixinJSBridge.invoke("getBrandWCPayRequest",e,(function(e){const{err_msg:i}=e;"get_brand_wcpay_request:ok"==i?t(e):"get_brand_wcpay_request:cancel"!==i&&n(i||"支付失败")})):n("缺少微信环境支持")}))},S=c,w=function(e,t){return c(e,(function(e){t&&t(e);const n=e.search&&"?"!==e.search;r&&!n&&e.hash&&(e.hash=`?${e.hash}`)}))},y="2.0.0";export{g as endAuth,h as getAuthQuery,l as init,w as normalizeShareUrl,S as normalizeUrl,_ as pay,f as share,d as startAuth,m as startSilentAuth,y as version}; //# sourceMappingURL=wechat.esm.min.js.map