cppay-sdk 0.0.2-beta.34 → 0.0.2-beta.36

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/vue.cjs CHANGED
@@ -1 +1 @@
1
- const e=require(`./locales-DAKREZkH.cjs`),t=require(`./cppay-BYRjTzRF.cjs`);let n=require(`vue`),r=require(`qrcode`);r=e.i(r);let i=require(`rxjs`),a=require(`rxjs/operators`),o=require(`viem`),s=require(`viem/chains`),c=require(`@reown/appkit`),l=require(`@reown/appkit-adapter-ethers`);var u={class:`_cppay-content`},d={key:0,class:`_cppay-state-container`},f={class:`_cppay-state-title`},ee={class:`_cppay-state-message`},te={key:1,class:`_cppay-state-container`},p={class:`_cppay-state-title`},ne=[`disabled`],re={key:2,class:`_cppay-state-container`},ie={class:`_cppay-state-title`},ae={key:3,class:`_cppay-state-container`},oe={class:`_cppay-state-title`},se={key:4},ce={class:`_cppay-section`},le={class:`_cppay-label`},ue={class:`_cppay-grid`},de=[`onClick`],fe=[`src`,`alt`],pe={class:`_cppay-section`},me={class:`_cppay-label`},he={class:`_cppay-grid`},ge=[`onClick`],_e=[`src`,`alt`],ve={class:`_cppay-section`},ye={class:`_cppay-price-box`},be={class:`_cppay-price-row`},xe={class:`_cppay-price-label`},Se={class:`_cppay-price-amount`},Ce={class:`_cppay-price-main`},we={class:`_cppay-price-sub`},Te={class:`_cppay-section`},Ee={class:`_cppay-error-tooltip`},De={key:0,class:`_cppay-error-tooltip-full`},Oe=[`disabled`],ke={key:5},Ae={class:`_cppay-qr-container`},je={class:`_cppay-qr-code`},m=[`src`],h={class:`_cppay-section`},g={key:0,class:`_cppay-info-box`},_={class:`_cppay-info-flex-container`},v={class:`_cppay-info-flex-child`},y={class:`_cppay-info-label`},b={class:`_cppay-info-value _cppay-info-value-flex`},x={key:0},S={class:`_cppay-info-box`},Me={class:`_cppay-info-flex-child`},Ne={class:`_cppay-info-label _cppay-info-label-flex`},Pe={key:0,class:`_cppay-countdown`},Fe={class:`_cppay-address-row`},Ie={key:0},Le=[`title`],Re={key:0,class:`_cppay-copy-icon`,viewBox:`0 0 24 24`,fill:`none`,stroke:`currentColor`,"stroke-width":`2`},ze={key:1,class:`_cppay-copy-icon`,viewBox:`0 0 24 24`,fill:`currentColor`},Be={key:1,class:`_cppay-info-box _cppay-subscription-box`},Ve={class:`_cppay-info-label _cppay-subscription-label`},He={class:`_cppay-info-value _cppay-subscription-message`},Ue={class:`_cppay-error-tooltip`},We={key:0,class:`_cppay-error-tooltip-full`},Ge={key:1,class:`_cppay-section`},Ke=[`disabled`],qe=[`disabled`],Je=[`disabled`,`title`],Ye={class:`_cppay-wallet-address-text`},Xe={class:`_cppay-section`},Ze=[`disabled`],Qe={class:`_cppay-section`},$e=[`disabled`],C=(0,n.defineComponent)({__name:`PaymentContent`,props:{apikey:{},orderId:{},amount:{},plain:{default:`one-time`},intervalDays:{},paymentStep:{},loading:{type:Boolean,default:!1},isCheckingPayment:{type:Boolean,default:!1},error:{},slots:{},locale:{}},emits:[`update:paymentStep`,`success`,`expired`,`failed`,`error`,`update:error`],setup(C,{emit:w}){let T=C,E=w,D=(0,n.computed)(()=>e.t(T.locale||`zh-CN`)),O=new t.t(T.apikey),k=(0,n.ref)([]),A=(0,n.ref)(),j=(0,n.ref)(),M=(0,n.ref)(),N=(0,n.ref)(),P=(0,n.ref)(!1),F=(0,n.ref)(),I=(0,n.ref)(``),L=(0,n.ref)(!1),R=(0,n.ref)(!1),z=(0,n.ref)(null),B=(0,n.ref)(null),V=(0,n.ref)(null),H=(0,n.ref)(null),et=()=>{typeof window<`u`&&!z.value&&(z.value=(0,c.createAppKit)({debug:!1,enableNetworkSwitch:!1,adapters:[new l.EthersAdapter],projectId:`8d2e1854d3f1782e45aa15fbd8938894`,allowUnsupportedChain:!0,networks:[s.mainnet,s.bsc,s.polygon,s.arbitrum,s.optimism,s.base],metadata:{name:`Cppay`,description:`Cppay Payment Gateway`,url:window.location.origin,icons:[`https://cppay.com/icon.png`]},features:{analytics:!1}}),N.value=z.value.getAddress(),F.value=z.value.getProvider(`eip155`),z.value.subscribeAccount(e=>{e.isConnected?N.value=e.address:(N.value=void 0,F.value=void 0)}),z.value.subscribeProviders(e=>{F.value=e?.eip155}))},U=async()=>{try{P.value=!0,E(`update:error`,void 0),z.value&&await z.value.open()}catch(e){E(`update:error`,e instanceof Error?e.message:D.value.walletConnectionFailed),E(`error`,e)}finally{P.value=!1}},W=(0,n.computed)(()=>k.value.find(e=>e.chain===A.value)),G=(0,n.computed)(()=>W.value?.tokens||[]),K=(0,n.computed)(()=>G.value.find(e=>e.symbol===j.value)),q=e=>[`USDT`,`USDC`,`BUSD`,`DAI`,`TUSD`,`USDD`,`FDUSD`].includes(e.toUpperCase())?2:6,J=(e,t)=>{let n=parseFloat(e);return isNaN(n)?`0`:n.toFixed(t).replace(/\.?0+$/,``)},tt=e=>{if(e<=0)return D.value.expired;let t=Math.floor(e/3600),n=Math.floor(e%3600/60),r=e%60;return t>0?`${t}${D.value.hours}${n}${D.value.minutes}${r}${D.value.seconds}`:`${n}${D.value.minutes}${r}${D.value.seconds}`},Y=e=>{V.value&&clearInterval(V.value);let t=()=>{let t=e-Math.floor(Date.now()/1e3);I.value=tt(t),t<=0&&(E(`update:paymentStep`,`expired`),X())};t(),V.value=setInterval(t,1e3)},X=()=>{V.value&&=(clearInterval(V.value),null)},Z=(0,n.computed)(()=>{if(!j.value||!K.value)return`0`;let e=parseFloat(K.value.price);if(isNaN(e)||e===0)return`0`;let t=q(j.value);return J((parseFloat(T.amount)/e).toFixed(t),t)}),nt=async()=>{try{E(`update:error`,void 0);let e=await O.getSupportedChains();k.value=e,e.length>0&&(A.value=e[0].chain)}catch(e){E(`update:error`,e instanceof Error?e.message:D.value.loadPaymentNetworkFailed),E(`error`,e)}},Q=async e=>{if(F.value)try{await F.value.request({method:`wallet_switchEthereumChain`,params:[{chainId:`0x${e.toString(16)}`}]})}catch(e){throw e.code===4902?Error(D.value.pleaseAddNetwork):e}},rt=async()=>{if(!(!N.value||!F.value||!H.value||!K.value||!W.value))try{let e=H.value;await Q(W.value.chainId);let t=(0,o.createWalletClient)({account:N.value,transport:(0,o.custom)(F.value)});K.value.address?await t.writeContract({address:K.value.address,abi:[{name:`transfer`,type:`function`,stateMutability:`nonpayable`,inputs:[{name:`to`,type:`address`},{name:`amount`,type:`uint256`}],outputs:[{type:`bool`}]}],functionName:`transfer`,args:[e.receiveAddress,(0,o.parseUnits)(e.paymentAmount,K.value.decimals)],chain:null}):await t.sendTransaction({to:e.receiveAddress,value:(0,o.parseUnits)(e.paymentAmount,K.value.decimals),chain:null}),M.value=void 0}catch(e){E(`update:error`,e instanceof Error?e.message:D.value.walletPaymentFailed),E(`error`,e)}},it=async()=>{if(!(!N.value||!F.value||!H.value||!K.value||!W.value))try{let e=H.value;await Q(W.value.chainId);let t=(0,o.createWalletClient)({account:N.value,transport:(0,o.custom)(F.value)});if(!K.value.address)throw Error(D.value.subscriptionDoesNotSupportNative);await t.writeContract({address:K.value.address,abi:[{name:`approve`,type:`function`,stateMutability:`nonpayable`,inputs:[{name:`spender`,type:`address`},{name:`amount`,type:`uint256`}],outputs:[{type:`bool`}]}],functionName:`approve`,args:[e.spenderAddress,(0,o.parseUnits)(e.approveAmount,K.value.decimals)],chain:null}),M.value=void 0}catch(e){E(`update:error`,e instanceof Error?e.message:D.value.walletPaymentFailed),E(`error`,e)}},at=async()=>{if(!N.value){E(`update:error`,D.value.pleaseConnectWallet),E(`error`,Error(D.value.pleaseConnectWallet));return}T.plain===`one-time`?await rt():T.plain===`subscription`&&await it()},ot=async()=>{if(!(!A.value||!j.value))try{E(`update:error`,void 0);let e=``;T.plain===`one-time`?(H.value=await O.createOnetimePayment({paymentChain:A.value,paymentToken:j.value,orderId:T.orderId,amount:Z.value}),e=`${A.value.toLowerCase()}:${H.value.receiveAddress}?amount=${H.value.paymentAmount}`,Y(H.value.expireAt),$({paymentId:H.value.paymentId})):T.plain===`subscription`&&(H.value=await O.createSubscriptionPayment({paymentChain:A.value,paymentToken:j.value,orderId:T.orderId,amountOfUsd:Z.value,intervalDays:T.intervalDays||30}),e=`${A.value.toLowerCase()}:${H.value.spenderAddress}?amount=${H.value.approveAmount}`,Y(H.value.expireAt),$({subscriptionId:H.value.subscriptionId})),E(`update:paymentStep`,`payment`),M.value=await r.toDataURL(e,{width:200,margin:2,errorCorrectionLevel:`H`})}catch(e){E(`update:error`,e instanceof Error?e.message:D.value.createPaymentFailed),E(`error`,e)}},$=e=>{B.value?.unsubscribe();let t=()=>(0,i.defer)(()=>T.plain===`subscription`?O.checkSubscriptionPaymentStatus(e):O.checkOnetimePaymentStatus(e)).pipe((0,a.timeout)(15e3),(0,a.retry)({delay:2e3}));B.value=t().pipe((0,a.expand)(e=>e.status===`pending`?(0,i.timer)(2e3).pipe((0,a.switchMap)(()=>t())):i.EMPTY),(0,a.tap)(e=>{(e.status===`paid`||e.status===`approved`)&&(E(`update:paymentStep`,`success`),E(`success`,e)),e.status===`expired`&&(E(`update:paymentStep`,`expired`),E(`expired`,e)),e.status===`failed`&&(E(`update:paymentStep`,`failed`),E(`failed`,e))})).subscribe({error:e=>{if(H.value){let t=e instanceof Error?e.message:D.value.checkPaymentStatusFailed;E(`update:paymentStep`,`error`),E(`update:error`,t),E(`error`,e)}},complete:()=>{B.value?.unsubscribe()}})},st=async()=>{if(!H.value)return;let e=T.plain===`subscription`?H.value.spenderAddress:H.value.receiveAddress;if(e)try{await navigator.clipboard.writeText(e),L.value=!0,setTimeout(()=>{L.value=!1},2e3)}catch(e){console.error(`复制失败:`,e)}};return(0,n.watch)(()=>T.paymentStep,e=>{e===`select`&&k.value.length===0&&nt()},{immediate:!0}),(0,n.watch)(G,e=>{e.length>0&&!j.value&&(j.value=e[0].symbol)}),(0,n.watch)(()=>T.orderId,e=>{e&&$({orderId:e})}),(0,n.onMounted)(()=>{et()}),(0,n.onUnmounted)(()=>{B.value?.unsubscribe(),X()}),(e,t)=>((0,n.openBlock)(),(0,n.createElementBlock)(`div`,u,[C.paymentStep===`success`?((0,n.openBlock)(),(0,n.createElementBlock)(`div`,d,[t[7]||=(0,n.createElementVNode)(`div`,{class:`_cppay-state-icon`},`✅`,-1),(0,n.createElementVNode)(`h3`,f,(0,n.toDisplayString)(C.plain===`subscription`?D.value.authorizationSuccess:D.value.paymentSuccess),1),(0,n.createElementVNode)(`p`,ee,(0,n.toDisplayString)(C.plain===`subscription`?D.value.subscriptionActivated:D.value.transactionCompleted),1)])):C.paymentStep===`expired`?((0,n.openBlock)(),(0,n.createElementBlock)(`div`,te,[t[8]||=(0,n.createElementVNode)(`div`,{class:`_cppay-state-icon`},`⏰`,-1),(0,n.createElementVNode)(`h3`,p,(0,n.toDisplayString)(D.value.paymentExpired),1),(0,n.createElementVNode)(`button`,{onClick:t[0]||=t=>e.$emit(`update:paymentStep`,`select`),disabled:C.loading||C.isCheckingPayment,class:`_cppay-btn _cppay-btn-text`},(0,n.toDisplayString)(D.value.returnButton),9,ne)])):C.paymentStep===`error`?((0,n.openBlock)(),(0,n.createElementBlock)(`div`,re,[t[9]||=(0,n.createElementVNode)(`div`,{class:`_cppay-state-icon`},`❌`,-1),(0,n.createElementVNode)(`h3`,ie,(0,n.toDisplayString)(D.value.checking),1)])):C.paymentStep===`failed`?((0,n.openBlock)(),(0,n.createElementBlock)(`div`,ae,[t[10]||=(0,n.createElementVNode)(`div`,{class:`_cppay-state-icon`},`❌`,-1),(0,n.createElementVNode)(`h3`,oe,(0,n.toDisplayString)(D.value.paymentFailed),1)])):C.paymentStep===`select`?((0,n.openBlock)(),(0,n.createElementBlock)(`div`,se,[(0,n.renderSlot)(e.$slots,`choose-top`),(0,n.createElementVNode)(`div`,ce,[(0,n.createElementVNode)(`label`,le,(0,n.toDisplayString)(D.value.paymentNetwork),1),(0,n.createElementVNode)(`div`,ue,[((0,n.openBlock)(!0),(0,n.createElementBlock)(n.Fragment,null,(0,n.renderList)(k.value,e=>((0,n.openBlock)(),(0,n.createElementBlock)(`button`,{key:e.chain,onClick:t=>A.value=e.chain,class:(0,n.normalizeClass)([`_cppay-select-btn`,{"_cppay-selected":A.value===e.chain}])},[e.icon?((0,n.openBlock)(),(0,n.createElementBlock)(`img`,{key:0,src:e.icon,alt:e.chain},null,8,fe)):(0,n.createCommentVNode)(``,!0),(0,n.createElementVNode)(`span`,null,(0,n.toDisplayString)(e.chain),1)],10,de))),128))])]),(0,n.createElementVNode)(`div`,pe,[(0,n.createElementVNode)(`label`,me,(0,n.toDisplayString)(D.value.paymentToken),1),(0,n.createElementVNode)(`div`,he,[((0,n.openBlock)(!0),(0,n.createElementBlock)(n.Fragment,null,(0,n.renderList)(G.value,e=>((0,n.openBlock)(),(0,n.createElementBlock)(`button`,{key:e.symbol,onClick:t=>j.value=e.symbol,class:(0,n.normalizeClass)([`_cppay-select-btn`,{"_cppay-selected":j.value===e.symbol}])},[e.icon?((0,n.openBlock)(),(0,n.createElementBlock)(`img`,{key:0,src:e.icon,alt:e.symbol},null,8,_e)):(0,n.createCommentVNode)(``,!0),(0,n.createElementVNode)(`span`,null,(0,n.toDisplayString)(e.symbol),1)],10,ge))),128))])]),(0,n.renderSlot)(e.$slots,`choose-bottom`),(0,n.createElementVNode)(`div`,ve,[(0,n.createElementVNode)(`div`,ye,[(0,n.createElementVNode)(`div`,be,[(0,n.createElementVNode)(`span`,xe,(0,n.toDisplayString)(D.value.paymentAmount),1),(0,n.createElementVNode)(`div`,Se,[(0,n.createElementVNode)(`div`,Ce,(0,n.toDisplayString)(Z.value??`-`)+` `+(0,n.toDisplayString)(j.value??``),1),(0,n.createElementVNode)(`div`,we,`≈ $`+(0,n.toDisplayString)(C.amount),1)])])])]),(0,n.createElementVNode)(`div`,Te,[C.error?((0,n.openBlock)(),(0,n.createElementBlock)(`div`,{key:0,class:`_cppay-error-tooltip-wrapper`,onMouseenter:t[1]||=e=>R.value=!0,onMouseleave:t[2]||=e=>R.value=!1},[(0,n.createElementVNode)(`div`,Ee,[t[11]||=(0,n.createElementVNode)(`svg`,{viewBox:`0 0 20 20`,fill:`currentColor`},[(0,n.createElementVNode)(`path`,{"fill-rule":`evenodd`,d:`M10 18a8 8 0 100-16 8 8 0 000 16zM8.707 7.293a1 1 0 00-1.414 1.414L8.586 10l-1.293 1.293a1 1 0 101.414 1.414L10 11.414l1.293 1.293a1 1 0 001.414-1.414L11.414 10l1.293-1.293a1 1 0 00-1.414-1.414L10 8.586 8.707 7.293z`,"clip-rule":`evenodd`})],-1),(0,n.createElementVNode)(`span`,null,(0,n.toDisplayString)(C.error),1)]),R.value?((0,n.openBlock)(),(0,n.createElementBlock)(`div`,De,(0,n.toDisplayString)(C.error),1)):(0,n.createCommentVNode)(``,!0)],32)):(0,n.createCommentVNode)(``,!0),(0,n.createElementVNode)(`button`,{onClick:ot,disabled:!A.value||!j.value||C.loading,class:`_cppay-btn _cppay-btn-primary`},(0,n.toDisplayString)(C.loading?D.value.processing:D.value.continuePayment),9,Oe)])])):((0,n.openBlock)(),(0,n.createElementBlock)(`div`,ke,[(0,n.createElementVNode)(`div`,Ae,[(0,n.createElementVNode)(`div`,je,[M.value?((0,n.openBlock)(),(0,n.createElementBlock)(`img`,{key:0,src:M.value,alt:`Payment QR Code`,class:`_cppay-qr-image`},null,8,m)):(0,n.createCommentVNode)(``,!0)])]),(0,n.createElementVNode)(`div`,h,[K.value?((0,n.openBlock)(),(0,n.createElementBlock)(`div`,g,[(0,n.createElementVNode)(`div`,_,[(0,n.createElementVNode)(`div`,v,[(0,n.createElementVNode)(`div`,y,(0,n.toDisplayString)(C.plain===`subscription`?D.value.authorizationAmount:D.value.paymentAmount),1),(0,n.createElementVNode)(`div`,b,[H.value?((0,n.openBlock)(),(0,n.createElementBlock)(`span`,x,(0,n.toDisplayString)(C.plain===`subscription`?`${J(H.value.approveAmount,q(K.value.symbol))} ${K.value.symbol}`:`${J(H.value.paymentAmount,q(K.value.symbol))} ${K.value.symbol}`),1)):(0,n.createCommentVNode)(``,!0),(0,n.createElementVNode)(`span`,null,`≈ $`+(0,n.toDisplayString)(C.amount),1)])])])])):(0,n.createCommentVNode)(``,!0),(0,n.createElementVNode)(`div`,S,[(0,n.createElementVNode)(`div`,Me,[(0,n.createElementVNode)(`div`,Ne,[(0,n.createElementVNode)(`span`,null,(0,n.toDisplayString)(C.plain===`subscription`?D.value.authorizationContractAddress:D.value.paymentAddress),1),I.value?((0,n.openBlock)(),(0,n.createElementBlock)(`span`,Pe,`⏰ `+(0,n.toDisplayString)(I.value),1)):(0,n.createCommentVNode)(``,!0)]),(0,n.createElementVNode)(`div`,Fe,[H.value?((0,n.openBlock)(),(0,n.createElementBlock)(`code`,Ie,(0,n.toDisplayString)(C.plain===`subscription`?H.value.spenderAddress:H.value.receiveAddress),1)):(0,n.createCommentVNode)(``,!0),(0,n.createElementVNode)(`button`,{onClick:st,class:(0,n.normalizeClass)([`_cppay-copy-btn`,{"_cppay-copy-success":L.value}]),title:L.value?D.value.copied:D.value.copyAddress},[L.value?((0,n.openBlock)(),(0,n.createElementBlock)(`svg`,ze,[...t[13]||=[(0,n.createElementVNode)(`path`,{d:`M9 16.17L4.83 12l-1.42 1.41L9 19 21 7l-1.41-1.41z`},null,-1)]])):((0,n.openBlock)(),(0,n.createElementBlock)(`svg`,Re,[...t[12]||=[(0,n.createElementVNode)(`path`,{d:`M16 4h2a2 2 0 0 1 2 2v14a2 2 0 0 1-2 2H6a2 2 0 0 1-2-2V6a2 2 0 0 1 2-2h2`},null,-1),(0,n.createElementVNode)(`rect`,{x:`8`,y:`2`,width:`8`,height:`4`,rx:`1`,ry:`1`},null,-1)]]))],10,Le)])])]),C.plain===`subscription`?((0,n.openBlock)(),(0,n.createElementBlock)(`div`,Be,[(0,n.createElementVNode)(`div`,Ve,(0,n.toDisplayString)(D.value.subscriptionNotice),1),(0,n.createElementVNode)(`div`,He,(0,n.toDisplayString)(D.value.subscriptionNoticeMessage),1)])):(0,n.createCommentVNode)(``,!0)]),C.error?((0,n.openBlock)(),(0,n.createElementBlock)(`div`,{key:0,class:`_cppay-error-tooltip-wrapper`,onMouseenter:t[3]||=e=>R.value=!0,onMouseleave:t[4]||=e=>R.value=!1},[(0,n.createElementVNode)(`div`,Ue,[t[14]||=(0,n.createElementVNode)(`svg`,{viewBox:`0 0 20 20`,fill:`currentColor`},[(0,n.createElementVNode)(`path`,{"fill-rule":`evenodd`,d:`M10 18a8 8 0 100-16 8 8 0 000 16zM8.707 7.293a1 1 0 00-1.414 1.414L8.586 10l-1.293 1.293a1 1 0 101.414 1.414L10 11.414l1.293 1.293a1 1 0 001.414-1.414L11.414 10l1.293-1.293a1 1 0 00-1.414-1.414L10 8.586 8.707 7.293z`,"clip-rule":`evenodd`})],-1),(0,n.createElementVNode)(`span`,null,(0,n.toDisplayString)(C.error),1)]),R.value?((0,n.openBlock)(),(0,n.createElementBlock)(`div`,We,(0,n.toDisplayString)(C.error),1)):(0,n.createCommentVNode)(``,!0)],32)):(0,n.createCommentVNode)(``,!0),C.isCheckingPayment?(0,n.createCommentVNode)(``,!0):((0,n.openBlock)(),(0,n.createElementBlock)(`div`,Ge,[N.value?((0,n.openBlock)(),(0,n.createElementBlock)(n.Fragment,{key:1},[(0,n.createElementVNode)(`button`,{onClick:at,disabled:C.loading,class:`_cppay-btn _cppay-btn-primary`},(0,n.toDisplayString)(C.loading?C.plain===`subscription`?D.value.authorizing:D.value.processing:(C.plain,D.value.walletPay)),9,qe),(0,n.createElementVNode)(`button`,{onClick:U,disabled:C.loading,class:`_cppay-btn _cppay-wallet-address-btn`,title:D.value.clickToModifyWallet},[(0,n.createElementVNode)(`span`,Ye,(0,n.toDisplayString)(N.value.slice(0,10))+`...`+(0,n.toDisplayString)(N.value.slice(-4)),1),t[15]||=(0,n.createElementVNode)(`svg`,{class:`_cppay-wallet-arrow`,viewBox:`0 0 24 24`,fill:`none`,stroke:`currentColor`,"stroke-width":`2`},[(0,n.createElementVNode)(`polyline`,{points:`6 9 12 15 18 9`})],-1)],8,Je)],64)):((0,n.openBlock)(),(0,n.createElementBlock)(`button`,{key:0,onClick:U,disabled:P.value,class:`_cppay-btn _cppay-btn-secondary _cppay-connect-wallet-btn`},[(0,n.createElementVNode)(`span`,null,(0,n.toDisplayString)(P.value?D.value.processing:D.value.connectWallet),1)],8,Ke))])),(0,n.createElementVNode)(`div`,Xe,[(0,n.createElementVNode)(`button`,{onClick:t[5]||=t=>e.$emit(`update:paymentStep`,`payment`),disabled:C.isCheckingPayment,class:`_cppay-btn _cppay-btn-primary`},(0,n.toDisplayString)(C.isCheckingPayment?D.value.checking:D.value.completedPayment),9,Ze)]),t[16]||=(0,n.createElementVNode)(`hr`,{class:`_cppay-divider`},null,-1),(0,n.createElementVNode)(`div`,Qe,[(0,n.createElementVNode)(`button`,{onClick:t[6]||=t=>e.$emit(`update:paymentStep`,`select`),disabled:C.loading||C.isCheckingPayment,class:`_cppay-btn _cppay-btn-text`},(0,n.toDisplayString)(D.value.changePaymentMethod),9,$e)])]))]))}}),w=C,T={class:`_cppay-dialog`},E={class:`_cppay-header`},D={class:`_cppay-title`},O=[`disabled`],k=(0,n.defineComponent)({__name:`PaymentDialog`,props:{modelValue:{type:Boolean},apikey:{},orderId:{},amount:{},plain:{default:`one-time`},intervalDays:{default:30},locale:{default:`zh-CN`}},emits:[`update:modelValue`,`success`,`expired`,`failed`,`error`],setup(t,{emit:r}){let i=t,a=r,o=(0,n.computed)(()=>e.t(i.locale)),s=(0,n.ref)(`select`),c=(0,n.ref)(!1),l=(0,n.ref)(!1),u=(0,n.ref)();(0,n.watch)(()=>s.value,e=>{e===`success`&&setTimeout(()=>{d()},1e3)}),(0,n.watch)(()=>i.modelValue,e=>{e||(s.value=`select`,u.value=void 0,c.value=!1,l.value=!1)}),(0,n.onMounted)(()=>{let e=e=>{e.key===`Escape`&&i.modelValue&&!c.value&&!l.value&&d()};return window.addEventListener(`keydown`,e),()=>{window.removeEventListener(`keydown`,e)}});let d=()=>{c.value||l.value||a(`update:modelValue`,!1)},f=()=>{switch(s.value){case`success`:return o.value.paymentResult;case`expired`:return o.value.paymentExpired;case`failed`:return o.value.paymentFailed;case`error`:return o.value.error;case`payment`:return o.value.completePayment;default:return o.value.selectPaymentMethod}};return(e,r)=>t.modelValue?((0,n.openBlock)(),(0,n.createElementBlock)(`div`,{key:0,class:`_cppay-overlay`,onClick:r[6]||=e=>e.target===e.currentTarget&&!c.value&&!l.value&&d()},[(0,n.createElementVNode)(`div`,T,[(0,n.createElementVNode)(`div`,E,[(0,n.createElementVNode)(`h2`,D,(0,n.toDisplayString)(f()),1),(0,n.createElementVNode)(`button`,{onClick:d,disabled:c.value||l.value,class:`_cppay-close-btn`},[...r[7]||=[(0,n.createElementVNode)(`svg`,{fill:`none`,stroke:`currentColor`,viewBox:`0 0 24 24`},[(0,n.createElementVNode)(`path`,{"stroke-linecap":`round`,"stroke-linejoin":`round`,"stroke-width":`2`,d:`M6 18L18 6M6 6l12 12`})],-1)]],8,O)]),(0,n.createVNode)(w,{apikey:t.apikey,orderId:t.orderId,amount:t.amount,plain:t.plain,intervalDays:t.intervalDays,locale:t.locale,paymentStep:s.value,loading:c.value,isCheckingPayment:l.value,error:u.value,"onUpdate:paymentStep":r[0]||=e=>s.value=e,"onUpdate:error":r[1]||=e=>u.value=e,onSuccess:r[2]||=e=>a(`success`,e),onExpired:r[3]||=e=>a(`expired`,e),onFailed:r[4]||=e=>a(`failed`,e),onError:r[5]||=e=>a(`error`,e)},{"choose-top":(0,n.withCtx)(()=>[(0,n.renderSlot)(e.$slots,`choose-top`)]),"choose-bottom":(0,n.withCtx)(()=>[(0,n.renderSlot)(e.$slots,`choose-bottom`)]),_:3},8,[`apikey`,`orderId`,`amount`,`plain`,`intervalDays`,`locale`,`paymentStep`,`loading`,`isCheckingPayment`,`error`])])])):(0,n.createCommentVNode)(``,!0)}}),A=k,j=(0,n.ref)({apikey:``,open:!1,options:null});const M=e=>{j.value.options=e,j.value.open=!0},N=()=>{j.value.open=!1};var P=()=>{j.value.open=!1},F=e=>{j.value.options?.onSuccess?.(e),setTimeout(()=>{j.value.open=!1},1e3)},I=e=>{j.value.options?.onExpired?.(e)},L=e=>{j.value.options?.onFailed?.(e)},R=e=>{j.value.options?.onError?.(e)};const z={install(e,t){if(!t?.apikey)throw Error(`Cppay plugin requires an apikey`);j.value.apikey=t.apikey,e.config.globalProperties.$showPayment=M,e.config.globalProperties.$closePayment=N;let r=e=>{e.key===`Escape`&&j.value.open&&P()},i=document.createElement(`div`);document.body.appendChild(i),(0,n.createApp)({setup(){return()=>j.value.options?(0,n.h)(A,{modelValue:j.value.open,"onUpdate:modelValue":e=>{j.value.open=e,e||P()},apikey:j.value.apikey,plain:j.value.options.plain,orderId:j.value.options.orderId,amount:j.value.options.amount,intervalDays:j.value.options.intervalDays,onSuccess:F,onExpired:I,onFailed:L,onError:R}):null}}).mount(i),j.value.open&&document.addEventListener(`keydown`,r),e.config.globalProperties.$watchEffect?.(()=>{j.value.open?document.addEventListener(`keydown`,r):document.removeEventListener(`keydown`,r)})}},B=()=>{if(!j.value.apikey)throw Error(`useCppayPayment must be used after installing CppayPlugin`);return{showPayment:M,closePayment:N}};e.n(e.r),exports.CppayPlugin=z,exports.PaymentContent=w,exports.PaymentDialog=A,exports.showPayment=M,exports.useCppayPayment=B;
1
+ const e=require(`./locales-mdiXS8LU.cjs`),t=require(`./cppay-GXgivhbP.cjs`);let n=require(`vue`),r=require(`qrcode`);r=e.i(r);let i=require(`rxjs`),a=require(`rxjs/operators`),o=require(`viem`),s=require(`viem/chains`),c=require(`@reown/appkit`),l=require(`@reown/appkit-adapter-ethers`);var u={class:`_cppay-content`},d={key:0,class:`_cppay-state-container`},f={class:`_cppay-state-title`},p={class:`_cppay-state-message`},m={key:1,class:`_cppay-state-container`},h={class:`_cppay-state-title`},g=[`disabled`],ee={key:2,class:`_cppay-state-container`},te={class:`_cppay-state-title`},ne={key:3,class:`_cppay-state-container`},re={class:`_cppay-state-title`},ie={key:4},_={class:`_cppay-section`},ae={class:`_cppay-label`},oe={class:`_cppay-grid`},se=[`onClick`],ce=[`src`,`alt`],le={class:`_cppay-section`},ue={class:`_cppay-label`},de={class:`_cppay-grid`},fe=[`onClick`],pe=[`src`,`alt`],me={class:`_cppay-section`},he={class:`_cppay-price-box`},ge={class:`_cppay-price-row`},_e={class:`_cppay-price-label`},ve={class:`_cppay-price-amount`},ye={class:`_cppay-price-main`},be={class:`_cppay-price-sub`},xe={class:`_cppay-section`},Se={class:`_cppay-error-tooltip`},Ce={key:0,class:`_cppay-error-tooltip-full`},we=[`disabled`],Te={key:5},Ee={class:`_cppay-qr-container`},De={class:`_cppay-qr-code`},Oe=[`src`],ke={class:`_cppay-section`},Ae={key:0,class:`_cppay-info-box`},je={class:`_cppay-info-flex-container`},Me={class:`_cppay-info-flex-child`},Ne={class:`_cppay-info-label`},Pe={class:`_cppay-info-value _cppay-info-value-flex`},Fe={key:0},v={class:`_cppay-info-box`},Ie={class:`_cppay-info-flex-child`},Le={class:`_cppay-info-label _cppay-info-label-flex`},Re={key:0,class:`_cppay-countdown`},ze={class:`_cppay-address-row`},Be={key:0},Ve=[`title`],He={key:0,class:`_cppay-copy-icon`,viewBox:`0 0 24 24`,fill:`none`,stroke:`currentColor`,"stroke-width":`2`},Ue={key:1,class:`_cppay-copy-icon`,viewBox:`0 0 24 24`,fill:`currentColor`},We={key:1,class:`_cppay-info-box _cppay-subscription-box`},Ge={class:`_cppay-info-label _cppay-subscription-label`},Ke={class:`_cppay-info-value _cppay-subscription-message`},qe={class:`_cppay-error-tooltip`},Je={key:0,class:`_cppay-error-tooltip-full`},Ye={key:1,class:`_cppay-section`},Xe=[`disabled`],Ze=[`disabled`],Qe=[`disabled`,`title`],$e={class:`_cppay-wallet-address-text`},et={class:`_cppay-section`},tt=[`disabled`],nt={class:`_cppay-section`},rt=[`disabled`],y=(0,n.defineComponent)({__name:`PaymentContent`,props:{apikey:{},orderId:{},amount:{},plain:{default:`one-time`},intervalDays:{},slots:{},locale:{}},emits:[`update:paymentStep`,`success`,`expired`,`failed`,`error`,`update:loading`,`update:isCheckingPayment`,`update:error`],setup(y,{emit:b}){let x=y,S=b,C=(0,n.computed)(()=>e.t(x.locale||`zh-CN`)),w=new t.t(x.apikey),T=(0,n.ref)(`select`),E=(0,n.ref)(!1),D=(0,n.ref)(!1),O=(0,n.ref)(),k=(0,n.ref)([]),A=(0,n.ref)(),j=(0,n.ref)(),M=(0,n.ref)(),N=(0,n.ref)(),P=(0,n.ref)(!1),F=(0,n.ref)(),I=(0,n.ref)(``),L=(0,n.ref)(!1),R=(0,n.ref)(!1),z=(0,n.ref)(null),B=(0,n.ref)(null),V=(0,n.ref)(null),H=(0,n.ref)(null),it=()=>{typeof window<`u`&&!z.value&&(z.value=(0,c.createAppKit)({debug:!1,enableNetworkSwitch:!1,adapters:[new l.EthersAdapter],projectId:`8d2e1854d3f1782e45aa15fbd8938894`,allowUnsupportedChain:!0,networks:[s.mainnet,s.bsc,s.polygon,s.arbitrum,s.optimism,s.base],metadata:{name:`Cppay`,description:`Cppay Payment Gateway`,url:window.location.origin,icons:[`https://cppay.com/icon.png`]},features:{analytics:!1}}),N.value=z.value.getAddress(),F.value=z.value.getProvider(`eip155`),z.value.subscribeAccount(e=>{e.isConnected?N.value=e.address:(N.value=void 0,F.value=void 0)}),z.value.subscribeProviders(e=>{F.value=e?.eip155}))};(0,n.watch)(T,e=>{S(`update:paymentStep`,e)}),(0,n.watch)(E,e=>{S(`update:loading`,e)}),(0,n.watch)(D,e=>{S(`update:isCheckingPayment`,e)}),(0,n.watch)(O,e=>{S(`update:error`,e)});let U=async()=>{try{P.value=!0,O.value=void 0,z.value&&await z.value.open()}catch(e){O.value=e instanceof Error?e.message:C.value.walletConnectionFailed,S(`error`,e)}finally{P.value=!1}},W=(0,n.computed)(()=>k.value.find(e=>e.chain===A.value)),G=(0,n.computed)(()=>W.value?.tokens||[]),K=(0,n.computed)(()=>G.value.find(e=>e.symbol===j.value)),q=e=>[`USDT`,`USDC`,`BUSD`,`DAI`,`TUSD`,`USDD`,`FDUSD`].includes(e.toUpperCase())?2:6,J=(e,t)=>{let n=parseFloat(e);return isNaN(n)?`0`:n.toFixed(t).replace(/\.?0+$/,``)},at=e=>{if(e<=0)return C.value.expired;let t=Math.floor(e/3600),n=Math.floor(e%3600/60),r=e%60;return t>0?`${t}${C.value.hours}${n}${C.value.minutes}${r}${C.value.seconds}`:`${n}${C.value.minutes}${r}${C.value.seconds}`},Y=e=>{V.value&&clearInterval(V.value);let t=()=>{let t=e-Math.floor(Date.now()/1e3);I.value=at(t),t<=0&&(T.value=`expired`,X())};t(),V.value=setInterval(t,1e3)},X=()=>{V.value&&=(clearInterval(V.value),null)},Z=(0,n.computed)(()=>{if(!j.value||!K.value)return`0`;let e=parseFloat(K.value.price);if(isNaN(e)||e===0)return`0`;let t=q(j.value);return J((parseFloat(x.amount)/e).toFixed(t),t)}),ot=async()=>{try{O.value=void 0;let e=await w.getSupportedChains();k.value=e,e.length>0&&(A.value=e[0].chain)}catch(e){O.value=e instanceof Error?e.message:C.value.loadPaymentNetworkFailed,S(`error`,e)}},Q=async e=>{if(F.value)try{await F.value.request({method:`wallet_switchEthereumChain`,params:[{chainId:`0x${e.toString(16)}`}]})}catch(e){throw e.code===4902?Error(C.value.pleaseAddNetwork):e}},st=async()=>{if(!(!N.value||!F.value||!H.value||!K.value||!W.value))try{let e=H.value;await Q(W.value.chainId);let t=(0,o.createWalletClient)({account:N.value,transport:(0,o.custom)(F.value)});K.value.address?await t.writeContract({address:K.value.address,abi:[{name:`transfer`,type:`function`,stateMutability:`nonpayable`,inputs:[{name:`to`,type:`address`},{name:`amount`,type:`uint256`}],outputs:[{type:`bool`}]}],functionName:`transfer`,args:[e.receiveAddress,(0,o.parseUnits)(e.paymentAmount,K.value.decimals)],chain:null}):await t.sendTransaction({to:e.receiveAddress,value:(0,o.parseUnits)(e.paymentAmount,K.value.decimals),chain:null}),M.value=void 0}catch(e){S(`update:error`,e instanceof Error?e.message:C.value.walletPaymentFailed),S(`error`,e)}},ct=async()=>{if(!(!N.value||!F.value||!H.value||!K.value||!W.value))try{let e=H.value;await Q(W.value.chainId);let t=(0,o.createWalletClient)({account:N.value,transport:(0,o.custom)(F.value)});if(!K.value.address)throw Error(C.value.subscriptionDoesNotSupportNative);await t.writeContract({address:K.value.address,abi:[{name:`approve`,type:`function`,stateMutability:`nonpayable`,inputs:[{name:`spender`,type:`address`},{name:`amount`,type:`uint256`}],outputs:[{type:`bool`}]}],functionName:`approve`,args:[e.spenderAddress,(0,o.parseUnits)(e.approveAmount,K.value.decimals)],chain:null}),M.value=void 0}catch(e){O.value=e instanceof Error?e.message:C.value.walletPaymentFailed,S(`error`,e)}},lt=async()=>{if(!N.value){O.value=C.value.pleaseConnectWallet,S(`error`,Error(C.value.pleaseConnectWallet));return}x.plain===`one-time`?await st():x.plain===`subscription`&&await ct()},ut=async()=>{if(!(!A.value||!j.value))try{O.value=void 0;let e=``;x.plain===`one-time`?(H.value=await w.createOnetimePayment({paymentChain:A.value,paymentToken:j.value,orderId:x.orderId,amount:Z.value}),e=`${A.value.toLowerCase()}:${H.value.receiveAddress}?amount=${H.value.paymentAmount}`,Y(H.value.expireAt),$({paymentId:H.value.paymentId})):x.plain===`subscription`&&(H.value=await w.createSubscriptionPayment({paymentChain:A.value,paymentToken:j.value,orderId:x.orderId,amountOfUsd:Z.value,intervalDays:x.intervalDays||30}),e=`${A.value.toLowerCase()}:${H.value.spenderAddress}?amount=${H.value.approveAmount}`,Y(H.value.expireAt),$({subscriptionId:H.value.subscriptionId})),T.value=`payment`,M.value=await r.toDataURL(e,{width:200,margin:2,errorCorrectionLevel:`H`})}catch(e){O.value=e instanceof Error?e.message:C.value.createPaymentFailed,S(`error`,e)}},$=e=>{B.value?.unsubscribe();let t=()=>(0,i.defer)(()=>x.plain===`subscription`?w.checkSubscriptionPaymentStatus(e):w.checkOnetimePaymentStatus(e)).pipe((0,a.timeout)(15e3),(0,a.retry)({delay:2e3}));B.value=t().pipe((0,a.expand)(e=>e.status===`pending`?(0,i.timer)(2e3).pipe((0,a.switchMap)(()=>t())):i.EMPTY),(0,a.tap)(e=>{(e.status===`paid`||e.status===`approved`)&&(T.value=`success`,S(`success`,e)),e.status===`expired`&&(T.value=`expired`,S(`expired`,e)),e.status===`failed`&&(T.value=`failed`,S(`failed`,e))})).subscribe({error:e=>{if(H.value){let t=e instanceof Error?e.message:C.value.checkPaymentStatusFailed;T.value=`error`,O.value=t,S(`error`,e)}},complete:()=>{B.value?.unsubscribe()}})},dt=async()=>{if(!H.value)return;let e=x.plain===`subscription`?H.value.spenderAddress:H.value.receiveAddress;if(e)try{await navigator.clipboard.writeText(e),L.value=!0,setTimeout(()=>{L.value=!1},2e3)}catch(e){console.error(`复制失败:`,e)}};return(0,n.watch)(()=>T.value,e=>{e===`select`&&k.value.length===0&&ot()},{immediate:!0}),(0,n.watch)(G,e=>{e.length>0&&!j.value&&(j.value=e[0].symbol)}),(0,n.watch)(()=>x.orderId,e=>{e&&$({orderId:e})}),(0,n.onMounted)(()=>{it()}),(0,n.onUnmounted)(()=>{B.value?.unsubscribe(),X()}),(e,t)=>((0,n.openBlock)(),(0,n.createElementBlock)(`div`,u,[T.value===`success`?((0,n.openBlock)(),(0,n.createElementBlock)(`div`,d,[t[7]||=(0,n.createElementVNode)(`div`,{class:`_cppay-state-icon`},`✅`,-1),(0,n.createElementVNode)(`h3`,f,(0,n.toDisplayString)(y.plain===`subscription`?C.value.authorizationSuccess:C.value.paymentSuccess),1),(0,n.createElementVNode)(`p`,p,(0,n.toDisplayString)(y.plain===`subscription`?C.value.subscriptionActivated:C.value.transactionCompleted),1)])):T.value===`expired`?((0,n.openBlock)(),(0,n.createElementBlock)(`div`,m,[t[8]||=(0,n.createElementVNode)(`div`,{class:`_cppay-state-icon`},`⏰`,-1),(0,n.createElementVNode)(`h3`,h,(0,n.toDisplayString)(C.value.paymentExpired),1),(0,n.createElementVNode)(`button`,{onClick:t[0]||=e=>T.value=`select`,disabled:E.value||D.value,class:`_cppay-btn _cppay-btn-text`},(0,n.toDisplayString)(C.value.returnButton),9,g)])):T.value===`error`?((0,n.openBlock)(),(0,n.createElementBlock)(`div`,ee,[t[9]||=(0,n.createElementVNode)(`div`,{class:`_cppay-state-icon`},`❌`,-1),(0,n.createElementVNode)(`h3`,te,(0,n.toDisplayString)(C.value.checking),1)])):T.value===`failed`?((0,n.openBlock)(),(0,n.createElementBlock)(`div`,ne,[t[10]||=(0,n.createElementVNode)(`div`,{class:`_cppay-state-icon`},`❌`,-1),(0,n.createElementVNode)(`h3`,re,(0,n.toDisplayString)(C.value.paymentFailed),1)])):T.value===`select`?((0,n.openBlock)(),(0,n.createElementBlock)(`div`,ie,[(0,n.renderSlot)(e.$slots,`choose-top`),(0,n.createElementVNode)(`div`,_,[(0,n.createElementVNode)(`label`,ae,(0,n.toDisplayString)(C.value.paymentNetwork),1),(0,n.createElementVNode)(`div`,oe,[((0,n.openBlock)(!0),(0,n.createElementBlock)(n.Fragment,null,(0,n.renderList)(k.value,e=>((0,n.openBlock)(),(0,n.createElementBlock)(`button`,{key:e.chain,onClick:t=>A.value=e.chain,class:(0,n.normalizeClass)([`_cppay-select-btn`,{"_cppay-selected":A.value===e.chain}])},[e.icon?((0,n.openBlock)(),(0,n.createElementBlock)(`img`,{key:0,src:e.icon,alt:e.chain},null,8,ce)):(0,n.createCommentVNode)(``,!0),(0,n.createElementVNode)(`span`,null,(0,n.toDisplayString)(e.chain),1)],10,se))),128))])]),(0,n.createElementVNode)(`div`,le,[(0,n.createElementVNode)(`label`,ue,(0,n.toDisplayString)(C.value.paymentToken),1),(0,n.createElementVNode)(`div`,de,[((0,n.openBlock)(!0),(0,n.createElementBlock)(n.Fragment,null,(0,n.renderList)(G.value,e=>((0,n.openBlock)(),(0,n.createElementBlock)(`button`,{key:e.symbol,onClick:t=>j.value=e.symbol,class:(0,n.normalizeClass)([`_cppay-select-btn`,{"_cppay-selected":j.value===e.symbol}])},[e.icon?((0,n.openBlock)(),(0,n.createElementBlock)(`img`,{key:0,src:e.icon,alt:e.symbol},null,8,pe)):(0,n.createCommentVNode)(``,!0),(0,n.createElementVNode)(`span`,null,(0,n.toDisplayString)(e.symbol),1)],10,fe))),128))])]),(0,n.renderSlot)(e.$slots,`choose-bottom`),(0,n.createElementVNode)(`div`,me,[(0,n.createElementVNode)(`div`,he,[(0,n.createElementVNode)(`div`,ge,[(0,n.createElementVNode)(`span`,_e,(0,n.toDisplayString)(C.value.paymentAmount),1),(0,n.createElementVNode)(`div`,ve,[(0,n.createElementVNode)(`div`,ye,(0,n.toDisplayString)(Z.value??`-`)+` `+(0,n.toDisplayString)(j.value??``),1),(0,n.createElementVNode)(`div`,be,`≈ $`+(0,n.toDisplayString)(y.amount),1)])])])]),(0,n.createElementVNode)(`div`,xe,[O.value?((0,n.openBlock)(),(0,n.createElementBlock)(`div`,{key:0,class:`_cppay-error-tooltip-wrapper`,onMouseenter:t[1]||=e=>R.value=!0,onMouseleave:t[2]||=e=>R.value=!1},[(0,n.createElementVNode)(`div`,Se,[t[11]||=(0,n.createElementVNode)(`svg`,{viewBox:`0 0 20 20`,fill:`currentColor`},[(0,n.createElementVNode)(`path`,{"fill-rule":`evenodd`,d:`M10 18a8 8 0 100-16 8 8 0 000 16zM8.707 7.293a1 1 0 00-1.414 1.414L8.586 10l-1.293 1.293a1 1 0 101.414 1.414L10 11.414l1.293 1.293a1 1 0 001.414-1.414L11.414 10l1.293-1.293a1 1 0 00-1.414-1.414L10 8.586 8.707 7.293z`,"clip-rule":`evenodd`})],-1),(0,n.createElementVNode)(`span`,null,(0,n.toDisplayString)(O.value),1)]),R.value?((0,n.openBlock)(),(0,n.createElementBlock)(`div`,Ce,(0,n.toDisplayString)(O.value),1)):(0,n.createCommentVNode)(``,!0)],32)):(0,n.createCommentVNode)(``,!0),(0,n.createElementVNode)(`button`,{onClick:ut,disabled:!A.value||!j.value||E.value,class:`_cppay-btn _cppay-btn-primary`},(0,n.toDisplayString)(E.value?C.value.processing:C.value.continuePayment),9,we)])])):((0,n.openBlock)(),(0,n.createElementBlock)(`div`,Te,[(0,n.createElementVNode)(`div`,Ee,[(0,n.createElementVNode)(`div`,De,[M.value?((0,n.openBlock)(),(0,n.createElementBlock)(`img`,{key:0,src:M.value,alt:`Payment QR Code`,class:`_cppay-qr-image`},null,8,Oe)):(0,n.createCommentVNode)(``,!0)])]),(0,n.createElementVNode)(`div`,ke,[K.value?((0,n.openBlock)(),(0,n.createElementBlock)(`div`,Ae,[(0,n.createElementVNode)(`div`,je,[(0,n.createElementVNode)(`div`,Me,[(0,n.createElementVNode)(`div`,Ne,(0,n.toDisplayString)(y.plain===`subscription`?C.value.authorizationAmount:C.value.paymentAmount),1),(0,n.createElementVNode)(`div`,Pe,[H.value?((0,n.openBlock)(),(0,n.createElementBlock)(`span`,Fe,(0,n.toDisplayString)(y.plain===`subscription`?`${J(H.value.approveAmount,q(K.value.symbol))} ${K.value.symbol}`:`${J(H.value.paymentAmount,q(K.value.symbol))} ${K.value.symbol}`),1)):(0,n.createCommentVNode)(``,!0),(0,n.createElementVNode)(`span`,null,`≈ $`+(0,n.toDisplayString)(y.amount),1)])])])])):(0,n.createCommentVNode)(``,!0),(0,n.createElementVNode)(`div`,v,[(0,n.createElementVNode)(`div`,Ie,[(0,n.createElementVNode)(`div`,Le,[(0,n.createElementVNode)(`span`,null,(0,n.toDisplayString)(y.plain===`subscription`?C.value.authorizationContractAddress:C.value.paymentAddress),1),I.value?((0,n.openBlock)(),(0,n.createElementBlock)(`span`,Re,`⏰ `+(0,n.toDisplayString)(I.value),1)):(0,n.createCommentVNode)(``,!0)]),(0,n.createElementVNode)(`div`,ze,[H.value?((0,n.openBlock)(),(0,n.createElementBlock)(`code`,Be,(0,n.toDisplayString)(y.plain===`subscription`?H.value.spenderAddress:H.value.receiveAddress),1)):(0,n.createCommentVNode)(``,!0),(0,n.createElementVNode)(`button`,{onClick:dt,class:(0,n.normalizeClass)([`_cppay-copy-btn`,{"_cppay-copy-success":L.value}]),title:L.value?C.value.copied:C.value.copyAddress},[L.value?((0,n.openBlock)(),(0,n.createElementBlock)(`svg`,Ue,[...t[13]||=[(0,n.createElementVNode)(`path`,{d:`M9 16.17L4.83 12l-1.42 1.41L9 19 21 7l-1.41-1.41z`},null,-1)]])):((0,n.openBlock)(),(0,n.createElementBlock)(`svg`,He,[...t[12]||=[(0,n.createElementVNode)(`path`,{d:`M16 4h2a2 2 0 0 1 2 2v14a2 2 0 0 1-2 2H6a2 2 0 0 1-2-2V6a2 2 0 0 1 2-2h2`},null,-1),(0,n.createElementVNode)(`rect`,{x:`8`,y:`2`,width:`8`,height:`4`,rx:`1`,ry:`1`},null,-1)]]))],10,Ve)])])]),y.plain===`subscription`?((0,n.openBlock)(),(0,n.createElementBlock)(`div`,We,[(0,n.createElementVNode)(`div`,Ge,(0,n.toDisplayString)(C.value.subscriptionNotice),1),(0,n.createElementVNode)(`div`,Ke,(0,n.toDisplayString)(C.value.subscriptionNoticeMessage),1)])):(0,n.createCommentVNode)(``,!0)]),O.value?((0,n.openBlock)(),(0,n.createElementBlock)(`div`,{key:0,class:`_cppay-error-tooltip-wrapper`,onMouseenter:t[3]||=e=>R.value=!0,onMouseleave:t[4]||=e=>R.value=!1},[(0,n.createElementVNode)(`div`,qe,[t[14]||=(0,n.createElementVNode)(`svg`,{viewBox:`0 0 20 20`,fill:`currentColor`},[(0,n.createElementVNode)(`path`,{"fill-rule":`evenodd`,d:`M10 18a8 8 0 100-16 8 8 0 000 16zM8.707 7.293a1 1 0 00-1.414 1.414L8.586 10l-1.293 1.293a1 1 0 101.414 1.414L10 11.414l1.293 1.293a1 1 0 001.414-1.414L11.414 10l1.293-1.293a1 1 0 00-1.414-1.414L10 8.586 8.707 7.293z`,"clip-rule":`evenodd`})],-1),(0,n.createElementVNode)(`span`,null,(0,n.toDisplayString)(O.value),1)]),R.value?((0,n.openBlock)(),(0,n.createElementBlock)(`div`,Je,(0,n.toDisplayString)(O.value),1)):(0,n.createCommentVNode)(``,!0)],32)):(0,n.createCommentVNode)(``,!0),D.value?(0,n.createCommentVNode)(``,!0):((0,n.openBlock)(),(0,n.createElementBlock)(`div`,Ye,[N.value?((0,n.openBlock)(),(0,n.createElementBlock)(n.Fragment,{key:1},[(0,n.createElementVNode)(`button`,{onClick:lt,disabled:E.value,class:`_cppay-btn _cppay-btn-primary`},(0,n.toDisplayString)(E.value?y.plain===`subscription`?C.value.authorizing:C.value.processing:(y.plain,C.value.walletPay)),9,Ze),(0,n.createElementVNode)(`button`,{onClick:U,disabled:E.value,class:`_cppay-btn _cppay-wallet-address-btn`,title:C.value.clickToModifyWallet},[(0,n.createElementVNode)(`span`,$e,(0,n.toDisplayString)(N.value.slice(0,10))+`...`+(0,n.toDisplayString)(N.value.slice(-4)),1),t[15]||=(0,n.createElementVNode)(`svg`,{class:`_cppay-wallet-arrow`,viewBox:`0 0 24 24`,fill:`none`,stroke:`currentColor`,"stroke-width":`2`},[(0,n.createElementVNode)(`polyline`,{points:`6 9 12 15 18 9`})],-1)],8,Qe)],64)):((0,n.openBlock)(),(0,n.createElementBlock)(`button`,{key:0,onClick:U,disabled:P.value,class:`_cppay-btn _cppay-btn-secondary _cppay-connect-wallet-btn`},[(0,n.createElementVNode)(`span`,null,(0,n.toDisplayString)(P.value?C.value.processing:C.value.connectWallet),1)],8,Xe))])),(0,n.createElementVNode)(`div`,et,[(0,n.createElementVNode)(`button`,{onClick:t[5]||=e=>T.value=`payment`,disabled:D.value,class:`_cppay-btn _cppay-btn-primary`},(0,n.toDisplayString)(D.value?C.value.checking:C.value.completedPayment),9,tt)]),t[16]||=(0,n.createElementVNode)(`hr`,{class:`_cppay-divider`},null,-1),(0,n.createElementVNode)(`div`,nt,[(0,n.createElementVNode)(`button`,{onClick:t[6]||=e=>T.value=`select`,disabled:E.value||D.value,class:`_cppay-btn _cppay-btn-text`},(0,n.toDisplayString)(C.value.changePaymentMethod),9,rt)])]))]))}}),b=y,x={class:`_cppay-dialog`},S={class:`_cppay-header`},C={class:`_cppay-title`},w=[`disabled`],T=(0,n.defineComponent)({__name:`PaymentDialog`,props:{modelValue:{type:Boolean},apikey:{},orderId:{},amount:{},plain:{default:`one-time`},intervalDays:{default:30},locale:{default:`zh-CN`}},emits:[`update:modelValue`,`success`,`expired`,`failed`,`error`],setup(t,{emit:r}){let i=t,a=r,o=(0,n.computed)(()=>e.t(i.locale)),s=(0,n.ref)(`select`),c=(0,n.ref)(!1),l=(0,n.ref)(!1),u=(0,n.ref)();(0,n.watch)(()=>s.value,e=>{e===`success`&&setTimeout(()=>{h()},1e3)}),(0,n.watch)(()=>i.modelValue,e=>{e||(s.value=`select`,u.value=void 0,c.value=!1,l.value=!1)});let d=e=>{s.value=e},f=e=>{c.value=e},p=e=>{l.value=e},m=e=>{u.value=e};(0,n.onMounted)(()=>{let e=e=>{e.key===`Escape`&&i.modelValue&&!c.value&&!l.value&&h()};return window.addEventListener(`keydown`,e),()=>{window.removeEventListener(`keydown`,e)}});let h=()=>{c.value||l.value||a(`update:modelValue`,!1)},g=()=>{switch(s.value){case`success`:return o.value.paymentResult;case`expired`:return o.value.paymentExpired;case`failed`:return o.value.paymentFailed;case`error`:return o.value.error;case`payment`:return o.value.completePayment;default:return o.value.selectPaymentMethod}};return(e,r)=>t.modelValue?((0,n.openBlock)(),(0,n.createElementBlock)(`div`,{key:0,class:`_cppay-overlay`,onClick:r[4]||=e=>e.target===e.currentTarget&&!c.value&&!l.value&&h()},[(0,n.createElementVNode)(`div`,x,[(0,n.createElementVNode)(`div`,S,[(0,n.createElementVNode)(`h2`,C,(0,n.toDisplayString)(g()),1),(0,n.createElementVNode)(`button`,{onClick:h,disabled:c.value||l.value,class:`_cppay-close-btn`},[...r[5]||=[(0,n.createElementVNode)(`svg`,{fill:`none`,stroke:`currentColor`,viewBox:`0 0 24 24`},[(0,n.createElementVNode)(`path`,{"stroke-linecap":`round`,"stroke-linejoin":`round`,"stroke-width":`2`,d:`M6 18L18 6M6 6l12 12`})],-1)]],8,w)]),(0,n.createVNode)(b,{apikey:t.apikey,orderId:t.orderId,amount:t.amount,plain:t.plain,intervalDays:t.intervalDays,locale:t.locale,"onUpdate:paymentStep":d,"onUpdate:loading":f,"onUpdate:isCheckingPayment":p,"onUpdate:error":m,onSuccess:r[0]||=e=>a(`success`,e),onExpired:r[1]||=e=>a(`expired`,e),onFailed:r[2]||=e=>a(`failed`,e),onError:r[3]||=e=>a(`error`,e)},{"choose-top":(0,n.withCtx)(()=>[(0,n.renderSlot)(e.$slots,`choose-top`)]),"choose-bottom":(0,n.withCtx)(()=>[(0,n.renderSlot)(e.$slots,`choose-bottom`)]),_:3},8,[`apikey`,`orderId`,`amount`,`plain`,`intervalDays`,`locale`])])])):(0,n.createCommentVNode)(``,!0)}}),E=T,D=(0,n.ref)({apikey:``,open:!1,options:null});const O=e=>{D.value.options=e,D.value.open=!0},k=()=>{D.value.open=!1};var A=()=>{D.value.open=!1},j=e=>{D.value.options?.onSuccess?.(e),setTimeout(()=>{D.value.open=!1},1e3)},M=e=>{D.value.options?.onExpired?.(e)},N=e=>{D.value.options?.onFailed?.(e)},P=e=>{D.value.options?.onError?.(e)};const F={install(e,t){if(!t?.apikey)throw Error(`Cppay plugin requires an apikey`);D.value.apikey=t.apikey,e.config.globalProperties.$showPayment=O,e.config.globalProperties.$closePayment=k;let r=e=>{e.key===`Escape`&&D.value.open&&A()},i=document.createElement(`div`);document.body.appendChild(i),(0,n.createApp)({setup(){return()=>D.value.options?(0,n.h)(E,{modelValue:D.value.open,"onUpdate:modelValue":e=>{D.value.open=e,e||A()},apikey:D.value.apikey,plain:D.value.options.plain,orderId:D.value.options.orderId,amount:D.value.options.amount,intervalDays:D.value.options.intervalDays,onSuccess:j,onExpired:M,onFailed:N,onError:P}):null}}).mount(i),D.value.open&&document.addEventListener(`keydown`,r),e.config.globalProperties.$watchEffect?.(()=>{D.value.open?document.addEventListener(`keydown`,r):document.removeEventListener(`keydown`,r)})}},I=()=>{if(!D.value.apikey)throw Error(`useCppayPayment must be used after installing CppayPlugin`);return{showPayment:O,closePayment:k}};e.n(e.r),exports.CppayPlugin=F,exports.PaymentContent=b,exports.PaymentDialog=E,exports.showPayment=O,exports.useCppayPayment=I;
package/dist/vue.d.ts CHANGED
@@ -26,20 +26,22 @@ declare const __VLS_component_2: DefineComponent<Props_2, {}, {}, {}, {}, Compon
26
26
  expired: (order: OnetimePaymentOrderStatus | SubscriptionPaymentOrderStatus) => any;
27
27
  failed: (order: OnetimePaymentOrderStatus | SubscriptionPaymentOrderStatus) => any;
28
28
  error: (error: Error) => any;
29
- success: (order: OnetimePaymentOrderStatus | SubscriptionPaymentOrderStatus) => any;
30
29
  "update:paymentStep": (value: "expired" | "failed" | "error" | "select" | "payment" | "success") => any;
30
+ success: (order: OnetimePaymentOrderStatus | SubscriptionPaymentOrderStatus) => any;
31
+ "update:loading": (value: boolean) => any;
32
+ "update:isCheckingPayment": (value: boolean) => any;
31
33
  "update:error": (value: string | undefined) => any;
32
34
  }, string, PublicProps, Readonly<Props_2> & Readonly<{
33
35
  onExpired?: ((order: OnetimePaymentOrderStatus | SubscriptionPaymentOrderStatus) => any) | undefined;
34
36
  onFailed?: ((order: OnetimePaymentOrderStatus | SubscriptionPaymentOrderStatus) => any) | undefined;
35
37
  onError?: ((error: Error) => any) | undefined;
36
- onSuccess?: ((order: OnetimePaymentOrderStatus | SubscriptionPaymentOrderStatus) => any) | undefined;
37
38
  "onUpdate:paymentStep"?: ((value: "expired" | "failed" | "error" | "select" | "payment" | "success") => any) | undefined;
39
+ onSuccess?: ((order: OnetimePaymentOrderStatus | SubscriptionPaymentOrderStatus) => any) | undefined;
40
+ "onUpdate:loading"?: ((value: boolean) => any) | undefined;
41
+ "onUpdate:isCheckingPayment"?: ((value: boolean) => any) | undefined;
38
42
  "onUpdate:error"?: ((value: string | undefined) => any) | undefined;
39
43
  }>, {
40
44
  plain: PaymentPlain;
41
- loading: boolean;
42
- isCheckingPayment: boolean;
43
45
  }, {}, {}, {}, string, ComponentProvideOptions, false, {}, HTMLDivElement>;
44
46
 
45
47
  declare function __VLS_template(): {
@@ -149,14 +151,6 @@ declare interface Props_2 {
149
151
  plain?: PaymentPlain;
150
152
  /** 订阅间隔天数 */
151
153
  intervalDays?: number;
152
- /** 支付步骤 */
153
- paymentStep: "select" | "payment" | "success" | "failed" | "expired" | "error";
154
- /** 加载状态 */
155
- loading?: boolean;
156
- /** 检查支付中状态 */
157
- isCheckingPayment?: boolean;
158
- /** 错误信息 */
159
- error?: string;
160
154
  /** 插槽 */
161
155
  slots?: any;
162
156
  /** 语言设置 */