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

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-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;
1
+ const e=require(`./locales-DfK0OLJI.cjs`),t=require(`./cppay-B52ulQGn.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`},ee={class:`_cppay-state-title`},te={class:`_cppay-state-message`},ne={key:1,class:`_cppay-state-container`},re={class:`_cppay-state-title`},f=[`disabled`],ie={key:2,class:`_cppay-state-container`},ae={class:`_cppay-state-title`},oe={key:3,class:`_cppay-state-container`},se={class:`_cppay-state-title`},ce={key:4},le={class:`_cppay-section`},ue={class:`_cppay-label`},de={class:`_cppay-grid`},fe=[`onClick`],pe=[`src`,`alt`],me={class:`_cppay-section`},he={class:`_cppay-label`},ge={class:`_cppay-grid`},_e=[`onClick`],ve=[`src`,`alt`],ye={class:`_cppay-section`},be={class:`_cppay-price-box`},xe={class:`_cppay-price-row`},Se={class:`_cppay-price-label`},Ce={class:`_cppay-price-amount`},we={class:`_cppay-price-main`},Te={class:`_cppay-price-sub`},Ee={class:`_cppay-section`},De={class:`_cppay-error-tooltip`},Oe={key:0,class:`_cppay-error-tooltip-full`},ke=[`disabled`],Ae={key:5},je={class:`_cppay-qr-container`},Me={class:`_cppay-qr-code`},Ne=[`src`],Pe={class:`_cppay-section`},Fe={key:0,class:`_cppay-info-box`},p={class:`_cppay-info-flex-container`},m={class:`_cppay-info-flex-child`},h={class:`_cppay-info-label`},g={class:`_cppay-info-value _cppay-info-value-flex`},_={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:{},intervalDays:{},slots:{},locale:{}},emits:[`update:paymentStep`,`success`,`expired`,`failed`,`error`],setup(y,{emit:b}){let x=y,S=b,C=(0,n.computed)(()=>e.t(x.locale)),w=new t.t(x.apikey),T=(0,n.ref)(`select`),E=(0,n.ref)(!1),D=(0,n.computed)(()=>T.value===`checking`),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.shallowRef)(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)});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=()=>{if(T.value===`checking`){X();return}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{E.value=!0,O.value=void 0,k.value=await w.getSupportedChains(),k.value.length>0&&(A.value=k.value[0].chain)}catch(e){O.value=e instanceof Error?e.message:C.value.loadPaymentNetworkFailed,S(`error`,e)}finally{E.value=!1}},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{E.value=!0;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){let n=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});console.log(`转账交易哈希:`,n)}else{let n=await t.sendTransaction({to:e.receiveAddress,value:(0,o.parseUnits)(e.paymentAmount,K.value.decimals),chain:null});console.log(`转账交易哈希:`,n)}E.value=!1,T.value=`checking`}catch(e){console.error(`钱包支付失败:`,e),O.value=e instanceof Error?e.message:C.value.walletPaymentFailed,S(`error`,e),E.value=!1}},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);let n=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});console.log(`授权交易哈希:`,n),E.value=!1,T.value=`checking`}catch(e){console.error(`钱包授权失败:`,e),O.value=e instanceof Error?e.message:C.value.walletPaymentFailed,S(`error`,e),E.value=!1}},lt=async()=>{if(!N.value){O.value=C.value.pleaseConnectWallet,S(`error`,Error(C.value.pleaseConnectWallet));return}x.plain===`instant`?await st():x.plain===`subscription`&&await ct()},ut=async()=>{if(!(!A.value||!j.value))try{O.value=void 0;let e=``;x.plain===`instant`?(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)}},dt=()=>{H.value&&(O.value=void 0,T.value=`checking`)},$=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()}})},ft=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)(G,e=>{e.length>0&&(j.value=e[0].symbol)}),(0,n.onMounted)(()=>{it(),k.value.length||ot(),x.orderId&&$({orderId:x.orderId})}),(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[6]||=(0,n.createElementVNode)(`div`,{class:`_cppay-state-icon`},`✅`,-1),(0,n.createElementVNode)(`h3`,ee,(0,n.toDisplayString)(y.plain===`subscription`?C.value.authorizationSuccess:C.value.paymentSuccess),1),(0,n.createElementVNode)(`p`,te,(0,n.toDisplayString)(y.plain===`subscription`?C.value.subscriptionActivated:C.value.transactionCompleted),1)])):T.value===`expired`?((0,n.openBlock)(),(0,n.createElementBlock)(`div`,ne,[t[7]||=(0,n.createElementVNode)(`div`,{class:`_cppay-state-icon`},`⏰`,-1),(0,n.createElementVNode)(`h3`,re,(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,f)])):T.value===`error`?((0,n.openBlock)(),(0,n.createElementBlock)(`div`,ie,[t[8]||=(0,n.createElementVNode)(`div`,{class:`_cppay-state-icon`},`❌`,-1),(0,n.createElementVNode)(`h3`,ae,(0,n.toDisplayString)(C.value.checking),1)])):T.value===`failed`?((0,n.openBlock)(),(0,n.createElementBlock)(`div`,oe,[t[9]||=(0,n.createElementVNode)(`div`,{class:`_cppay-state-icon`},`❌`,-1),(0,n.createElementVNode)(`h3`,se,(0,n.toDisplayString)(C.value.paymentFailed),1)])):T.value===`select`?((0,n.openBlock)(),(0,n.createElementBlock)(`div`,ce,[(0,n.renderSlot)(e.$slots,`choose-top`),(0,n.createElementVNode)(`div`,le,[(0,n.createElementVNode)(`label`,ue,(0,n.toDisplayString)(C.value.paymentNetwork),1),(0,n.createElementVNode)(`div`,de,[((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,pe)):(0,n.createCommentVNode)(``,!0),(0,n.createElementVNode)(`span`,null,(0,n.toDisplayString)(e.chain),1)],10,fe))),128))])]),(0,n.createElementVNode)(`div`,me,[(0,n.createElementVNode)(`label`,he,(0,n.toDisplayString)(C.value.paymentToken),1),(0,n.createElementVNode)(`div`,ge,[((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,ve)):(0,n.createCommentVNode)(``,!0),(0,n.createElementVNode)(`span`,null,(0,n.toDisplayString)(e.symbol),1)],10,_e))),128))])]),(0,n.renderSlot)(e.$slots,`choose-bottom`),(0,n.createElementVNode)(`div`,ye,[(0,n.createElementVNode)(`div`,be,[(0,n.createElementVNode)(`div`,xe,[(0,n.createElementVNode)(`span`,Se,(0,n.toDisplayString)(C.value.paymentAmount),1),(0,n.createElementVNode)(`div`,Ce,[(0,n.createElementVNode)(`div`,we,(0,n.toDisplayString)(Z.value??`-`)+` `+(0,n.toDisplayString)(j.value??``),1),(0,n.createElementVNode)(`div`,Te,`≈ $`+(0,n.toDisplayString)(y.amount),1)])])])]),(0,n.createElementVNode)(`div`,Ee,[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`,De,[t[10]||=(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`,Oe,(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,ke)])])):((0,n.openBlock)(),(0,n.createElementBlock)(`div`,Ae,[(0,n.createElementVNode)(`div`,je,[(0,n.createElementVNode)(`div`,Me,[M.value?((0,n.openBlock)(),(0,n.createElementBlock)(`img`,{key:0,src:M.value,alt:`Payment QR Code`,class:`_cppay-qr-image`},null,8,Ne)):(0,n.createCommentVNode)(``,!0)])]),(0,n.createElementVNode)(`div`,Pe,[K.value?((0,n.openBlock)(),(0,n.createElementBlock)(`div`,Fe,[(0,n.createElementVNode)(`div`,p,[(0,n.createElementVNode)(`div`,m,[(0,n.createElementVNode)(`div`,h,(0,n.toDisplayString)(y.plain===`subscription`?C.value.authorizationAmount:C.value.paymentAmount),1),(0,n.createElementVNode)(`div`,g,[H.value?((0,n.openBlock)(),(0,n.createElementBlock)(`span`,_,(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:ft,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[12]||=[(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[11]||=[(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[13]||=(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[14]||=(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:dt,disabled:D.value,class:`_cppay-btn _cppay-btn-primary`},(0,n.toDisplayString)(D.value?C.value.checking:C.value.completedPayment),9,tt)]),t[15]||=(0,n.createElementVNode)(`hr`,{class:`_cppay-divider`},null,-1),(0,n.createElementVNode)(`div`,nt,[(0,n.createElementVNode)(`button`,{onClick:t[5]||=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:{},intervalDays:{},locale:{}},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.computed)(()=>s.value!==`checking`);(0,n.watch)(()=>i.modelValue,e=>{e||(s.value=`select`)});let l=e=>{s.value=e};(0,n.onMounted)(()=>{let e=e=>{e.key===`Escape`&&i.modelValue&&!c.value&&u()};return window.addEventListener(`keydown`,e),()=>{window.removeEventListener(`keydown`,e)}});let u=()=>{c.value&&a(`update:modelValue`,!1)},d=()=>{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&&u()},[(0,n.createElementVNode)(`div`,x,[(0,n.createElementVNode)(`div`,S,[(0,n.createElementVNode)(`h2`,C,(0,n.toDisplayString)(d()),1),(0,n.createElementVNode)(`button`,{onClick:u,disabled:!c.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)]),t.modelValue?((0,n.openBlock)(),(0,n.createBlock)(b,{key:0,apikey:t.apikey,orderId:t.orderId,amount:t.amount,plain:t.plain,intervalDays:t.intervalDays,locale:t.locale,"onUpdate:paymentStep":l,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)])])):(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
@@ -16,33 +16,21 @@ onFailed?: ((order: OnetimePaymentOrderStatus | SubscriptionPaymentOrderStatus)
16
16
  onError?: ((error: Error) => any) | undefined;
17
17
  onSuccess?: ((order: OnetimePaymentOrderStatus | SubscriptionPaymentOrderStatus) => any) | undefined;
18
18
  "onUpdate:modelValue"?: ((value: boolean) => any) | undefined;
19
- }>, {
20
- intervalDays: number;
21
- plain: PaymentPlain;
22
- locale: Locale;
23
- }, {}, {}, {}, string, ComponentProvideOptions, false, {}, any>;
19
+ }>, {}, {}, {}, {}, string, ComponentProvideOptions, false, {}, any>;
24
20
 
25
21
  declare const __VLS_component_2: DefineComponent<Props_2, {}, {}, {}, {}, ComponentOptionsMixin, ComponentOptionsMixin, {} & {
26
22
  expired: (order: OnetimePaymentOrderStatus | SubscriptionPaymentOrderStatus) => any;
27
23
  failed: (order: OnetimePaymentOrderStatus | SubscriptionPaymentOrderStatus) => any;
28
24
  error: (error: Error) => any;
29
- "update:paymentStep": (value: "expired" | "failed" | "error" | "select" | "payment" | "success") => any;
30
25
  success: (order: OnetimePaymentOrderStatus | SubscriptionPaymentOrderStatus) => any;
31
- "update:loading": (value: boolean) => any;
32
- "update:isCheckingPayment": (value: boolean) => any;
33
- "update:error": (value: string | undefined) => any;
26
+ "update:paymentStep": (value: PaymentStep) => any;
34
27
  }, string, PublicProps, Readonly<Props_2> & Readonly<{
35
28
  onExpired?: ((order: OnetimePaymentOrderStatus | SubscriptionPaymentOrderStatus) => any) | undefined;
36
29
  onFailed?: ((order: OnetimePaymentOrderStatus | SubscriptionPaymentOrderStatus) => any) | undefined;
37
30
  onError?: ((error: Error) => any) | undefined;
38
- "onUpdate:paymentStep"?: ((value: "expired" | "failed" | "error" | "select" | "payment" | "success") => any) | undefined;
39
31
  onSuccess?: ((order: OnetimePaymentOrderStatus | SubscriptionPaymentOrderStatus) => any) | undefined;
40
- "onUpdate:loading"?: ((value: boolean) => any) | undefined;
41
- "onUpdate:isCheckingPayment"?: ((value: boolean) => any) | undefined;
42
- "onUpdate:error"?: ((value: string | undefined) => any) | undefined;
43
- }>, {
44
- plain: PaymentPlain;
45
- }, {}, {}, {}, string, ComponentProvideOptions, false, {}, HTMLDivElement>;
32
+ "onUpdate:paymentStep"?: ((value: PaymentStep) => any) | undefined;
33
+ }>, {}, {}, {}, {}, string, ComponentProvideOptions, false, {}, HTMLDivElement>;
46
34
 
47
35
  declare function __VLS_template(): {
48
36
  attrs: Partial<{}>;
@@ -126,16 +114,18 @@ declare interface PaymentOptions_2 {
126
114
  onFailed?: (order: SubscriptionPaymentOrderStatus | OnetimePaymentOrderStatus) => void;
127
115
  }
128
116
 
129
- declare type PaymentPlain = "one-time" | "subscription" | "x402";
117
+ declare type PaymentPlain = "instant" | "subscription" | "x402";
130
118
 
131
119
  declare type PaymentStatus = "pending" | "paid" | "expired" | "failed";
132
120
 
121
+ declare type PaymentStep = "select" | "payment" | "checking" | "success" | "failed" | "expired" | "error";
122
+
133
123
  declare interface Props {
134
124
  modelValue: boolean;
135
125
  apikey: string;
136
126
  orderId: string;
137
127
  amount: string;
138
- plain?: PaymentPlain;
128
+ plain: PaymentPlain;
139
129
  intervalDays?: number;
140
130
  locale?: Locale;
141
131
  }
@@ -148,7 +138,7 @@ declare interface Props_2 {
148
138
  /** 支付金额(USD) */
149
139
  amount: string;
150
140
  /** 支付类型 */
151
- plain?: PaymentPlain;
141
+ plain: PaymentPlain;
152
142
  /** 订阅间隔天数 */
153
143
  intervalDays?: number;
154
144
  /** 插槽 */