cppay-sdk 0.0.5 → 0.0.6

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/react.cjs CHANGED
@@ -1 +1 @@
1
- const e=require(`./locales-D_8rN4cA.cjs`),t=require(`./cppay-DwIEebOq.cjs`);let n=require(`qrcode`);n=e.i(n);let r=require(`rxjs`),i=require(`rxjs/operators`),a=require(`viem`),o=require(`viem/chains`),s=require(`@reown/appkit`),c=require(`@reown/appkit-adapter-ethers`),l=require(`react`);l=e.i(l);let u=require(`react/jsx-runtime`);var d=({apikey:d,ott:f,plain:p,orderId:m,amount:h,intervalDays:g,remark:ee,locale:_,onSuccess:v,onExpired:te,onFailed:y,onError:b,Slots:x,onPaymentStepChange:ne})=>{let S=(0,l.useMemo)(()=>new t.t(d,f),[d,f]),C=(0,l.useMemo)(()=>e.t(_),[_]),[w,T]=(0,l.useState)(`select`),E=(0,l.useMemo)(()=>w===`checking`,[w]),[D,O]=(0,l.useState)(!1),[k,A]=(0,l.useState)(),[j,re]=(0,l.useState)([]),[M,N]=(0,l.useState)(),[P,F]=(0,l.useState)(),[ie,I]=(0,l.useState)(),[L,ae]=(0,l.useState)(),[oe,se]=(0,l.useState)(!1),[R,ce]=(0,l.useState)(),[le,ue]=(0,l.useState)(``),[de,z]=(0,l.useState)(!1),[fe,B]=(0,l.useState)(!1),[V,pe]=(0,l.useState)(``),H=(0,l.useRef)(null),U=(0,l.useRef)(null),W=(0,l.useRef)(null),G=(0,l.useRef)(null),me=(0,l.useRef)(``);(0,l.useEffect)(()=>{typeof window<`u`&&!H.current&&(H.current=(0,s.createAppKit)({debug:!1,enableNetworkSwitch:!1,adapters:[new c.EthersAdapter],projectId:`8d2e1854d3f1782e45aa15fbd8938894`,allowUnsupportedChain:!0,networks:[o.mainnet,o.bsc,o.polygon,o.arbitrum,o.optimism,o.base],metadata:{name:`Cppay`,description:`Cppay Payment Gateway`,url:window.location.origin,icons:[`https://cppay.com/icon.png`]},features:{analytics:!1}}),ae(H.current.getAddress()),ce(H.current.getProvider(`eip155`)),H.current.subscribeAccount(e=>{e.isConnected?ae(e.address):(ae(void 0),ce(void 0))}),H.current.subscribeProviders(e=>{let t=e?.eip155;ce(t)}))},[]),(0,l.useEffect)(()=>{ne?.(w)},[w]);let he=async()=>{try{se(!0),A(void 0),H.current&&await H.current.open()}catch(e){console.error(`钱包连接失败:`,e),A(e instanceof Error?e.message:C.walletConnectionFailed),b?.(e)}finally{se(!1)}},K=(0,l.useMemo)(()=>j.find(e=>e.chain===M),[j,M]),q=(0,l.useMemo)(()=>K?.tokens||[],[K]),J=(0,l.useMemo)(()=>q.find(e=>e.symbol===P),[q,P]),Y=e=>[`USDT`,`USDC`,`BUSD`,`DAI`,`TUSD`,`USDD`,`FDUSD`].includes(e.toUpperCase())?2:6,X=(e,t)=>{let n=parseFloat(e);return isNaN(n)?`0`:n.toFixed(t).replace(/\.?0+$/,``)},ge=e=>{if(e<=0)return C.expired;let t=Math.floor(e/3600),n=Math.floor(e%3600/60),r=e%60,i=e=>e.toString().padStart(2,`0`);return t>0?`${t}:${i(n)}:${i(r)}`:`${n}:${i(r)}`},Z=e=>{W.current&&clearInterval(W.current);let t=()=>{if(w===`checking`){_e();return}let t=e-Math.floor(Date.now()/1e3);ue(ge(t)),t<=0&&_e()};t(),W.current=setInterval(t,1e3)},_e=()=>{W.current&&=(clearInterval(W.current),null)},ve=(0,l.useMemo)(()=>{if(!P||!J)return`0`;let e=parseFloat(J.price);if(isNaN(e)||e===0)return`0`;let t=Y(P);return X((parseFloat(h)/e).toFixed(t),t)},[h,P,J]),ye=async()=>{try{O(!0),A(void 0);let e=await S.getSupportedChains();re(e),e.length>0&&N(e[0].chain)}catch(e){A(e instanceof Error?e.message:C.loadPaymentNetworkFailed),b?.(e)}finally{O(!1)}},be=async e=>{if(R)try{await R.request({method:`wallet_switchEthereumChain`,params:[{chainId:`0x${e.toString(16)}`}]})}catch(e){throw e.code===4902?Error(C.pleaseAddNetwork):e}},xe=async()=>{if(!(!L||!R||!G.current||!J||!K))try{O(!0);let e=G.current;await be(K.chainId);let t=(0,a.createWalletClient)({account:L,transport:(0,a.custom)(R)});if(J.address){let n=await t.writeContract({address:J.address,abi:a.erc20Abi,functionName:`transfer`,args:[e.receiveAddress,(0,a.parseUnits)(e.paymentAmount,J.decimals)],chain:null});console.log(`转账交易哈希:`,n),pe(n),me.current=n}else{let n=await t.sendTransaction({to:e.receiveAddress,value:(0,a.parseUnits)(e.paymentAmount,J.decimals),chain:null});console.log(`转账交易哈希:`,n),pe(n),me.current=n}O(!1),T(`checking`),Q({paymentId:e.paymentId})}catch(e){console.error(`钱包支付失败:`,e),A(e instanceof Error?e.message:C.walletPaymentFailed),b?.(e),O(!1)}},Se=async()=>{if(!(!L||!R||!G.current||!J||!K))try{O(!0);let e=G.current;await be(K.chainId);let t=(0,a.createWalletClient)({account:L,transport:(0,a.custom)(R)});if(!J.address)throw Error(C.subscriptionDoesNotSupportNative);let n=await t.writeContract({address:J.address,abi:a.erc20Abi,functionName:`approve`,args:[e.spenderAddress,(0,a.parseUnits)(e.approveAmount,J.decimals)],chain:null});console.log(`授权交易哈希:`,n),pe(n),me.current=n,O(!1),T(`checking`),Q({subscriptionId:e.subscriptionId})}catch(e){console.error(`钱包授权失败:`,e),A(e instanceof Error?e.message:C.walletPaymentFailed),b?.(e),O(!1)}},Ce=async()=>{if(!L){let e=C.pleaseConnectWallet;A(e),b?.(Error(e));return}p===`instant`?await xe():p===`subscription`&&await Se()},we=e=>{switch(e.toLowerCase()){case`ethereum`:case`bsc`:case`bsc-testnet`:return`ethereum`}return`ethereum`},Te=async()=>{if(!(!K||!J))try{if(O(!0),A(void 0),p===`instant`){G.current=await S.createOnetimePayment({paymentChain:K.chain,paymentToken:J.symbol,orderId:m,amount:ve,remark:ee}),Z(G.current.expireAt),ke(G.current.paymentId,`instant`);let e=!J.address,t=we(K.chain.toLowerCase()),r=G.current.receiveAddress,i=(0,a.parseUnits)(G.current.paymentAmount,J.decimals),o=e?`${t}:${r}@${K.chainId}?value=${i}`:`${t}:${J.address}@${K.chainId}/transfer?address=${r}&uint256=${i}`;I(await n.toDataURL(o,{width:200,margin:2,errorCorrectionLevel:`H`}))}else if(p===`subscription`){if(!g)throw Error(`Invalid Renewal Days: ${g??``}`);G.current=await S.createSubscriptionPayment({paymentChain:K.chain,paymentToken:J.symbol,orderId:m,amountOfUsd:ve,intervalDays:g}),Z(G.current.expireAt),ke(G.current.subscriptionId,`subscription`),I(void 0)}T(`payment`)}catch(e){A(e instanceof Error?e.message:C.createPaymentFailed),b?.(e)}finally{O(!1)}},Ee=()=>{G.current&&(T(`checking`),A(void 0),p===`instant`?Q({paymentId:G.current.paymentId}):p===`subscription`&&Q({subscriptionId:G.current.subscriptionId}))},Q=e=>{U.current?.unsubscribe();let t=()=>(0,r.defer)(()=>p===`subscription`?S.checkSubscriptionPaymentStatus(e):S.checkOnetimePaymentStatus(e)).pipe((0,i.timeout)(15e3),(0,i.retry)({delay:2e3}));U.current=t().pipe((0,i.expand)(e=>e.status===`pending`?(0,r.timer)(2e3).pipe((0,i.switchMap)(()=>t())):r.EMPTY),(0,i.tap)(e=>{if(!G.current&&p===`instant`){let t=e;G.current={paymentId:t.paymentId,orderId:t.orderId,paymentChain:t.chain,paymentToken:t.token,paymentAmount:t.payAmount,receiveAddress:t.receiveAddress,expireAt:t.expireAt},N(t.chain),F(t.token),Z(t.expireAt);let r=!t.tokenAddress,i=we(t.chain.toLowerCase()),o=t.receiveAddress,s=(0,a.parseUnits)(t.payAmount,t.tokenDecimals),c=r?`${i}:${o}@${t.chainId}?value=${s}`:`${i}:${t.tokenAddress}@${t.chainId}/transfer?address=${o}&uint256=${s}`;n.toDataURL(c,{width:200,margin:2,errorCorrectionLevel:`H`}).then(e=>{I(e),T(`payment`)}).catch(e=>{console.error(`生成二维码失败:`,e),T(`payment`)})}if(!G.current&&p===`subscription`){let t=e;G.current={subscriptionId:t.subscriptionId,orderId:t.orderId,paymentChain:t.chain,paymentToken:t.token,approveAmount:t.approveAmount,spenderAddress:t.approvedAddress,expireAt:t.expireAt,intervalDays:0,amountOfUsd:t.amountOfUsd},N(t.chain),F(t.token),Z(t.expireAt),I(void 0)}(e.status===`paid`||e.status===`approved`)&&(T(`success`),$(),v?.(e)),e.status===`expired`&&(T(`expired`),$(),te?.(e)),e.status===`failed`&&(T(`failed`),$(),y?.(e))})).subscribe({error:e=>{if(G.current){let t=e instanceof Error?e.message:C.checkPaymentStatusFailed;T(`error`),A(t),b?.(e)}},complete:()=>{U.current?.unsubscribe()}})},De=async()=>{if(!G.current)return;let e=p===`subscription`?G.current.spenderAddress:G.current.receiveAddress;if(e)try{await navigator.clipboard.writeText(e),z(!0),setTimeout(()=>{z(!1)},2e3)}catch(e){console.error(`复制失败:`,e)}},Oe=async()=>{if(V)try{await navigator.clipboard.writeText(V),z(!0),setTimeout(()=>{z(!1)},2e3)}catch(e){console.error(`复制失败:`,e)}},ke=(e,t)=>{if(!f||typeof window>`u`)return;let n=new URL(window.location.href),r=t===`subscription`?`subscriptionId`:`paymentId`;n.searchParams.set(r,e),window.history.replaceState({},``,n.toString())},$=()=>{if(typeof window>`u`)return;let e=new URL(window.location.href);e.searchParams.delete(`paymentId`),e.searchParams.delete(`subscriptionId`),window.history.replaceState({},``,e.toString())};return(0,l.useEffect)(()=>{j.length===0&&ye()},[]),(0,l.useEffect)(()=>{q.length>0&&F(q[0].symbol)},[q]),(0,l.useEffect)(()=>{if(typeof window>`u`)return;let e=new URL(window.location.href);if(p===`instant`){let t=e.searchParams.get(`paymentId`);t&&(T(`payment`),Q({paymentId:t}))}if(p===`subscription`){let t=e.searchParams.get(`subscriptionId`);t&&(T(`payment`),Q({subscriptionId:t}))}},[]),(0,l.useEffect)(()=>()=>{U.current?.unsubscribe(),_e()},[]),(0,u.jsx)(`div`,{className:`_cppay-content`,children:w===`success`?x?.Success?(0,u.jsx)(x.Success,{paymentInfo:G.current}):(0,u.jsxs)(`div`,{className:`_cppay-state-container`,children:[(0,u.jsx)(`div`,{className:`_cppay-state-success-bg`,children:(0,u.jsx)(`div`,{className:`_cppay-state-success-icon`,children:`✓`})}),(0,u.jsx)(`h3`,{className:`_cppay-state-title _cppay-state-title-success`,children:p===`subscription`?C.authorizationSuccess:C.paymentSuccess}),V&&(0,u.jsxs)(`div`,{className:`_cppay-state-hash-container`,children:[(0,u.jsx)(`div`,{className:`_cppay-state-label`,children:C.transactionHash}),(0,u.jsxs)(`div`,{className:`_cppay-hash-row`,children:[(0,u.jsx)(`code`,{className:`_cppay-state-hash`,children:V}),(0,u.jsx)(`button`,{onClick:Oe,className:`_cppay-state-copy-btn`,title:C.copyAddress,children:(0,u.jsxs)(`svg`,{viewBox:`0 0 24 24`,fill:`none`,stroke:`currentColor`,strokeWidth:`2`,children:[(0,u.jsx)(`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`}),(0,u.jsx)(`rect`,{x:`8`,y:`2`,width:`8`,height:`4`,rx:`1`,ry:`1`})]})})]})]}),G.current&&(0,u.jsxs)(`div`,{className:`_cppay-success-details`,children:[(0,u.jsxs)(`div`,{className:`_cppay-detail-item`,children:[(0,u.jsx)(`span`,{className:`_cppay-detail-label`,children:C.orderId}),(0,u.jsx)(`span`,{className:`_cppay-detail-value`,children:G.current.orderId})]}),(0,u.jsxs)(`div`,{className:`_cppay-detail-item`,children:[(0,u.jsx)(`span`,{className:`_cppay-detail-label`,children:p===`subscription`?C.authorizationAmount:C.paymentAmount}),(0,u.jsx)(`span`,{className:`_cppay-detail-value`,children:p===`subscription`?`${X(G.current.approveAmount,Y(P))} ${P}`:`${X(G.current.paymentAmount,Y(P))} ${P}`})]}),(0,u.jsxs)(`div`,{className:`_cppay-detail-item`,children:[(0,u.jsx)(`span`,{className:`_cppay-detail-label`,children:C.paymentNetwork}),(0,u.jsx)(`span`,{className:`_cppay-detail-value`,children:G.current.paymentChain})]}),(0,u.jsxs)(`div`,{className:`_cppay-detail-item`,children:[(0,u.jsx)(`span`,{className:`_cppay-detail-label`,children:C.paymentToken}),(0,u.jsx)(`span`,{className:`_cppay-detail-value`,children:G.current.paymentToken})]}),p===`subscription`&&(0,u.jsxs)(`div`,{className:`_cppay-detail-item`,children:[(0,u.jsx)(`span`,{className:`_cppay-detail-label`,children:C.renewalInterval}),(0,u.jsxs)(`span`,{className:`_cppay-detail-value`,children:[G.current.intervalDays,` `,C.days]})]}),(0,u.jsxs)(`div`,{className:`_cppay-detail-item`,children:[(0,u.jsx)(`span`,{className:`_cppay-detail-label`,children:p===`subscription`?C.subscriptionId:C.paymentId}),(0,u.jsx)(`span`,{className:`_cppay-detail-value _cppay-detail-id`,children:p===`subscription`?G.current.subscriptionId:G.current.paymentId})]})]})]}):w===`expired`?x?.Expired?(0,u.jsx)(x.Expired,{paymentInfo:G.current}):(0,u.jsxs)(`div`,{className:`_cppay-state-container`,children:[(0,u.jsx)(`div`,{className:`_cppay-state-expired-bg`,children:(0,u.jsx)(`div`,{className:`_cppay-state-expired-icon`,children:`⏰`})}),(0,u.jsx)(`h3`,{className:`_cppay-state-title _cppay-state-title-expired`,children:C.paymentExpired}),(0,u.jsx)(`p`,{className:`_cppay-state-message`,children:C.pleaseInitiatePaymentAgain}),(0,u.jsx)(`button`,{onClick:()=>{T(`select`),$()},disabled:D||E,className:`_cppay-btn _cppay-btn-primary _cppay-state-btn`,children:C.returnButton})]}):w===`error`?x?.Error?(0,u.jsx)(x.Error,{paymentInfo:G.current}):(0,u.jsxs)(`div`,{className:`_cppay-state-container`,children:[(0,u.jsx)(`div`,{className:`_cppay-state-error-bg`,children:(0,u.jsx)(`div`,{className:`_cppay-state-error-icon`,children:`!`})}),(0,u.jsx)(`h3`,{className:`_cppay-state-title _cppay-state-title-error`,children:k||C.error}),(0,u.jsx)(`p`,{className:`_cppay-state-message`,children:C.checkStatusFailed}),(0,u.jsx)(`button`,{onClick:()=>{T(`select`),$()},disabled:D||E,className:`_cppay-btn _cppay-btn-primary _cppay-state-btn`,children:C.returnButton})]}):w===`failed`?x?.Failed?(0,u.jsx)(x.Failed,{paymentInfo:G.current}):(0,u.jsxs)(`div`,{className:`_cppay-state-container`,children:[(0,u.jsx)(`div`,{className:`_cppay-state-failed-bg`,children:(0,u.jsx)(`div`,{className:`_cppay-state-failed-icon`,children:`✕`})}),(0,u.jsx)(`h3`,{className:`_cppay-state-title _cppay-state-title-failed`,children:C.paymentFailed}),(0,u.jsx)(`p`,{className:`_cppay-state-message`,children:C.pleaseInitiatePaymentAgain}),(0,u.jsx)(`button`,{onClick:()=>{T(`select`),$()},disabled:D||E,className:`_cppay-btn _cppay-btn-primary _cppay-state-btn`,children:C.returnButton})]}):w===`select`?(0,u.jsxs)(`div`,{children:[x?.ChooseTop,(0,u.jsxs)(`div`,{className:`_cppay-section`,children:[(0,u.jsx)(`label`,{className:`_cppay-label`,children:C.paymentNetwork}),(0,u.jsx)(`div`,{className:`_cppay-grid`,children:j.map(e=>(0,u.jsxs)(`button`,{onClick:()=>N(e.chain),className:`_cppay-select-btn ${M===e.chain?`_cppay-selected`:``}`,children:[e.icon&&(0,u.jsx)(`img`,{src:e.icon,alt:e.chain}),(0,u.jsx)(`span`,{children:e.chain})]},e.chain))})]}),(0,u.jsxs)(`div`,{className:`_cppay-section`,children:[(0,u.jsx)(`label`,{className:`_cppay-label`,children:C.paymentToken}),(0,u.jsx)(`div`,{className:`_cppay-grid`,children:q.map(e=>(0,u.jsxs)(`button`,{onClick:()=>F(e.symbol),className:`_cppay-select-btn ${P===e.symbol?`_cppay-selected`:``}`,children:[e.icon&&(0,u.jsx)(`img`,{src:e.icon,alt:e.symbol}),(0,u.jsx)(`span`,{children:e.symbol})]},e.symbol))})]}),x?.ChooseBottom,(0,u.jsx)(`div`,{className:`_cppay-section`,children:(0,u.jsx)(`div`,{className:`_cppay-price-box`,children:(0,u.jsxs)(`div`,{className:`_cppay-price-row`,children:[(0,u.jsx)(`span`,{className:`_cppay-price-label`,children:C.paymentAmount}),(0,u.jsxs)(`div`,{className:`_cppay-price-amount`,children:[(0,u.jsxs)(`div`,{className:`_cppay-price-main`,children:[ve??`-`,` `,P??``]}),(0,u.jsxs)(`div`,{className:`_cppay-price-sub`,children:[`≈ $`,h]})]})]})})}),(0,u.jsxs)(`div`,{className:`_cppay-section`,children:[k&&(0,u.jsxs)(`div`,{className:`_cppay-error-tooltip-wrapper`,onMouseEnter:()=>B(!0),onMouseLeave:()=>B(!1),children:[(0,u.jsxs)(`div`,{className:`_cppay-error-tooltip`,children:[(0,u.jsx)(`svg`,{viewBox:`0 0 20 20`,fill:`currentColor`,children:(0,u.jsx)(`path`,{fillRule:`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`,clipRule:`evenodd`})}),(0,u.jsx)(`span`,{children:k})]}),fe&&(0,u.jsx)(`div`,{className:`_cppay-error-tooltip-full`,children:k})]}),(0,u.jsx)(`button`,{onClick:Te,disabled:!M||!P||D,className:`_cppay-btn _cppay-btn-primary`,children:D?C.processing:C.continuePayment})]})]}):(0,u.jsxs)(`div`,{children:[ie&&(0,u.jsx)(`div`,{className:`_cppay-qr-container`,children:(0,u.jsx)(`div`,{className:`_cppay-qr-code`,children:(0,u.jsx)(`img`,{src:ie,alt:`Payment QR Code`,className:`_cppay-qr-image`})})}),(0,u.jsxs)(`div`,{className:`_cppay-section`,children:[J&&(0,u.jsx)(`div`,{className:`_cppay-info-box`,children:(0,u.jsx)(`div`,{className:`_cppay-info-flex-container`,children:(0,u.jsxs)(`div`,{className:`_cppay-info-flex-child`,children:[(0,u.jsx)(`div`,{className:`_cppay-info-label`,children:p===`subscription`?C.authorizationAmount:C.paymentAmount}),(0,u.jsxs)(`div`,{className:`_cppay-info-value _cppay-info-value-flex`,children:[G.current&&(0,u.jsx)(`span`,{children:p===`subscription`?`${X(G.current.approveAmount,Y(J.symbol))} ${J.symbol}`:`${X(G.current.paymentAmount,Y(J.symbol))} ${J.symbol}`}),(0,u.jsxs)(`span`,{children:[`≈ $`,h]})]})]})})}),(0,u.jsx)(`div`,{className:`_cppay-info-box`,children:(0,u.jsxs)(`div`,{className:`_cppay-info-flex-child`,children:[(0,u.jsxs)(`div`,{className:`_cppay-info-label _cppay-info-label-flex`,children:[(0,u.jsx)(`span`,{children:p===`subscription`?C.authorizationContractAddress:C.paymentAddress}),le&&(0,u.jsxs)(`span`,{className:`_cppay-countdown`,children:[`⏰ `,le]})]}),(0,u.jsxs)(`div`,{className:`_cppay-address-row`,children:[G.current&&(0,u.jsx)(`code`,{children:p===`subscription`?G.current.spenderAddress:G.current.receiveAddress}),(0,u.jsx)(`button`,{onClick:De,className:`_cppay-copy-btn ${de?`_cppay-copy-success`:``}`,title:de?C.copied:C.copyAddress,children:de?(0,u.jsx)(`svg`,{className:`_cppay-copy-icon`,viewBox:`0 0 24 24`,fill:`currentColor`,children:(0,u.jsx)(`path`,{d:`M9 16.17L4.83 12l-1.42 1.41L9 19 21 7l-1.41-1.41z`})}):(0,u.jsxs)(`svg`,{className:`_cppay-copy-icon`,viewBox:`0 0 24 24`,fill:`none`,stroke:`currentColor`,strokeWidth:`2`,children:[(0,u.jsx)(`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`}),(0,u.jsx)(`rect`,{x:`8`,y:`2`,width:`8`,height:`4`,rx:`1`,ry:`1`})]})})]})]})}),p===`subscription`&&(0,u.jsxs)(`div`,{className:`_cppay-info-box _cppay-subscription-box`,children:[(0,u.jsx)(`div`,{className:`_cppay-info-label _cppay-subscription-label`,children:C.subscriptionNotice}),(0,u.jsx)(`div`,{className:`_cppay-info-value _cppay-subscription-message`,children:C.subscriptionNoticeMessage})]})]}),k&&(0,u.jsxs)(`div`,{className:`_cppay-error-tooltip-wrapper`,onMouseEnter:()=>B(!0),onMouseLeave:()=>B(!1),children:[(0,u.jsxs)(`div`,{className:`_cppay-error-tooltip`,children:[(0,u.jsx)(`svg`,{viewBox:`0 0 20 20`,fill:`currentColor`,children:(0,u.jsx)(`path`,{fillRule:`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`,clipRule:`evenodd`})}),(0,u.jsx)(`span`,{children:k})]}),fe&&(0,u.jsx)(`div`,{className:`_cppay-error-tooltip-full`,children:k})]}),!E&&(0,u.jsx)(`div`,{className:`_cppay-section`,children:L?(0,u.jsxs)(u.Fragment,{children:[(0,u.jsx)(`button`,{onClick:Ce,disabled:D,className:`_cppay-btn _cppay-btn-primary`,children:D?p===`subscription`?C.authorizing:C.processing:p===`subscription`?`💳 ${C.walletAuthorize}`:`💳 ${C.walletPay}`}),(0,u.jsxs)(`button`,{onClick:he,disabled:D,className:`_cppay-btn _cppay-wallet-address-btn`,title:C.clickToModifyWallet,children:[(0,u.jsxs)(`span`,{className:`_cppay-wallet-address-text`,children:[L.slice(0,10),`...`,L.slice(-4)]}),(0,u.jsx)(`svg`,{className:`_cppay-wallet-arrow`,viewBox:`0 0 24 24`,fill:`none`,stroke:`currentColor`,strokeWidth:`2`,children:(0,u.jsx)(`polyline`,{points:`6 9 12 15 18 9`})})]})]}):(0,u.jsx)(`button`,{onClick:he,disabled:oe,className:`_cppay-btn _cppay-btn-secondary _cppay-connect-wallet-btn`,children:(0,u.jsx)(`span`,{children:oe?C.processing:`💳 ${C.connectWallet}`})})}),(0,u.jsx)(`div`,{className:`_cppay-section`,children:(0,u.jsx)(`button`,{onClick:Ee,disabled:E,className:`_cppay-btn _cppay-btn-primary`,children:E?(0,u.jsxs)(u.Fragment,{children:[(0,u.jsxs)(`svg`,{className:`_cppay-spinner`,viewBox:`0 0 24 24`,fill:`none`,xmlns:`http://www.w3.org/2000/svg`,children:[(0,u.jsx)(`circle`,{cx:`12`,cy:`12`,r:`10`,stroke:`currentColor`,strokeWidth:`3`,strokeOpacity:`0.25`}),(0,u.jsx)(`path`,{d:`M12 2a10 10 0 0 1 10 10`,stroke:`currentColor`,strokeWidth:`3`,strokeLinecap:`round`})]}),C.checking]}):C.completedPayment})}),(0,u.jsx)(`hr`,{className:`_cppay-divider`}),(0,u.jsx)(`div`,{className:`_cppay-section`,children:(0,u.jsx)(`button`,{onClick:()=>{T(`select`),$()},disabled:D||E,className:`_cppay-btn _cppay-btn-text`,children:C.changePaymentMethod})})]})})},f=d,p=({open:t,onClose:n,ott:r,apikey:i,plain:a,orderId:o,amount:s,intervalDays:c,remark:d,locale:p,onExpired:m,onSuccess:h,onFailed:g,onError:ee,Slots:_})=>{let[v,te]=(0,l.useState)(`select`),y=(0,l.useMemo)(()=>v!==`checking`,[v]);(0,l.useEffect)(()=>{t||te(`select`)},[t]),(0,l.useEffect)(()=>{if(!t)return;let e=e=>{e.key===`Escape`&&y&&b()};return window.addEventListener(`keydown`,e),()=>window.removeEventListener(`keydown`,e)},[t,y]);let b=()=>{y&&n()},x=(0,l.useMemo)(()=>e.t(p),[p]);return t?(0,u.jsx)(`div`,{className:`_cppay-overlay`,onClick:e=>e.target===e.currentTarget&&b(),children:(0,u.jsxs)(`div`,{className:`_cppay-dialog`,children:[(0,u.jsxs)(`div`,{className:`_cppay-header`,children:[(0,u.jsx)(`h2`,{className:`_cppay-title`,children:(()=>{switch(v){case`success`:return x.paymentResult;case`expired`:return x.paymentExpired;case`failed`:return x.paymentFailed;case`error`:return x.error;case`payment`:case`checking`:return x.completePayment;default:return x.selectPaymentMethod}})()}),(0,u.jsx)(`button`,{onClick:b,disabled:!y,className:`_cppay-close-btn`,children:(0,u.jsx)(`svg`,{fill:`none`,stroke:`currentColor`,viewBox:`0 0 24 24`,children:(0,u.jsx)(`path`,{strokeLinecap:`round`,strokeLinejoin:`round`,strokeWidth:2,d:`M6 18L18 6M6 6l12 12`})})})]}),(0,u.jsx)(f,{apikey:i,ott:r,plain:a,orderId:o,amount:s,intervalDays:c,remark:d,locale:p,onSuccess:h,onExpired:m,onFailed:g,onError:ee,Slots:_,onPaymentStepChange:te})]})}):null},m=p,h=(0,l.createContext)(null);const g=({children:e})=>{let[t,n]=(0,l.useState)(!1),[r,i]=(0,l.useState)(null),a=(0,l.useCallback)(e=>{i(e),n(!0)},[]),o=(0,l.useCallback)(()=>{n(!1)},[]),s=(0,l.useCallback)(()=>{n(!1)},[]),c=(0,l.useCallback)(e=>{r?.onSuccess?.(e)},[r]),d=(0,l.useCallback)(e=>{r?.onExpired?.(e)},[r]),f=(0,l.useCallback)(e=>{r?.onFailed?.(e)},[r]),p=(0,l.useCallback)(e=>{r?.onError?.(e)},[r]);return(0,u.jsxs)(h.Provider,{value:{showPayment:a,closePayment:o},children:[e,r&&(0,u.jsx)(m,{open:t,onClose:s,...r,onSuccess:c,onExpired:d,onFailed:f,onError:p})]})},ee=()=>{let e=(0,l.useContext)(h);if(!e)throw Error(`useCppayPayment must be used within CppayProvider`);return e};e.n(e.r),exports.CppayProvider=g,exports.PaymentContent=f,exports.PaymentDialog=m,exports.useCppayPayment=ee;
1
+ const e=require(`./locales-D_8rN4cA.cjs`),t=require(`./cppay-DwIEebOq.cjs`);let n=require(`qrcode`);n=e.i(n);let r=require(`rxjs`),i=require(`rxjs/operators`),a=require(`viem`),o=require(`viem/chains`),s=require(`@reown/appkit`),c=require(`@reown/appkit-adapter-ethers`),l=require(`react`);l=e.i(l);let u=require(`react/jsx-runtime`);var d=({apikey:d,ott:f,plain:p,orderId:m,amount:h,intervalDays:g,remark:ee,locale:_,onSuccess:v,onExpired:te,onFailed:y,onError:b,Slots:x,onPaymentStepChange:ne})=>{let S=(0,l.useMemo)(()=>new t.t(d,f),[d,f]),C=(0,l.useMemo)(()=>e.t(_),[_]),[w,T]=(0,l.useState)(`select`),E=(0,l.useMemo)(()=>w===`checking`,[w]),[D,O]=(0,l.useState)(!1),[k,A]=(0,l.useState)(),[j,re]=(0,l.useState)([]),[M,N]=(0,l.useState)(),[P,F]=(0,l.useState)(),[ie,I]=(0,l.useState)(),[L,ae]=(0,l.useState)(),[oe,se]=(0,l.useState)(!1),[R,ce]=(0,l.useState)(),[le,ue]=(0,l.useState)(``),[de,z]=(0,l.useState)(!1),[fe,B]=(0,l.useState)(!1),[V,pe]=(0,l.useState)(``),H=(0,l.useRef)(null),U=(0,l.useRef)(null),W=(0,l.useRef)(null),G=(0,l.useRef)(null),me=(0,l.useRef)(``);(0,l.useEffect)(()=>{typeof window<`u`&&!H.current&&(H.current=(0,s.createAppKit)({debug:!1,enableNetworkSwitch:!1,adapters:[new c.EthersAdapter],projectId:`8d2e1854d3f1782e45aa15fbd8938894`,allowUnsupportedChain:!0,networks:[o.mainnet,o.bsc,o.polygon,o.arbitrum,o.optimism,o.base],metadata:{name:`Cppay`,description:`Cppay Payment Gateway`,url:window.location.origin,icons:[`https://cppay.com/icon.png`]},features:{analytics:!1}}),ae(H.current.getAddress()),ce(H.current.getProvider(`eip155`)),H.current.subscribeAccount(e=>{e.isConnected?ae(e.address):(ae(void 0),ce(void 0))}),H.current.subscribeProviders(e=>{let t=e?.eip155;ce(t)}))},[]),(0,l.useEffect)(()=>{ne?.(w)},[w]);let he=async()=>{try{se(!0),A(void 0),H.current&&await H.current.open()}catch(e){console.error(`钱包连接失败:`,e),A(e instanceof Error?e.message:C.walletConnectionFailed),b?.(e)}finally{se(!1)}},K=(0,l.useMemo)(()=>j.find(e=>e.chain===M),[j,M]),q=(0,l.useMemo)(()=>K?.tokens||[],[K]),J=(0,l.useMemo)(()=>q.find(e=>e.symbol===P),[q,P]),Y=e=>[`USDT`,`USDC`,`BUSD`,`DAI`,`TUSD`,`USDD`,`FDUSD`].includes(e.toUpperCase())?2:6,X=(e,t)=>{let n=parseFloat(e);return isNaN(n)?`0`:n.toFixed(t).replace(/\.?0+$/,``)},ge=e=>{if(e<=0)return C.expired;let t=Math.floor(e/3600),n=Math.floor(e%3600/60),r=e%60,i=e=>e.toString().padStart(2,`0`);return t>0?`${t}:${i(n)}:${i(r)}`:`${n}:${i(r)}`},Z=e=>{W.current&&clearInterval(W.current);let t=()=>{if(w===`checking`){_e();return}let t=e-Math.floor(Date.now()/1e3);ue(ge(t)),t<=0&&_e()};t(),W.current=setInterval(t,1e3)},_e=()=>{W.current&&=(clearInterval(W.current),null)},ve=(0,l.useMemo)(()=>{if(!P||!J)return`0`;let e=parseFloat(J.price);if(isNaN(e)||e===0)return`0`;let t=Y(P);return X((parseFloat(h)/e).toFixed(t),t)},[h,P,J]),ye=async()=>{try{O(!0),A(void 0);let e=await S.getSupportedChains();re(e),e.length>0&&N(e[0].chain)}catch(e){A(e instanceof Error?e.message:C.loadPaymentNetworkFailed),b?.(e)}finally{O(!1)}},be=async e=>{if(R)try{await R.request({method:`wallet_switchEthereumChain`,params:[{chainId:`0x${e.toString(16)}`}]})}catch(e){throw e.code===4902?Error(C.pleaseAddNetwork):e}},xe=async()=>{if(!(!L||!R||!G.current||!J||!K))try{O(!0);let e=G.current;await be(K.chainId);let t=(0,a.createWalletClient)({account:L,transport:(0,a.custom)(R)});if(J.address){let n=await t.writeContract({address:J.address,abi:a.erc20Abi,functionName:`transfer`,args:[e.receiveAddress,(0,a.parseUnits)(e.paymentAmount,J.decimals)],chain:null});console.log(`转账交易哈希:`,n),pe(n),me.current=n}else{let n=await t.sendTransaction({to:e.receiveAddress,value:(0,a.parseUnits)(e.paymentAmount,J.decimals),chain:null});console.log(`转账交易哈希:`,n),pe(n),me.current=n}O(!1),T(`checking`),Q({paymentId:e.paymentId})}catch(e){console.error(`钱包支付失败:`,e),A(e instanceof Error?e.message:C.walletPaymentFailed),b?.(e),O(!1)}},Se=async()=>{if(!(!L||!R||!G.current||!J||!K))try{O(!0);let e=G.current;await be(K.chainId);let t=(0,a.createWalletClient)({account:L,transport:(0,a.custom)(R)});if(!J.address)throw Error(C.subscriptionDoesNotSupportNative);let n=await t.writeContract({address:J.address,abi:a.erc20Abi,functionName:`approve`,args:[e.spenderAddress,(0,a.parseUnits)(e.approveAmount,J.decimals)],chain:null});console.log(`授权交易哈希:`,n),pe(n),me.current=n,O(!1),T(`checking`),Q({subscriptionId:e.subscriptionId})}catch(e){console.error(`钱包授权失败:`,e),A(e instanceof Error?e.message:C.walletPaymentFailed),b?.(e),O(!1)}},Ce=async()=>{if(!L){let e=C.pleaseConnectWallet;A(e),b?.(Error(e));return}p===`instant`?await xe():p===`subscription`&&await Se()},we=e=>{switch(e.toLowerCase()){case`ethereum`:case`bsc`:case`bsc-testnet`:return`ethereum`}return`ethereum`},Te=async()=>{if(!(!K||!J))try{if(O(!0),A(void 0),p===`instant`){G.current=await S.createOnetimePayment({paymentChain:K.chain,paymentToken:J.symbol,orderId:m,amount:ve,remark:ee}),Z(G.current.expireAt),ke(G.current.paymentId,`instant`);let e=!J.address,t=we(K.chain.toLowerCase()),r=G.current.receiveAddress,i=(0,a.parseUnits)(G.current.paymentAmount,J.decimals),o=e?`${t}:${r}@${K.chainId}?value=${i}`:`${t}:${J.address}@${K.chainId}/transfer?address=${r}&uint256=${i}`;I(await n.toDataURL(o,{width:200,margin:2,errorCorrectionLevel:`H`}))}else if(p===`subscription`){if(!g)throw Error(`Invalid Renewal Days: ${g??``}`);G.current=await S.createSubscriptionPayment({paymentChain:K.chain,paymentToken:J.symbol,orderId:m,amountOfUsd:ve,intervalDays:g}),Z(G.current.expireAt),ke(G.current.subscriptionId,`subscription`),I(void 0)}T(`payment`)}catch(e){A(e instanceof Error?e.message:C.createPaymentFailed),b?.(e)}finally{O(!1)}},Ee=()=>{G.current&&(T(`checking`),A(void 0),p===`instant`?Q({paymentId:G.current.paymentId}):p===`subscription`&&Q({subscriptionId:G.current.subscriptionId}))},Q=e=>{U.current?.unsubscribe();let t=()=>(0,r.defer)(()=>p===`subscription`?S.checkSubscriptionPaymentStatus(e):S.checkOnetimePaymentStatus(e)).pipe((0,i.timeout)(15e3),(0,i.retry)({delay:2e3}));U.current=t().pipe((0,i.expand)(e=>e.status===`pending`?(0,r.timer)(2e3).pipe((0,i.switchMap)(()=>t())):r.EMPTY),(0,i.tap)(e=>{if(!G.current&&p===`instant`){let t=e;G.current={paymentId:t.paymentId,orderId:t.orderId,paymentChain:t.chain,paymentToken:t.token,paymentAmount:t.payAmount,receiveAddress:t.receiveAddress,expireAt:t.expireAt},N(t.chain),F(t.token),Z(t.expireAt);let r=!t.tokenAddress,i=we(t.chain.toLowerCase()),o=t.receiveAddress,s=(0,a.parseUnits)(t.payAmount,t.tokenDecimals),c=r?`${i}:${o}@${t.chainId}?value=${s}`:`${i}:${t.tokenAddress}@${t.chainId}/transfer?address=${o}&uint256=${s}`;n.toDataURL(c,{width:200,margin:2,errorCorrectionLevel:`H`}).then(e=>{I(e),T(`payment`)}).catch(e=>{console.error(`生成二维码失败:`,e),T(`payment`)})}if(!G.current&&p===`subscription`){let t=e;G.current={subscriptionId:t.subscriptionId,orderId:t.orderId,paymentChain:t.chain,paymentToken:t.token,approveAmount:t.approveAmount,spenderAddress:t.approvedAddress,expireAt:t.expireAt,intervalDays:0,amountOfUsd:t.amountOfUsd},N(t.chain),F(t.token),Z(t.expireAt),I(void 0)}(e.status===`paid`||e.status===`approved`)&&(T(`success`),$(),v?.(e)),e.status===`expired`&&(T(`expired`),$(),te?.(e)),e.status===`failed`&&(T(`failed`),$(),y?.(e))})).subscribe({error:e=>{if(G.current){let t=e instanceof Error?e.message:C.checkPaymentStatusFailed;T(`error`),A(t),b?.(e)}},complete:()=>{U.current?.unsubscribe()}})},De=async()=>{if(!G.current)return;let e=p===`subscription`?G.current.spenderAddress:G.current.receiveAddress;if(e)try{await navigator.clipboard.writeText(e),z(!0),setTimeout(()=>{z(!1)},2e3)}catch(e){console.error(`复制失败:`,e)}},Oe=async()=>{if(V)try{await navigator.clipboard.writeText(V),z(!0),setTimeout(()=>{z(!1)},2e3)}catch(e){console.error(`复制失败:`,e)}},ke=(e,t)=>{if(!f||typeof window>`u`)return;let n=new URL(window.location.href),r=t===`subscription`?`subscriptionId`:`paymentId`;n.searchParams.set(r,e),window.history.replaceState({},``,n.toString())},$=()=>{if(typeof window>`u`)return;let e=new URL(window.location.href);e.searchParams.delete(`paymentId`),e.searchParams.delete(`subscriptionId`),window.history.replaceState({},``,e.toString())};return(0,l.useEffect)(()=>{j.length===0&&ye()},[]),(0,l.useEffect)(()=>{q.length>0&&F(q[0].symbol)},[q]),(0,l.useEffect)(()=>{if(typeof window>`u`)return;let e=new URL(window.location.href);if(p===`instant`){let t=e.searchParams.get(`paymentId`);t&&(T(`payment`),Q({paymentId:t}))}if(p===`subscription`){let t=e.searchParams.get(`subscriptionId`);t&&(T(`payment`),Q({subscriptionId:t}))}},[]),(0,l.useEffect)(()=>()=>{U.current?.unsubscribe(),_e()},[]),(0,u.jsx)(`div`,{className:`_cppay-content`,children:w===`success`?x?.Success?(0,u.jsx)(x.Success,{paymentInfo:G.current}):(0,u.jsxs)(`div`,{className:`_cppay-state-container`,children:[(0,u.jsx)(`div`,{className:`_cppay-state-success-bg`,children:(0,u.jsx)(`div`,{className:`_cppay-state-success-icon`,children:`✓`})}),(0,u.jsx)(`h3`,{className:`_cppay-state-title _cppay-state-title-success`,children:p===`subscription`?C.authorizationSuccess:C.paymentSuccess}),V&&(0,u.jsxs)(`div`,{className:`_cppay-state-hash-container`,children:[(0,u.jsx)(`div`,{className:`_cppay-state-label`,children:C.transactionHash}),(0,u.jsxs)(`div`,{className:`_cppay-hash-row`,children:[(0,u.jsx)(`code`,{className:`_cppay-state-hash`,children:V}),(0,u.jsx)(`button`,{onClick:Oe,className:`_cppay-state-copy-btn`,title:C.copyAddress,children:(0,u.jsxs)(`svg`,{viewBox:`0 0 24 24`,fill:`none`,stroke:`currentColor`,strokeWidth:`2`,children:[(0,u.jsx)(`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`}),(0,u.jsx)(`rect`,{x:`8`,y:`2`,width:`8`,height:`4`,rx:`1`,ry:`1`})]})})]})]}),G.current&&(0,u.jsxs)(`div`,{className:`_cppay-success-details`,children:[(0,u.jsxs)(`div`,{className:`_cppay-detail-item`,children:[(0,u.jsx)(`span`,{className:`_cppay-detail-label`,children:C.orderId}),(0,u.jsx)(`span`,{className:`_cppay-detail-value`,children:G.current.orderId})]}),(0,u.jsxs)(`div`,{className:`_cppay-detail-item`,children:[(0,u.jsx)(`span`,{className:`_cppay-detail-label`,children:p===`subscription`?C.authorizationAmount:C.paymentAmount}),(0,u.jsx)(`span`,{className:`_cppay-detail-value`,children:p===`subscription`?`${X(G.current.approveAmount,Y(P))} ${P}`:`${X(G.current.paymentAmount,Y(P))} ${P}`})]}),(0,u.jsxs)(`div`,{className:`_cppay-detail-item`,children:[(0,u.jsx)(`span`,{className:`_cppay-detail-label`,children:C.paymentNetwork}),(0,u.jsx)(`span`,{className:`_cppay-detail-value`,children:G.current.paymentChain})]}),(0,u.jsxs)(`div`,{className:`_cppay-detail-item`,children:[(0,u.jsx)(`span`,{className:`_cppay-detail-label`,children:C.paymentToken}),(0,u.jsx)(`span`,{className:`_cppay-detail-value`,children:G.current.paymentToken})]}),p===`subscription`&&(0,u.jsxs)(`div`,{className:`_cppay-detail-item`,children:[(0,u.jsx)(`span`,{className:`_cppay-detail-label`,children:C.renewalInterval}),(0,u.jsxs)(`span`,{className:`_cppay-detail-value`,children:[G.current.intervalDays,` `,C.days]})]}),(0,u.jsxs)(`div`,{className:`_cppay-detail-item`,children:[(0,u.jsx)(`span`,{className:`_cppay-detail-label`,children:p===`subscription`?C.subscriptionId:C.paymentId}),(0,u.jsx)(`span`,{className:`_cppay-detail-value _cppay-detail-id`,children:p===`subscription`?G.current.subscriptionId:G.current.paymentId})]})]})]}):w===`expired`?x?.Expired?(0,u.jsx)(x.Expired,{paymentInfo:G.current}):(0,u.jsxs)(`div`,{className:`_cppay-state-container`,children:[(0,u.jsx)(`div`,{className:`_cppay-state-expired-bg`,children:(0,u.jsx)(`div`,{className:`_cppay-state-expired-icon`,children:`⏰`})}),(0,u.jsx)(`h3`,{className:`_cppay-state-title _cppay-state-title-expired`,children:C.paymentExpired}),(0,u.jsx)(`p`,{className:`_cppay-state-message`,children:C.pleaseInitiatePaymentAgain}),(0,u.jsx)(`button`,{onClick:()=>{T(`select`),$()},disabled:D||E,className:`_cppay-btn _cppay-btn-primary _cppay-state-btn`,children:C.returnButton})]}):w===`error`?x?.Error?(0,u.jsx)(x.Error,{paymentInfo:G.current}):(0,u.jsxs)(`div`,{className:`_cppay-state-container`,children:[(0,u.jsx)(`div`,{className:`_cppay-state-error-bg`,children:(0,u.jsx)(`div`,{className:`_cppay-state-error-icon`,children:`!`})}),(0,u.jsx)(`h3`,{className:`_cppay-state-title _cppay-state-title-error`,children:k||C.error}),(0,u.jsx)(`p`,{className:`_cppay-state-message`,children:C.checkStatusFailed}),(0,u.jsx)(`button`,{onClick:()=>{T(`select`),$()},disabled:D||E,className:`_cppay-btn _cppay-btn-primary _cppay-state-btn`,children:C.returnButton})]}):w===`failed`?x?.Failed?(0,u.jsx)(x.Failed,{paymentInfo:G.current}):(0,u.jsxs)(`div`,{className:`_cppay-state-container`,children:[(0,u.jsx)(`div`,{className:`_cppay-state-failed-bg`,children:(0,u.jsx)(`div`,{className:`_cppay-state-failed-icon`,children:`✕`})}),(0,u.jsx)(`h3`,{className:`_cppay-state-title _cppay-state-title-failed`,children:C.paymentFailed}),(0,u.jsx)(`p`,{className:`_cppay-state-message`,children:C.pleaseInitiatePaymentAgain}),(0,u.jsx)(`button`,{onClick:()=>{T(`select`),$()},disabled:D||E,className:`_cppay-btn _cppay-btn-primary _cppay-state-btn`,children:C.returnButton})]}):w===`select`?(0,u.jsxs)(`div`,{children:[x?.ChooseTop,(0,u.jsxs)(`div`,{className:`_cppay-section`,children:[(0,u.jsx)(`label`,{className:`_cppay-label`,children:C.paymentNetwork}),(0,u.jsx)(`div`,{className:`_cppay-grid`,children:j.map(e=>(0,u.jsxs)(`button`,{onClick:()=>N(e.chain),className:`_cppay-select-btn ${M===e.chain?`_cppay-selected`:``}`,children:[e.icon&&(0,u.jsx)(`img`,{src:e.icon,alt:e.chain}),(0,u.jsx)(`span`,{children:e.chain})]},e.chain))})]}),(0,u.jsxs)(`div`,{className:`_cppay-section`,children:[(0,u.jsx)(`label`,{className:`_cppay-label`,children:C.paymentToken}),(0,u.jsx)(`div`,{className:`_cppay-grid`,children:q.map(e=>(0,u.jsxs)(`button`,{onClick:()=>F(e.symbol),className:`_cppay-select-btn ${P===e.symbol?`_cppay-selected`:``}`,children:[e.icon&&(0,u.jsx)(`img`,{src:e.icon,alt:e.symbol}),(0,u.jsx)(`span`,{children:e.symbol})]},e.symbol))})]}),x?.ChooseBottom,(0,u.jsx)(`div`,{className:`_cppay-section`,children:(0,u.jsx)(`div`,{className:`_cppay-price-box`,children:(0,u.jsxs)(`div`,{className:`_cppay-price-row`,children:[(0,u.jsx)(`span`,{className:`_cppay-price-label`,children:C.paymentAmount}),(0,u.jsxs)(`div`,{className:`_cppay-price-amount`,children:[(0,u.jsxs)(`div`,{className:`_cppay-price-main`,children:[ve??`-`,` `,P??``]}),(0,u.jsxs)(`div`,{className:`_cppay-price-sub`,children:[`≈ $`,h]})]})]})})}),(0,u.jsxs)(`div`,{className:`_cppay-section`,children:[k&&(0,u.jsxs)(`div`,{className:`_cppay-error-tooltip-wrapper`,onMouseEnter:()=>B(!0),onMouseLeave:()=>B(!1),children:[(0,u.jsxs)(`div`,{className:`_cppay-error-tooltip`,children:[(0,u.jsx)(`svg`,{viewBox:`0 0 20 20`,fill:`currentColor`,children:(0,u.jsx)(`path`,{fillRule:`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`,clipRule:`evenodd`})}),(0,u.jsx)(`span`,{children:k})]}),fe&&(0,u.jsx)(`div`,{className:`_cppay-error-tooltip-full`,children:k})]}),(0,u.jsx)(`button`,{onClick:Te,disabled:!M||!P||D,className:`_cppay-btn _cppay-btn-primary`,children:D?C.processing:C.continuePayment})]})]}):(0,u.jsxs)(`div`,{children:[ie&&(0,u.jsx)(`div`,{className:`_cppay-qr-container`,children:(0,u.jsx)(`div`,{className:`_cppay-qr-code`,children:(0,u.jsx)(`img`,{src:ie,alt:`Payment QR Code`,className:`_cppay-qr-image`})})}),(0,u.jsxs)(`div`,{className:`_cppay-section`,children:[J&&(0,u.jsx)(`div`,{className:`_cppay-info-box`,children:(0,u.jsx)(`div`,{className:`_cppay-info-flex-container`,children:(0,u.jsxs)(`div`,{className:`_cppay-info-flex-child`,children:[(0,u.jsx)(`div`,{className:`_cppay-info-label`,children:p===`subscription`?C.authorizationAmount:C.paymentAmount}),(0,u.jsxs)(`div`,{className:`_cppay-info-value _cppay-info-value-flex`,children:[G.current&&(0,u.jsx)(`span`,{children:p===`subscription`?`${X(G.current.approveAmount,Y(J.symbol))} ${J.symbol}`:`${X(G.current.paymentAmount,Y(J.symbol))} ${J.symbol}`}),(0,u.jsxs)(`span`,{children:[`≈ $`,h]})]})]})})}),(0,u.jsx)(`div`,{className:`_cppay-info-box`,children:(0,u.jsxs)(`div`,{className:`_cppay-info-flex-child`,children:[(0,u.jsxs)(`div`,{className:`_cppay-info-label _cppay-info-label-flex`,children:[(0,u.jsx)(`span`,{children:p===`subscription`?C.authorizationContractAddress:C.paymentAddress}),le&&(0,u.jsxs)(`span`,{className:`_cppay-countdown`,children:[`⏰ `,le]})]}),(0,u.jsxs)(`div`,{className:`_cppay-address-row`,children:[G.current&&(0,u.jsx)(`code`,{children:p===`subscription`?G.current.spenderAddress:G.current.receiveAddress}),(0,u.jsx)(`button`,{onClick:De,className:`_cppay-copy-btn ${de?`_cppay-copy-success`:``}`,title:de?C.copied:C.copyAddress,children:de?(0,u.jsx)(`svg`,{className:`_cppay-copy-icon`,viewBox:`0 0 24 24`,fill:`currentColor`,children:(0,u.jsx)(`path`,{d:`M9 16.17L4.83 12l-1.42 1.41L9 19 21 7l-1.41-1.41z`})}):(0,u.jsxs)(`svg`,{className:`_cppay-copy-icon`,viewBox:`0 0 24 24`,fill:`none`,stroke:`currentColor`,strokeWidth:`2`,children:[(0,u.jsx)(`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`}),(0,u.jsx)(`rect`,{x:`8`,y:`2`,width:`8`,height:`4`,rx:`1`,ry:`1`})]})})]})]})}),p===`subscription`&&(0,u.jsxs)(`div`,{className:`_cppay-info-box _cppay-subscription-box`,children:[(0,u.jsx)(`div`,{className:`_cppay-info-label _cppay-subscription-label`,children:C.subscriptionNotice}),(0,u.jsx)(`div`,{className:`_cppay-info-value _cppay-subscription-message`,children:C.subscriptionNoticeMessage})]})]}),k&&(0,u.jsxs)(`div`,{className:`_cppay-error-tooltip-wrapper`,onMouseEnter:()=>B(!0),onMouseLeave:()=>B(!1),children:[(0,u.jsxs)(`div`,{className:`_cppay-error-tooltip`,children:[(0,u.jsx)(`svg`,{viewBox:`0 0 20 20`,fill:`currentColor`,children:(0,u.jsx)(`path`,{fillRule:`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`,clipRule:`evenodd`})}),(0,u.jsx)(`span`,{children:k})]}),fe&&(0,u.jsx)(`div`,{className:`_cppay-error-tooltip-full`,children:k})]}),!E&&(0,u.jsx)(`div`,{className:`_cppay-section`,children:L?(0,u.jsxs)(u.Fragment,{children:[(0,u.jsx)(`button`,{onClick:Ce,disabled:D,className:`_cppay-btn _cppay-btn-primary`,children:D?p===`subscription`?C.authorizing:C.processing:p===`subscription`?`💳 ${C.walletAuthorize}`:`💳 ${C.walletPay}`}),(0,u.jsxs)(`button`,{onClick:he,disabled:D,className:`_cppay-btn _cppay-wallet-address-btn`,title:C.clickToModifyWallet,children:[(0,u.jsxs)(`span`,{className:`_cppay-wallet-address-text`,children:[L.slice(0,10),`...`,L.slice(-4)]}),(0,u.jsx)(`svg`,{className:`_cppay-wallet-arrow`,viewBox:`0 0 24 24`,fill:`none`,stroke:`currentColor`,strokeWidth:`2`,children:(0,u.jsx)(`polyline`,{points:`6 9 12 15 18 9`})})]})]}):(0,u.jsx)(`button`,{onClick:he,disabled:oe,className:`_cppay-btn _cppay-btn-secondary _cppay-connect-wallet-btn`,children:(0,u.jsx)(`span`,{children:oe?C.processing:`💳 ${C.connectWallet}`})})}),(0,u.jsx)(`div`,{className:`_cppay-section`,children:(0,u.jsx)(`button`,{onClick:Ee,disabled:E,className:`_cppay-btn _cppay-btn-primary`,children:E?(0,u.jsxs)(u.Fragment,{children:[(0,u.jsxs)(`svg`,{className:`_cppay-spinner`,viewBox:`0 0 24 24`,fill:`none`,xmlns:`http://www.w3.org/2000/svg`,children:[(0,u.jsx)(`circle`,{cx:`12`,cy:`12`,r:`10`,stroke:`currentColor`,strokeWidth:`3`,strokeOpacity:`0.25`}),(0,u.jsx)(`path`,{d:`M12 2a10 10 0 0 1 10 10`,stroke:`currentColor`,strokeWidth:`3`,strokeLinecap:`round`})]}),C.checking]}):C.completedPayment})}),(0,u.jsx)(`hr`,{className:`_cppay-divider`}),(0,u.jsx)(`div`,{className:`_cppay-section`,children:(0,u.jsx)(`button`,{onClick:()=>{U.current?.unsubscribe(),T(`select`),$()},disabled:D||E,className:`_cppay-btn _cppay-btn-text`,children:C.changePaymentMethod})})]})})},f=d,p=({open:t,onClose:n,ott:r,apikey:i,plain:a,orderId:o,amount:s,intervalDays:c,remark:d,locale:p,onExpired:m,onSuccess:h,onFailed:g,onError:ee,Slots:_})=>{let[v,te]=(0,l.useState)(`select`),y=(0,l.useMemo)(()=>v!==`checking`,[v]);(0,l.useEffect)(()=>{t||te(`select`)},[t]),(0,l.useEffect)(()=>{if(!t)return;let e=e=>{e.key===`Escape`&&y&&b()};return window.addEventListener(`keydown`,e),()=>window.removeEventListener(`keydown`,e)},[t,y]);let b=()=>{y&&n()},x=(0,l.useMemo)(()=>e.t(p),[p]);return t?(0,u.jsx)(`div`,{className:`_cppay-overlay`,onClick:e=>e.target===e.currentTarget&&b(),children:(0,u.jsxs)(`div`,{className:`_cppay-dialog`,children:[(0,u.jsxs)(`div`,{className:`_cppay-header`,children:[(0,u.jsx)(`h2`,{className:`_cppay-title`,children:(()=>{switch(v){case`success`:return x.paymentResult;case`expired`:return x.paymentExpired;case`failed`:return x.paymentFailed;case`error`:return x.error;case`payment`:case`checking`:return x.completePayment;default:return x.selectPaymentMethod}})()}),(0,u.jsx)(`button`,{onClick:b,disabled:!y,className:`_cppay-close-btn`,children:(0,u.jsx)(`svg`,{fill:`none`,stroke:`currentColor`,viewBox:`0 0 24 24`,children:(0,u.jsx)(`path`,{strokeLinecap:`round`,strokeLinejoin:`round`,strokeWidth:2,d:`M6 18L18 6M6 6l12 12`})})})]}),(0,u.jsx)(f,{apikey:i,ott:r,plain:a,orderId:o,amount:s,intervalDays:c,remark:d,locale:p,onSuccess:h,onExpired:m,onFailed:g,onError:ee,Slots:_,onPaymentStepChange:te})]})}):null},m=p,h=(0,l.createContext)(null);const g=({children:e})=>{let[t,n]=(0,l.useState)(!1),[r,i]=(0,l.useState)(null),a=(0,l.useCallback)(e=>{i(e),n(!0)},[]),o=(0,l.useCallback)(()=>{n(!1)},[]),s=(0,l.useCallback)(()=>{n(!1)},[]),c=(0,l.useCallback)(e=>{r?.onSuccess?.(e)},[r]),d=(0,l.useCallback)(e=>{r?.onExpired?.(e)},[r]),f=(0,l.useCallback)(e=>{r?.onFailed?.(e)},[r]),p=(0,l.useCallback)(e=>{r?.onError?.(e)},[r]);return(0,u.jsxs)(h.Provider,{value:{showPayment:a,closePayment:o},children:[e,r&&(0,u.jsx)(m,{open:t,onClose:s,...r,onSuccess:c,onExpired:d,onFailed:f,onError:p})]})},ee=()=>{let e=(0,l.useContext)(h);if(!e)throw Error(`useCppayPayment must be used within CppayProvider`);return e};e.n(e.r),exports.CppayProvider=g,exports.PaymentContent=f,exports.PaymentDialog=m,exports.useCppayPayment=ee;
package/dist/react.js CHANGED
@@ -760,7 +760,7 @@ var PaymentContent_default = ({ apikey: t, ott: n, plain: p, orderId: ye, amount
760
760
  className: "_cppay-section",
761
761
  children: /* @__PURE__ */ jsx("button", {
762
762
  onClick: () => {
763
- x("select"), $();
763
+ H.current?.unsubscribe(), x("select"), $();
764
764
  },
765
765
  disabled: C || S,
766
766
  className: "_cppay-btn _cppay-btn-text",
package/dist/vue.cjs CHANGED
@@ -1 +1 @@
1
- const e=require(`./locales-D_8rN4cA.cjs`),t=require(`./cppay-DwIEebOq.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={class:`_cppay-state-container`},ee={class:`_cppay-state-title _cppay-state-title-success`},te={key:0,class:`_cppay-state-hash-container`},ne={class:`_cppay-state-label`},re={class:`_cppay-hash-row`},ie={class:`_cppay-state-hash`},ae=[`title`],oe={key:1,class:`_cppay-success-details`},se={class:`_cppay-detail-item`},ce={class:`_cppay-detail-label`},le={class:`_cppay-detail-value`},ue={class:`_cppay-detail-item`},de={class:`_cppay-detail-label`},fe={class:`_cppay-detail-value`},pe={class:`_cppay-detail-item`},me={class:`_cppay-detail-label`},he={class:`_cppay-detail-value`},ge={class:`_cppay-detail-item`},_e={class:`_cppay-detail-label`},ve={class:`_cppay-detail-value`},ye={key:0,class:`_cppay-detail-item`},be={class:`_cppay-detail-label`},xe={class:`_cppay-detail-value`},Se={class:`_cppay-detail-item`},Ce={class:`_cppay-detail-label`},we={class:`_cppay-detail-value _cppay-detail-id`},Te={class:`_cppay-state-container`},Ee={class:`_cppay-state-title _cppay-state-title-expired`},De={class:`_cppay-state-message`},Oe=[`disabled`],ke={class:`_cppay-state-container`},Ae={class:`_cppay-state-title _cppay-state-title-error`},je={class:`_cppay-state-message`},Me=[`disabled`],Ne={class:`_cppay-state-container`},Pe={class:`_cppay-state-title _cppay-state-title-failed`},Fe={class:`_cppay-state-message`},Ie=[`disabled`],Le={key:4},Re={class:`_cppay-section`},ze={class:`_cppay-label`},Be={class:`_cppay-grid`},f=[`onClick`],p=[`src`,`alt`],Ve={class:`_cppay-section`},He={class:`_cppay-label`},Ue={class:`_cppay-grid`},We=[`onClick`],Ge=[`src`,`alt`],Ke={class:`_cppay-section`},qe={class:`_cppay-price-box`},Je={class:`_cppay-price-row`},Ye={class:`_cppay-price-label`},Xe={class:`_cppay-price-amount`},Ze={class:`_cppay-price-main`},Qe={class:`_cppay-price-sub`},$e={class:`_cppay-section`},et={class:`_cppay-error-tooltip`},tt={key:0,class:`_cppay-error-tooltip-full`},nt=[`disabled`],rt={key:5},it={key:0,class:`_cppay-qr-container`},at={class:`_cppay-qr-code`},ot=[`src`],st={class:`_cppay-section`},ct={key:0,class:`_cppay-info-box`},lt={class:`_cppay-info-flex-container`},ut={class:`_cppay-info-flex-child`},dt={class:`_cppay-info-label`},ft={class:`_cppay-info-value _cppay-info-value-flex`},pt={key:0},mt={class:`_cppay-info-box`},ht={class:`_cppay-info-flex-child`},gt={class:`_cppay-info-label _cppay-info-label-flex`},_t={key:0,class:`_cppay-countdown`},vt={class:`_cppay-address-row`},yt={key:0},bt=[`title`],xt={key:0,class:`_cppay-copy-icon`,viewBox:`0 0 24 24`,fill:`none`,stroke:`currentColor`,"stroke-width":`2`},St={key:1,class:`_cppay-copy-icon`,viewBox:`0 0 24 24`,fill:`currentColor`},Ct={key:1,class:`_cppay-info-box _cppay-subscription-box`},wt={class:`_cppay-info-label _cppay-subscription-label`},Tt={class:`_cppay-info-value _cppay-subscription-message`},Et={class:`_cppay-error-tooltip`},Dt={key:0,class:`_cppay-error-tooltip-full`},Ot={key:2,class:`_cppay-section`},kt=[`disabled`],At=[`disabled`],jt=[`disabled`,`title`],Mt={class:`_cppay-wallet-address-text`},Nt={class:`_cppay-section`},Pt=[`disabled`],Ft={class:`_cppay-section`},It=[`disabled`],m=(0,n.defineComponent)({__name:`PaymentContent`,props:{apikey:{},ott:{},orderId:{},amount:{},plain:{},intervalDays:{},remark:{},slots:{},locale:{}},emits:[`update:paymentStep`,`success`,`expired`,`failed`,`error`],setup(m,{emit:h}){let g=m,_=h,v=(0,n.computed)(()=>e.t(g.locale)),y=(0,n.computed)(()=>new t.t(g.apikey,g.ott)),b=(0,n.ref)(`select`),x=(0,n.ref)(!1),S=(0,n.computed)(()=>b.value===`checking`),C=(0,n.ref)(),w=(0,n.ref)([]),T=(0,n.ref)(),E=(0,n.ref)(),D=(0,n.ref)(),O=(0,n.ref)(),k=(0,n.ref)(!1),A=(0,n.ref)(),j=(0,n.ref)(``),M=(0,n.ref)(!1),N=(0,n.ref)(!1),P=(0,n.shallowRef)(null),F=(0,n.ref)(null),I=(0,n.ref)(null),L=(0,n.ref)(null),R=(0,n.ref)(``),Lt=()=>{typeof window<`u`&&!P.value&&(P.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}}),O.value=P.value.getAddress(),A.value=P.value.getProvider(`eip155`),P.value.subscribeAccount(e=>{e.isConnected?O.value=e.address:(O.value=void 0,A.value=void 0)}),P.value.subscribeProviders(e=>{A.value=e?.eip155}))};(0,n.watch)(b,e=>{_(`update:paymentStep`,e)});let z=async()=>{try{k.value=!0,C.value=void 0,P.value&&await P.value.open()}catch(e){C.value=e instanceof Error?e.message:v.value.walletConnectionFailed,_(`error`,e)}finally{k.value=!1}},B=(0,n.computed)(()=>w.value.find(e=>e.chain===T.value)),V=(0,n.computed)(()=>B.value?.tokens||[]),H=(0,n.computed)(()=>V.value.find(e=>e.symbol===E.value)),U=e=>[`USDT`,`USDC`,`BUSD`,`DAI`,`TUSD`,`USDD`,`FDUSD`].includes(e.toUpperCase())?2:6,W=(e,t)=>{let n=parseFloat(e);return isNaN(n)?`0`:n.toFixed(t).replace(/\.?0+$/,``)},Rt=e=>{if(e<=0)return v.value.expired;let t=Math.floor(e/3600),n=Math.floor(e%3600/60),r=e%60,i=e=>e.toString().padStart(2,`0`);return t>0?`${t}:${i(n)}:${i(r)}`:`${n}:${i(r)}`},G=e=>{I.value&&clearInterval(I.value);let t=()=>{if(b.value===`checking`){K();return}let t=e-Math.floor(Date.now()/1e3);j.value=Rt(t),t<=0&&K()};t(),I.value=setInterval(t,1e3)},K=()=>{I.value&&=(clearInterval(I.value),null)},q=(0,n.computed)(()=>{if(!E.value||!H.value)return`0`;let e=parseFloat(H.value.price);if(isNaN(e)||e===0)return`0`;let t=U(E.value);return W((parseFloat(g.amount)/e).toFixed(t),t)}),zt=async()=>{try{x.value=!0,C.value=void 0,w.value=await y.value.getSupportedChains(),w.value.length>0&&(T.value=w.value[0].chain)}catch(e){C.value=e instanceof Error?e.message:v.value.loadPaymentNetworkFailed,_(`error`,e)}finally{x.value=!1}},J=async e=>{if(A.value)try{await A.value.request({method:`wallet_switchEthereumChain`,params:[{chainId:`0x${e.toString(16)}`}]})}catch(e){throw e.code===4902?Error(v.value.pleaseAddNetwork):e}},Bt=async()=>{if(!(!O.value||!A.value||!L.value||!H.value||!B.value))try{x.value=!0;let e=L.value;await J(B.value.chainId);let t=(0,o.createWalletClient)({account:O.value,transport:(0,o.custom)(A.value)});if(H.value.address){let n=await t.writeContract({address:H.value.address,abi:o.erc20Abi,functionName:`transfer`,args:[e.receiveAddress,(0,o.parseUnits)(e.paymentAmount,H.value.decimals)],chain:null});console.log(`转账交易哈希:`,n),R.value=n}else{let n=await t.sendTransaction({to:e.receiveAddress,value:(0,o.parseUnits)(e.paymentAmount,H.value.decimals),chain:null});console.log(`转账交易哈希:`,n),R.value=n}x.value=!1,b.value=`checking`,Z({paymentId:e.paymentId})}catch(e){console.error(`钱包支付失败:`,e),C.value=e instanceof Error?e.message:v.value.walletPaymentFailed,_(`error`,e),x.value=!1}},Vt=async()=>{if(!(!O.value||!A.value||!L.value||!H.value||!B.value))try{let e=L.value;await J(B.value.chainId);let t=(0,o.createWalletClient)({account:O.value,transport:(0,o.custom)(A.value)});if(!H.value.address)throw Error(v.value.subscriptionDoesNotSupportNative);let n=await t.writeContract({address:H.value.address,abi:o.erc20Abi,functionName:`approve`,args:[e.spenderAddress,(0,o.parseUnits)(e.approveAmount,H.value.decimals)],chain:null});console.log(`授权交易哈希:`,n),R.value=n,x.value=!1,b.value=`checking`,Z({subscriptionId:e.subscriptionId})}catch(e){console.error(`钱包授权失败:`,e),C.value=e instanceof Error?e.message:v.value.walletPaymentFailed,_(`error`,e),x.value=!1}},Ht=async()=>{if(!O.value){C.value=v.value.pleaseConnectWallet,_(`error`,Error(v.value.pleaseConnectWallet));return}g.plain===`instant`?await Bt():g.plain===`subscription`&&await Vt()},Y=e=>{switch(e.toLowerCase()){case`ethereum`:case`bsc`:case`bsc-testnet`:return`ethereum`}return`ethereum`},X=async()=>{if(!(!B.value||!H.value))try{if(x.value=!0,C.value=void 0,g.plain===`instant`){L.value=await y.value.createOnetimePayment({paymentChain:B.value.chain,paymentToken:H.value.symbol,orderId:g.orderId,amount:q.value,remark:g.remark}),G(L.value.expireAt),Q(L.value.paymentId,`instant`);let e=!H.value.address,t=Y(B.value.chain.toLowerCase()),n=B.value.chainId,i=L.value.receiveAddress,a=(0,o.parseUnits)(L.value.paymentAmount,H.value.decimals),s=e?`${t}:${i}@${n}?value=${a}`:`${t}:${H.value.address}@${n}/transfer?address=${i}&uint256=${a}`;D.value=await r.toDataURL(s,{width:200,margin:2,errorCorrectionLevel:`H`})}else if(g.plain===`subscription`){if(!g.intervalDays)throw Error(`Invalid Renewal Days: ${g.intervalDays??``}`);L.value=await y.value.createSubscriptionPayment({paymentChain:B.value.chain,paymentToken:H.value.symbol,orderId:g.orderId,amountOfUsd:q.value,intervalDays:g.intervalDays}),G(L.value.expireAt),Q(L.value.subscriptionId,`subscription`),D.value=void 0}b.value=`payment`}catch(e){C.value=e instanceof Error?e.message:v.value.createPaymentFailed,_(`error`,e)}finally{x.value=!1}},Ut=()=>{L.value&&(C.value=void 0,b.value=`checking`,g.plain===`instant`?Z({paymentId:L.value.paymentId}):g.plain===`subscription`&&Z({subscriptionId:L.value.subscriptionId}))},Z=e=>{F.value?.unsubscribe();let t=()=>(0,i.defer)(()=>g.plain===`subscription`?y.value.checkSubscriptionPaymentStatus(e):y.value.checkOnetimePaymentStatus(e)).pipe((0,a.timeout)(15e3),(0,a.retry)({delay:2e3}));F.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=>{if(!L.value&&g.plain===`instant`){let t=e;L.value={paymentId:t.paymentId,orderId:t.orderId,paymentChain:t.chain,paymentToken:t.token,paymentAmount:t.payAmount,receiveAddress:t.receiveAddress,expireAt:t.expireAt},T.value=t.chain,E.value=t.token,G(t.expireAt);let n=!t.tokenAddress,i=Y(t.chain.toLowerCase()),a=t.receiveAddress,s=(0,o.parseUnits)(t.payAmount,t.tokenDecimals),c=n?`${i}:${a}@${t.chainId}?value=${s}`:`${i}:${t.tokenAddress}@${t.chainId}/transfer?address=${a}&uint256=${s}`;r.toDataURL(c,{width:200,margin:2,errorCorrectionLevel:`H`}).then(e=>{D.value=e,b.value=`payment`}).catch(e=>{console.error(`生成二维码失败:`,e),b.value=`payment`})}if(!L.value&&g.plain===`subscription`){let t=e;L.value={subscriptionId:t.subscriptionId,orderId:t.orderId,paymentChain:t.chain,paymentToken:t.token,approveAmount:t.approveAmount,spenderAddress:t.approvedAddress,expireAt:t.expireAt,intervalDays:0,amountOfUsd:t.amountOfUsd},T.value=t.chain,E.value=t.token,G(t.expireAt),D.value=void 0}(e.status===`paid`||e.status===`approved`)&&(b.value=`success`,$(),_(`success`,e)),e.status===`expired`&&(b.value=`expired`,$(),_(`expired`,e)),e.status===`failed`&&(b.value=`failed`,$(),_(`failed`,e))})).subscribe({error:e=>{if(L.value){let t=e instanceof Error?e.message:v.value.checkPaymentStatusFailed;b.value=`error`,C.value=t,$(),_(`error`,e)}},complete:()=>{F.value?.unsubscribe()}})},Wt=async()=>{if(!L.value)return;let e=g.plain===`subscription`?L.value.spenderAddress:L.value.receiveAddress;if(e)try{await navigator.clipboard.writeText(e),M.value=!0,setTimeout(()=>{M.value=!1},2e3)}catch(e){console.error(`复制失败:`,e)}};(0,n.watch)(V,e=>{e.length>0&&(E.value=e[0].symbol)}),(0,n.onMounted)(()=>{Lt(),w.value.length||zt(),Kt()}),(0,n.onUnmounted)(()=>{F.value?.unsubscribe(),K()});let Gt=async()=>{if(R.value)try{await navigator.clipboard.writeText(R.value);let e=M.value;M.value=!0,setTimeout(()=>{M.value=e},2e3)}catch(e){console.error(`复制失败:`,e)}},Q=(e,t)=>{if(!g.ott||typeof window>`u`)return;let n=new URL(window.location.href),r=t===`subscription`?`subscriptionId`:`paymentId`;n.searchParams.set(r,e),window.history.replaceState({},``,n.toString())},$=()=>{if(typeof window>`u`)return;let e=new URL(window.location.href);e.searchParams.delete(`paymentId`),e.searchParams.delete(`subscriptionId`),window.history.replaceState({},``,e.toString())},Kt=async()=>{if(typeof window>`u`)return;let e=new URL(window.location.href);if(g.plain===`instant`){let t=e.searchParams.get(`paymentId`);t&&(b.value=`payment`,Z({paymentId:t}))}if(g.plain===`subscription`){let t=e.searchParams.get(`subscriptionId`);t&&(b.value=`payment`,Z({subscriptionId:t}))}};return(e,t)=>((0,n.openBlock)(),(0,n.createElementBlock)(`div`,u,[b.value===`success`?(0,n.renderSlot)(e.$slots,`success`,{key:0},()=>[(0,n.createElementVNode)(`div`,d,[t[9]||=(0,n.createElementVNode)(`div`,{class:`_cppay-state-success-bg`},[(0,n.createElementVNode)(`div`,{class:`_cppay-state-success-icon`},`✓`)],-1),(0,n.createElementVNode)(`h3`,ee,(0,n.toDisplayString)(m.plain===`subscription`?v.value.authorizationSuccess:v.value.paymentSuccess),1),R.value?((0,n.openBlock)(),(0,n.createElementBlock)(`div`,te,[(0,n.createElementVNode)(`div`,ne,(0,n.toDisplayString)(v.value.transactionHash),1),(0,n.createElementVNode)(`div`,re,[(0,n.createElementVNode)(`code`,ie,(0,n.toDisplayString)(R.value),1),(0,n.createElementVNode)(`button`,{onClick:Gt,class:`_cppay-state-copy-btn`,title:v.value.copyAddress},[...t[8]||=[(0,n.createElementVNode)(`svg`,{viewBox:`0 0 24 24`,fill:`none`,stroke:`currentColor`,"stroke-width":`2`},[(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`}),(0,n.createElementVNode)(`rect`,{x:`8`,y:`2`,width:`8`,height:`4`,rx:`1`,ry:`1`})],-1)]],8,ae)])])):(0,n.createCommentVNode)(``,!0),L.value?((0,n.openBlock)(),(0,n.createElementBlock)(`div`,oe,[(0,n.createElementVNode)(`div`,se,[(0,n.createElementVNode)(`span`,ce,(0,n.toDisplayString)(v.value.orderId),1),(0,n.createElementVNode)(`span`,le,(0,n.toDisplayString)(L.value.orderId),1)]),(0,n.createElementVNode)(`div`,ue,[(0,n.createElementVNode)(`span`,de,(0,n.toDisplayString)(m.plain===`subscription`?v.value.authorizationAmount:v.value.paymentAmount),1),(0,n.createElementVNode)(`span`,fe,(0,n.toDisplayString)(m.plain===`subscription`?`${W(L.value.approveAmount,U(E.value))} ${E.value}`:`${W(L.value.paymentAmount,U(E.value))} ${E.value}`),1)]),(0,n.createElementVNode)(`div`,pe,[(0,n.createElementVNode)(`span`,me,(0,n.toDisplayString)(v.value.paymentNetwork),1),(0,n.createElementVNode)(`span`,he,(0,n.toDisplayString)(L.value.paymentChain),1)]),(0,n.createElementVNode)(`div`,ge,[(0,n.createElementVNode)(`span`,_e,(0,n.toDisplayString)(v.value.paymentToken),1),(0,n.createElementVNode)(`span`,ve,(0,n.toDisplayString)(L.value.paymentToken),1)]),m.plain===`subscription`?((0,n.openBlock)(),(0,n.createElementBlock)(`div`,ye,[(0,n.createElementVNode)(`span`,be,(0,n.toDisplayString)(v.value.renewalInterval),1),(0,n.createElementVNode)(`span`,xe,(0,n.toDisplayString)(L.value.intervalDays)+` `+(0,n.toDisplayString)(v.value.days),1)])):(0,n.createCommentVNode)(``,!0),(0,n.createElementVNode)(`div`,Se,[(0,n.createElementVNode)(`span`,Ce,(0,n.toDisplayString)(m.plain===`subscription`?v.value.subscriptionId:v.value.paymentId),1),(0,n.createElementVNode)(`span`,we,(0,n.toDisplayString)(m.plain===`subscription`?L.value.subscriptionId:L.value.paymentId),1)])])):(0,n.createCommentVNode)(``,!0)])]):b.value===`expired`?(0,n.renderSlot)(e.$slots,`expired`,{key:1},()=>[(0,n.createElementVNode)(`div`,Te,[t[10]||=(0,n.createElementVNode)(`div`,{class:`_cppay-state-expired-bg`},[(0,n.createElementVNode)(`div`,{class:`_cppay-state-expired-icon`},`⏰`)],-1),(0,n.createElementVNode)(`h3`,Ee,(0,n.toDisplayString)(v.value.paymentExpired),1),(0,n.createElementVNode)(`p`,De,(0,n.toDisplayString)(v.value.pleaseInitiatePaymentAgain),1),(0,n.createElementVNode)(`button`,{onClick:t[0]||=()=>{b.value=`select`,$()},disabled:x.value||S.value,class:`_cppay-btn _cppay-btn-primary _cppay-state-btn`},(0,n.toDisplayString)(v.value.returnButton),9,Oe)])]):b.value===`error`?(0,n.renderSlot)(e.$slots,`error`,{key:2},()=>[(0,n.createElementVNode)(`div`,ke,[t[11]||=(0,n.createElementVNode)(`div`,{class:`_cppay-state-error-bg`},[(0,n.createElementVNode)(`div`,{class:`_cppay-state-error-icon`},`!`)],-1),(0,n.createElementVNode)(`h3`,Ae,(0,n.toDisplayString)(C.value||v.value.error),1),(0,n.createElementVNode)(`p`,je,(0,n.toDisplayString)(v.value.checkStatusFailed),1),(0,n.createElementVNode)(`button`,{onClick:t[1]||=()=>{b.value=`select`,$()},disabled:x.value||S.value,class:`_cppay-btn _cppay-btn-primary _cppay-state-btn`},(0,n.toDisplayString)(v.value.returnButton),9,Me)])]):b.value===`failed`?(0,n.renderSlot)(e.$slots,`failed`,{key:3},()=>[(0,n.createElementVNode)(`div`,Ne,[t[12]||=(0,n.createElementVNode)(`div`,{class:`_cppay-state-failed-bg`},[(0,n.createElementVNode)(`div`,{class:`_cppay-state-failed-icon`},`✕`)],-1),(0,n.createElementVNode)(`h3`,Pe,(0,n.toDisplayString)(v.value.paymentFailed),1),(0,n.createElementVNode)(`p`,Fe,(0,n.toDisplayString)(v.value.pleaseInitiatePaymentAgain),1),(0,n.createElementVNode)(`button`,{onClick:t[2]||=()=>{b.value=`select`,$()},disabled:x.value||S.value,class:`_cppay-btn _cppay-btn-primary _cppay-state-btn`},(0,n.toDisplayString)(v.value.returnButton),9,Ie)])]):b.value===`select`?((0,n.openBlock)(),(0,n.createElementBlock)(`div`,Le,[(0,n.renderSlot)(e.$slots,`choose-top`),(0,n.createElementVNode)(`div`,Re,[(0,n.createElementVNode)(`label`,ze,(0,n.toDisplayString)(v.value.paymentNetwork),1),(0,n.createElementVNode)(`div`,Be,[((0,n.openBlock)(!0),(0,n.createElementBlock)(n.Fragment,null,(0,n.renderList)(w.value,e=>((0,n.openBlock)(),(0,n.createElementBlock)(`button`,{key:e.chain,onClick:t=>T.value=e.chain,class:(0,n.normalizeClass)([`_cppay-select-btn`,{"_cppay-selected":T.value===e.chain}])},[e.icon?((0,n.openBlock)(),(0,n.createElementBlock)(`img`,{key:0,src:e.icon,alt:e.chain},null,8,p)):(0,n.createCommentVNode)(``,!0),(0,n.createElementVNode)(`span`,null,(0,n.toDisplayString)(e.chain),1)],10,f))),128))])]),(0,n.createElementVNode)(`div`,Ve,[(0,n.createElementVNode)(`label`,He,(0,n.toDisplayString)(v.value.paymentToken),1),(0,n.createElementVNode)(`div`,Ue,[((0,n.openBlock)(!0),(0,n.createElementBlock)(n.Fragment,null,(0,n.renderList)(V.value,e=>((0,n.openBlock)(),(0,n.createElementBlock)(`button`,{key:e.symbol,onClick:t=>E.value=e.symbol,class:(0,n.normalizeClass)([`_cppay-select-btn`,{"_cppay-selected":E.value===e.symbol}])},[e.icon?((0,n.openBlock)(),(0,n.createElementBlock)(`img`,{key:0,src:e.icon,alt:e.symbol},null,8,Ge)):(0,n.createCommentVNode)(``,!0),(0,n.createElementVNode)(`span`,null,(0,n.toDisplayString)(e.symbol),1)],10,We))),128))])]),(0,n.renderSlot)(e.$slots,`choose-bottom`),(0,n.createElementVNode)(`div`,Ke,[(0,n.createElementVNode)(`div`,qe,[(0,n.createElementVNode)(`div`,Je,[(0,n.createElementVNode)(`span`,Ye,(0,n.toDisplayString)(v.value.paymentAmount),1),(0,n.createElementVNode)(`div`,Xe,[(0,n.createElementVNode)(`div`,Ze,(0,n.toDisplayString)(q.value??`-`)+` `+(0,n.toDisplayString)(E.value??``),1),(0,n.createElementVNode)(`div`,Qe,`≈ $`+(0,n.toDisplayString)(m.amount),1)])])])]),(0,n.createElementVNode)(`div`,$e,[C.value?((0,n.openBlock)(),(0,n.createElementBlock)(`div`,{key:0,class:`_cppay-error-tooltip-wrapper`,onMouseenter:t[3]||=e=>N.value=!0,onMouseleave:t[4]||=e=>N.value=!1},[(0,n.createElementVNode)(`div`,et,[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)(C.value),1)]),N.value?((0,n.openBlock)(),(0,n.createElementBlock)(`div`,tt,(0,n.toDisplayString)(C.value),1)):(0,n.createCommentVNode)(``,!0)],32)):(0,n.createCommentVNode)(``,!0),(0,n.createElementVNode)(`button`,{onClick:X,disabled:!T.value||!E.value||x.value,class:`_cppay-btn _cppay-btn-primary`},(0,n.toDisplayString)(x.value?v.value.processing:v.value.continuePayment),9,nt)])])):((0,n.openBlock)(),(0,n.createElementBlock)(`div`,rt,[D.value?((0,n.openBlock)(),(0,n.createElementBlock)(`div`,it,[(0,n.createElementVNode)(`div`,at,[(0,n.createElementVNode)(`img`,{src:D.value,alt:`Payment QR Code`,class:`_cppay-qr-image`},null,8,ot)])])):(0,n.createCommentVNode)(``,!0),(0,n.createElementVNode)(`div`,st,[H.value?((0,n.openBlock)(),(0,n.createElementBlock)(`div`,ct,[(0,n.createElementVNode)(`div`,lt,[(0,n.createElementVNode)(`div`,ut,[(0,n.createElementVNode)(`div`,dt,(0,n.toDisplayString)(m.plain===`subscription`?v.value.authorizationAmount:v.value.paymentAmount),1),(0,n.createElementVNode)(`div`,ft,[L.value?((0,n.openBlock)(),(0,n.createElementBlock)(`span`,pt,(0,n.toDisplayString)(m.plain===`subscription`?`${W(L.value.approveAmount,U(H.value.symbol))} ${H.value.symbol}`:`${W(L.value.paymentAmount,U(H.value.symbol))} ${H.value.symbol}`),1)):(0,n.createCommentVNode)(``,!0),(0,n.createElementVNode)(`span`,null,`≈ $`+(0,n.toDisplayString)(m.amount),1)])])])])):(0,n.createCommentVNode)(``,!0),(0,n.createElementVNode)(`div`,mt,[(0,n.createElementVNode)(`div`,ht,[(0,n.createElementVNode)(`div`,gt,[(0,n.createElementVNode)(`span`,null,(0,n.toDisplayString)(m.plain===`subscription`?v.value.authorizationContractAddress:v.value.paymentAddress),1),j.value?((0,n.openBlock)(),(0,n.createElementBlock)(`span`,_t,`⏰ `+(0,n.toDisplayString)(j.value),1)):(0,n.createCommentVNode)(``,!0)]),(0,n.createElementVNode)(`div`,vt,[L.value?((0,n.openBlock)(),(0,n.createElementBlock)(`code`,yt,(0,n.toDisplayString)(m.plain===`subscription`?L.value.spenderAddress:L.value.receiveAddress),1)):(0,n.createCommentVNode)(``,!0),(0,n.createElementVNode)(`button`,{onClick:Wt,class:(0,n.normalizeClass)([`_cppay-copy-btn`,{"_cppay-copy-success":M.value}]),title:M.value?v.value.copied:v.value.copyAddress},[M.value?((0,n.openBlock)(),(0,n.createElementBlock)(`svg`,St,[...t[15]||=[(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`,xt,[...t[14]||=[(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,bt)])])]),m.plain===`subscription`?((0,n.openBlock)(),(0,n.createElementBlock)(`div`,Ct,[(0,n.createElementVNode)(`div`,wt,(0,n.toDisplayString)(v.value.subscriptionNotice),1),(0,n.createElementVNode)(`div`,Tt,(0,n.toDisplayString)(v.value.subscriptionNoticeMessage),1)])):(0,n.createCommentVNode)(``,!0)]),C.value?((0,n.openBlock)(),(0,n.createElementBlock)(`div`,{key:1,class:`_cppay-error-tooltip-wrapper`,onMouseenter:t[5]||=e=>N.value=!0,onMouseleave:t[6]||=e=>N.value=!1},[(0,n.createElementVNode)(`div`,Et,[t[16]||=(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.value),1)]),N.value?((0,n.openBlock)(),(0,n.createElementBlock)(`div`,Dt,(0,n.toDisplayString)(C.value),1)):(0,n.createCommentVNode)(``,!0)],32)):(0,n.createCommentVNode)(``,!0),S.value?(0,n.createCommentVNode)(``,!0):((0,n.openBlock)(),(0,n.createElementBlock)(`div`,Ot,[O.value?((0,n.openBlock)(),(0,n.createElementBlock)(n.Fragment,{key:1},[(0,n.createElementVNode)(`button`,{onClick:Ht,disabled:x.value,class:`_cppay-btn _cppay-btn-primary`},(0,n.toDisplayString)(x.value?m.plain===`subscription`?v.value.authorizing:v.value.processing:m.plain===`subscription`?v.value.walletAuthorize:v.value.walletPay),9,At),(0,n.createElementVNode)(`button`,{onClick:z,disabled:x.value,class:`_cppay-btn _cppay-wallet-address-btn`,title:v.value.clickToModifyWallet},[(0,n.createElementVNode)(`span`,Mt,(0,n.toDisplayString)(O.value.slice(0,10))+`...`+(0,n.toDisplayString)(O.value.slice(-4)),1),t[17]||=(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,jt)],64)):((0,n.openBlock)(),(0,n.createElementBlock)(`button`,{key:0,onClick:z,disabled:k.value,class:`_cppay-btn _cppay-btn-secondary _cppay-connect-wallet-btn`},[(0,n.createElementVNode)(`span`,null,(0,n.toDisplayString)(k.value?v.value.processing:v.value.connectWallet),1)],8,kt))])),(0,n.createElementVNode)(`div`,Nt,[(0,n.createElementVNode)(`button`,{onClick:Ut,disabled:S.value,class:`_cppay-btn _cppay-btn-primary`},[S.value?((0,n.openBlock)(),(0,n.createElementBlock)(n.Fragment,{key:0},[t[18]||=(0,n.createElementVNode)(`svg`,{class:`_cppay-spinner`,viewBox:`0 0 24 24`,fill:`none`,xmlns:`http://www.w3.org/2000/svg`},[(0,n.createElementVNode)(`circle`,{cx:`12`,cy:`12`,r:`10`,stroke:`currentColor`,"stroke-width":`3`,"stroke-opacity":`0.25`}),(0,n.createElementVNode)(`path`,{d:`M12 2a10 10 0 0 1 10 10`,stroke:`currentColor`,"stroke-width":`3`,"stroke-linecap":`round`})],-1),(0,n.createTextVNode)(` `+(0,n.toDisplayString)(v.value.checking),1)],64)):((0,n.openBlock)(),(0,n.createElementBlock)(n.Fragment,{key:1},[(0,n.createTextVNode)((0,n.toDisplayString)(v.value.completedPayment),1)],64))],8,Pt)]),t[19]||=(0,n.createElementVNode)(`hr`,{class:`_cppay-divider`},null,-1),(0,n.createElementVNode)(`div`,Ft,[(0,n.createElementVNode)(`button`,{onClick:t[7]||=()=>{b.value=`select`,$()},disabled:x.value||S.value,class:`_cppay-btn _cppay-btn-text`},(0,n.toDisplayString)(v.value.changePaymentMethod),9,It)])]))]))}}),h=m,g={class:`_cppay-dialog`},_={class:`_cppay-header`},v={class:`_cppay-title`},y=[`disabled`],b=(0,n.defineComponent)({__name:`PaymentDialog`,props:{modelValue:{type:Boolean},ott:{},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`,g,[(0,n.createElementVNode)(`div`,_,[(0,n.createElementVNode)(`h2`,v,(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,y)]),t.modelValue?((0,n.openBlock)(),(0,n.createBlock)(h,{key:0,apikey:t.apikey,ott:t.ott,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`)]),success:(0,n.withCtx)(()=>[(0,n.renderSlot)(e.$slots,`success`)]),failed:(0,n.withCtx)(()=>[(0,n.renderSlot)(e.$slots,`failed`)]),error:(0,n.withCtx)(()=>[(0,n.renderSlot)(e.$slots,`error`)]),expired:(0,n.withCtx)(()=>[(0,n.renderSlot)(e.$slots,`expired`)]),_:3},8,[`apikey`,`ott`,`orderId`,`amount`,`plain`,`intervalDays`,`locale`])):(0,n.createCommentVNode)(``,!0)])])):(0,n.createCommentVNode)(``,!0)}}),x=b,S=(0,n.ref)({open:!1,options:null});const C=e=>{S.value.options=e,S.value.open=!0},w=()=>{S.value.open=!1};var T=()=>{S.value.open=!1},E=e=>{S.value.options?.onSuccess?.(e)},D=e=>{S.value.options?.onExpired?.(e)},O=e=>{S.value.options?.onFailed?.(e)},k=e=>{S.value.options?.onError?.(e)};const A={install(e){e.config.globalProperties.$showPayment=C,e.config.globalProperties.$closePayment=w;let t=document.createElement(`div`);document.body.appendChild(t),(0,n.createApp)({setup(){return()=>S.value.options?(0,n.h)(x,{modelValue:S.value.open,"onUpdate:modelValue":e=>{S.value.open=e,e||T()},...S.value.options,onSuccess:E,onExpired:D,onFailed:O,onError:k}):null}}).mount(t)}},j=()=>({showPayment:C,closePayment:w});e.n(e.r),exports.CppayPlugin=A,exports.PaymentContent=h,exports.PaymentDialog=x,exports.showPayment=C,exports.useCppayPayment=j;
1
+ const e=require(`./locales-D_8rN4cA.cjs`),t=require(`./cppay-DwIEebOq.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={class:`_cppay-state-container`},ee={class:`_cppay-state-title _cppay-state-title-success`},te={key:0,class:`_cppay-state-hash-container`},ne={class:`_cppay-state-label`},re={class:`_cppay-hash-row`},ie={class:`_cppay-state-hash`},ae=[`title`],oe={key:1,class:`_cppay-success-details`},se={class:`_cppay-detail-item`},ce={class:`_cppay-detail-label`},le={class:`_cppay-detail-value`},ue={class:`_cppay-detail-item`},de={class:`_cppay-detail-label`},fe={class:`_cppay-detail-value`},pe={class:`_cppay-detail-item`},me={class:`_cppay-detail-label`},he={class:`_cppay-detail-value`},ge={class:`_cppay-detail-item`},_e={class:`_cppay-detail-label`},ve={class:`_cppay-detail-value`},ye={key:0,class:`_cppay-detail-item`},be={class:`_cppay-detail-label`},xe={class:`_cppay-detail-value`},Se={class:`_cppay-detail-item`},Ce={class:`_cppay-detail-label`},we={class:`_cppay-detail-value _cppay-detail-id`},Te={class:`_cppay-state-container`},Ee={class:`_cppay-state-title _cppay-state-title-expired`},De={class:`_cppay-state-message`},Oe=[`disabled`],ke={class:`_cppay-state-container`},Ae={class:`_cppay-state-title _cppay-state-title-error`},je={class:`_cppay-state-message`},Me=[`disabled`],Ne={class:`_cppay-state-container`},Pe={class:`_cppay-state-title _cppay-state-title-failed`},Fe={class:`_cppay-state-message`},Ie=[`disabled`],Le={key:4},Re={class:`_cppay-section`},ze={class:`_cppay-label`},Be={class:`_cppay-grid`},f=[`onClick`],p=[`src`,`alt`],Ve={class:`_cppay-section`},He={class:`_cppay-label`},Ue={class:`_cppay-grid`},We=[`onClick`],Ge=[`src`,`alt`],Ke={class:`_cppay-section`},qe={class:`_cppay-price-box`},Je={class:`_cppay-price-row`},Ye={class:`_cppay-price-label`},Xe={class:`_cppay-price-amount`},Ze={class:`_cppay-price-main`},Qe={class:`_cppay-price-sub`},$e={class:`_cppay-section`},et={class:`_cppay-error-tooltip`},tt={key:0,class:`_cppay-error-tooltip-full`},nt=[`disabled`],rt={key:5},it={key:0,class:`_cppay-qr-container`},at={class:`_cppay-qr-code`},ot=[`src`],st={class:`_cppay-section`},ct={key:0,class:`_cppay-info-box`},lt={class:`_cppay-info-flex-container`},ut={class:`_cppay-info-flex-child`},dt={class:`_cppay-info-label`},ft={class:`_cppay-info-value _cppay-info-value-flex`},pt={key:0},mt={class:`_cppay-info-box`},ht={class:`_cppay-info-flex-child`},gt={class:`_cppay-info-label _cppay-info-label-flex`},_t={key:0,class:`_cppay-countdown`},vt={class:`_cppay-address-row`},yt={key:0},bt=[`title`],xt={key:0,class:`_cppay-copy-icon`,viewBox:`0 0 24 24`,fill:`none`,stroke:`currentColor`,"stroke-width":`2`},St={key:1,class:`_cppay-copy-icon`,viewBox:`0 0 24 24`,fill:`currentColor`},Ct={key:1,class:`_cppay-info-box _cppay-subscription-box`},wt={class:`_cppay-info-label _cppay-subscription-label`},Tt={class:`_cppay-info-value _cppay-subscription-message`},Et={class:`_cppay-error-tooltip`},Dt={key:0,class:`_cppay-error-tooltip-full`},Ot={key:2,class:`_cppay-section`},kt=[`disabled`],At=[`disabled`],jt=[`disabled`,`title`],Mt={class:`_cppay-wallet-address-text`},Nt={class:`_cppay-section`},Pt=[`disabled`],Ft={class:`_cppay-section`},It=[`disabled`],m=(0,n.defineComponent)({__name:`PaymentContent`,props:{apikey:{},ott:{},orderId:{},amount:{},plain:{},intervalDays:{},remark:{},slots:{},locale:{}},emits:[`update:paymentStep`,`success`,`expired`,`failed`,`error`],setup(m,{emit:h}){let g=m,_=h,v=(0,n.computed)(()=>e.t(g.locale)),y=(0,n.computed)(()=>new t.t(g.apikey,g.ott)),b=(0,n.ref)(`select`),x=(0,n.ref)(!1),S=(0,n.computed)(()=>b.value===`checking`),C=(0,n.ref)(),w=(0,n.ref)([]),T=(0,n.ref)(),E=(0,n.ref)(),D=(0,n.ref)(),O=(0,n.ref)(),k=(0,n.ref)(!1),A=(0,n.ref)(),j=(0,n.ref)(``),M=(0,n.ref)(!1),N=(0,n.ref)(!1),P=(0,n.shallowRef)(null),F=(0,n.ref)(null),I=(0,n.ref)(null),L=(0,n.ref)(null),R=(0,n.ref)(``),Lt=()=>{typeof window<`u`&&!P.value&&(P.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}}),O.value=P.value.getAddress(),A.value=P.value.getProvider(`eip155`),P.value.subscribeAccount(e=>{e.isConnected?O.value=e.address:(O.value=void 0,A.value=void 0)}),P.value.subscribeProviders(e=>{A.value=e?.eip155}))};(0,n.watch)(b,e=>{_(`update:paymentStep`,e)});let z=async()=>{try{k.value=!0,C.value=void 0,P.value&&await P.value.open()}catch(e){C.value=e instanceof Error?e.message:v.value.walletConnectionFailed,_(`error`,e)}finally{k.value=!1}},B=(0,n.computed)(()=>w.value.find(e=>e.chain===T.value)),V=(0,n.computed)(()=>B.value?.tokens||[]),H=(0,n.computed)(()=>V.value.find(e=>e.symbol===E.value)),U=e=>[`USDT`,`USDC`,`BUSD`,`DAI`,`TUSD`,`USDD`,`FDUSD`].includes(e.toUpperCase())?2:6,W=(e,t)=>{let n=parseFloat(e);return isNaN(n)?`0`:n.toFixed(t).replace(/\.?0+$/,``)},Rt=e=>{if(e<=0)return v.value.expired;let t=Math.floor(e/3600),n=Math.floor(e%3600/60),r=e%60,i=e=>e.toString().padStart(2,`0`);return t>0?`${t}:${i(n)}:${i(r)}`:`${n}:${i(r)}`},G=e=>{I.value&&clearInterval(I.value);let t=()=>{if(b.value===`checking`){K();return}let t=e-Math.floor(Date.now()/1e3);j.value=Rt(t),t<=0&&K()};t(),I.value=setInterval(t,1e3)},K=()=>{I.value&&=(clearInterval(I.value),null)},q=(0,n.computed)(()=>{if(!E.value||!H.value)return`0`;let e=parseFloat(H.value.price);if(isNaN(e)||e===0)return`0`;let t=U(E.value);return W((parseFloat(g.amount)/e).toFixed(t),t)}),zt=async()=>{try{x.value=!0,C.value=void 0,w.value=await y.value.getSupportedChains(),w.value.length>0&&(T.value=w.value[0].chain)}catch(e){C.value=e instanceof Error?e.message:v.value.loadPaymentNetworkFailed,_(`error`,e)}finally{x.value=!1}},J=async e=>{if(A.value)try{await A.value.request({method:`wallet_switchEthereumChain`,params:[{chainId:`0x${e.toString(16)}`}]})}catch(e){throw e.code===4902?Error(v.value.pleaseAddNetwork):e}},Bt=async()=>{if(!(!O.value||!A.value||!L.value||!H.value||!B.value))try{x.value=!0;let e=L.value;await J(B.value.chainId);let t=(0,o.createWalletClient)({account:O.value,transport:(0,o.custom)(A.value)});if(H.value.address){let n=await t.writeContract({address:H.value.address,abi:o.erc20Abi,functionName:`transfer`,args:[e.receiveAddress,(0,o.parseUnits)(e.paymentAmount,H.value.decimals)],chain:null});console.log(`转账交易哈希:`,n),R.value=n}else{let n=await t.sendTransaction({to:e.receiveAddress,value:(0,o.parseUnits)(e.paymentAmount,H.value.decimals),chain:null});console.log(`转账交易哈希:`,n),R.value=n}x.value=!1,b.value=`checking`,Z({paymentId:e.paymentId})}catch(e){console.error(`钱包支付失败:`,e),C.value=e instanceof Error?e.message:v.value.walletPaymentFailed,_(`error`,e),x.value=!1}},Vt=async()=>{if(!(!O.value||!A.value||!L.value||!H.value||!B.value))try{let e=L.value;await J(B.value.chainId);let t=(0,o.createWalletClient)({account:O.value,transport:(0,o.custom)(A.value)});if(!H.value.address)throw Error(v.value.subscriptionDoesNotSupportNative);let n=await t.writeContract({address:H.value.address,abi:o.erc20Abi,functionName:`approve`,args:[e.spenderAddress,(0,o.parseUnits)(e.approveAmount,H.value.decimals)],chain:null});console.log(`授权交易哈希:`,n),R.value=n,x.value=!1,b.value=`checking`,Z({subscriptionId:e.subscriptionId})}catch(e){console.error(`钱包授权失败:`,e),C.value=e instanceof Error?e.message:v.value.walletPaymentFailed,_(`error`,e),x.value=!1}},Ht=async()=>{if(!O.value){C.value=v.value.pleaseConnectWallet,_(`error`,Error(v.value.pleaseConnectWallet));return}g.plain===`instant`?await Bt():g.plain===`subscription`&&await Vt()},Y=e=>{switch(e.toLowerCase()){case`ethereum`:case`bsc`:case`bsc-testnet`:return`ethereum`}return`ethereum`},X=async()=>{if(!(!B.value||!H.value))try{if(x.value=!0,C.value=void 0,g.plain===`instant`){L.value=await y.value.createOnetimePayment({paymentChain:B.value.chain,paymentToken:H.value.symbol,orderId:g.orderId,amount:q.value,remark:g.remark}),G(L.value.expireAt),Q(L.value.paymentId,`instant`);let e=!H.value.address,t=Y(B.value.chain.toLowerCase()),n=B.value.chainId,i=L.value.receiveAddress,a=(0,o.parseUnits)(L.value.paymentAmount,H.value.decimals),s=e?`${t}:${i}@${n}?value=${a}`:`${t}:${H.value.address}@${n}/transfer?address=${i}&uint256=${a}`;D.value=await r.toDataURL(s,{width:200,margin:2,errorCorrectionLevel:`H`})}else if(g.plain===`subscription`){if(!g.intervalDays)throw Error(`Invalid Renewal Days: ${g.intervalDays??``}`);L.value=await y.value.createSubscriptionPayment({paymentChain:B.value.chain,paymentToken:H.value.symbol,orderId:g.orderId,amountOfUsd:q.value,intervalDays:g.intervalDays}),G(L.value.expireAt),Q(L.value.subscriptionId,`subscription`),D.value=void 0}b.value=`payment`}catch(e){C.value=e instanceof Error?e.message:v.value.createPaymentFailed,_(`error`,e)}finally{x.value=!1}},Ut=()=>{L.value&&(C.value=void 0,b.value=`checking`,g.plain===`instant`?Z({paymentId:L.value.paymentId}):g.plain===`subscription`&&Z({subscriptionId:L.value.subscriptionId}))},Z=e=>{F.value?.unsubscribe();let t=()=>(0,i.defer)(()=>g.plain===`subscription`?y.value.checkSubscriptionPaymentStatus(e):y.value.checkOnetimePaymentStatus(e)).pipe((0,a.timeout)(15e3),(0,a.retry)({delay:2e3}));F.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=>{if(!L.value&&g.plain===`instant`){let t=e;L.value={paymentId:t.paymentId,orderId:t.orderId,paymentChain:t.chain,paymentToken:t.token,paymentAmount:t.payAmount,receiveAddress:t.receiveAddress,expireAt:t.expireAt},T.value=t.chain,E.value=t.token,G(t.expireAt);let n=!t.tokenAddress,i=Y(t.chain.toLowerCase()),a=t.receiveAddress,s=(0,o.parseUnits)(t.payAmount,t.tokenDecimals),c=n?`${i}:${a}@${t.chainId}?value=${s}`:`${i}:${t.tokenAddress}@${t.chainId}/transfer?address=${a}&uint256=${s}`;r.toDataURL(c,{width:200,margin:2,errorCorrectionLevel:`H`}).then(e=>{D.value=e,b.value=`payment`}).catch(e=>{console.error(`生成二维码失败:`,e),b.value=`payment`})}if(!L.value&&g.plain===`subscription`){let t=e;L.value={subscriptionId:t.subscriptionId,orderId:t.orderId,paymentChain:t.chain,paymentToken:t.token,approveAmount:t.approveAmount,spenderAddress:t.approvedAddress,expireAt:t.expireAt,intervalDays:0,amountOfUsd:t.amountOfUsd},T.value=t.chain,E.value=t.token,G(t.expireAt),D.value=void 0}(e.status===`paid`||e.status===`approved`)&&(b.value=`success`,$(),_(`success`,e)),e.status===`expired`&&(b.value=`expired`,$(),_(`expired`,e)),e.status===`failed`&&(b.value=`failed`,$(),_(`failed`,e))})).subscribe({error:e=>{if(L.value){let t=e instanceof Error?e.message:v.value.checkPaymentStatusFailed;b.value=`error`,C.value=t,$(),_(`error`,e)}},complete:()=>{F.value?.unsubscribe()}})},Wt=async()=>{if(!L.value)return;let e=g.plain===`subscription`?L.value.spenderAddress:L.value.receiveAddress;if(e)try{await navigator.clipboard.writeText(e),M.value=!0,setTimeout(()=>{M.value=!1},2e3)}catch(e){console.error(`复制失败:`,e)}};(0,n.watch)(V,e=>{e.length>0&&(E.value=e[0].symbol)}),(0,n.onMounted)(()=>{Lt(),w.value.length||zt(),Kt()}),(0,n.onUnmounted)(()=>{F.value?.unsubscribe(),K()});let Gt=async()=>{if(R.value)try{await navigator.clipboard.writeText(R.value);let e=M.value;M.value=!0,setTimeout(()=>{M.value=e},2e3)}catch(e){console.error(`复制失败:`,e)}},Q=(e,t)=>{if(!g.ott||typeof window>`u`)return;let n=new URL(window.location.href),r=t===`subscription`?`subscriptionId`:`paymentId`;n.searchParams.set(r,e),window.history.replaceState({},``,n.toString())},$=()=>{if(typeof window>`u`)return;let e=new URL(window.location.href);e.searchParams.delete(`paymentId`),e.searchParams.delete(`subscriptionId`),window.history.replaceState({},``,e.toString())},Kt=async()=>{if(typeof window>`u`)return;let e=new URL(window.location.href);if(g.plain===`instant`){let t=e.searchParams.get(`paymentId`);t&&(b.value=`payment`,Z({paymentId:t}))}if(g.plain===`subscription`){let t=e.searchParams.get(`subscriptionId`);t&&(b.value=`payment`,Z({subscriptionId:t}))}};return(e,t)=>((0,n.openBlock)(),(0,n.createElementBlock)(`div`,u,[b.value===`success`?(0,n.renderSlot)(e.$slots,`success`,{key:0},()=>[(0,n.createElementVNode)(`div`,d,[t[9]||=(0,n.createElementVNode)(`div`,{class:`_cppay-state-success-bg`},[(0,n.createElementVNode)(`div`,{class:`_cppay-state-success-icon`},`✓`)],-1),(0,n.createElementVNode)(`h3`,ee,(0,n.toDisplayString)(m.plain===`subscription`?v.value.authorizationSuccess:v.value.paymentSuccess),1),R.value?((0,n.openBlock)(),(0,n.createElementBlock)(`div`,te,[(0,n.createElementVNode)(`div`,ne,(0,n.toDisplayString)(v.value.transactionHash),1),(0,n.createElementVNode)(`div`,re,[(0,n.createElementVNode)(`code`,ie,(0,n.toDisplayString)(R.value),1),(0,n.createElementVNode)(`button`,{onClick:Gt,class:`_cppay-state-copy-btn`,title:v.value.copyAddress},[...t[8]||=[(0,n.createElementVNode)(`svg`,{viewBox:`0 0 24 24`,fill:`none`,stroke:`currentColor`,"stroke-width":`2`},[(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`}),(0,n.createElementVNode)(`rect`,{x:`8`,y:`2`,width:`8`,height:`4`,rx:`1`,ry:`1`})],-1)]],8,ae)])])):(0,n.createCommentVNode)(``,!0),L.value?((0,n.openBlock)(),(0,n.createElementBlock)(`div`,oe,[(0,n.createElementVNode)(`div`,se,[(0,n.createElementVNode)(`span`,ce,(0,n.toDisplayString)(v.value.orderId),1),(0,n.createElementVNode)(`span`,le,(0,n.toDisplayString)(L.value.orderId),1)]),(0,n.createElementVNode)(`div`,ue,[(0,n.createElementVNode)(`span`,de,(0,n.toDisplayString)(m.plain===`subscription`?v.value.authorizationAmount:v.value.paymentAmount),1),(0,n.createElementVNode)(`span`,fe,(0,n.toDisplayString)(m.plain===`subscription`?`${W(L.value.approveAmount,U(E.value))} ${E.value}`:`${W(L.value.paymentAmount,U(E.value))} ${E.value}`),1)]),(0,n.createElementVNode)(`div`,pe,[(0,n.createElementVNode)(`span`,me,(0,n.toDisplayString)(v.value.paymentNetwork),1),(0,n.createElementVNode)(`span`,he,(0,n.toDisplayString)(L.value.paymentChain),1)]),(0,n.createElementVNode)(`div`,ge,[(0,n.createElementVNode)(`span`,_e,(0,n.toDisplayString)(v.value.paymentToken),1),(0,n.createElementVNode)(`span`,ve,(0,n.toDisplayString)(L.value.paymentToken),1)]),m.plain===`subscription`?((0,n.openBlock)(),(0,n.createElementBlock)(`div`,ye,[(0,n.createElementVNode)(`span`,be,(0,n.toDisplayString)(v.value.renewalInterval),1),(0,n.createElementVNode)(`span`,xe,(0,n.toDisplayString)(L.value.intervalDays)+` `+(0,n.toDisplayString)(v.value.days),1)])):(0,n.createCommentVNode)(``,!0),(0,n.createElementVNode)(`div`,Se,[(0,n.createElementVNode)(`span`,Ce,(0,n.toDisplayString)(m.plain===`subscription`?v.value.subscriptionId:v.value.paymentId),1),(0,n.createElementVNode)(`span`,we,(0,n.toDisplayString)(m.plain===`subscription`?L.value.subscriptionId:L.value.paymentId),1)])])):(0,n.createCommentVNode)(``,!0)])]):b.value===`expired`?(0,n.renderSlot)(e.$slots,`expired`,{key:1},()=>[(0,n.createElementVNode)(`div`,Te,[t[10]||=(0,n.createElementVNode)(`div`,{class:`_cppay-state-expired-bg`},[(0,n.createElementVNode)(`div`,{class:`_cppay-state-expired-icon`},`⏰`)],-1),(0,n.createElementVNode)(`h3`,Ee,(0,n.toDisplayString)(v.value.paymentExpired),1),(0,n.createElementVNode)(`p`,De,(0,n.toDisplayString)(v.value.pleaseInitiatePaymentAgain),1),(0,n.createElementVNode)(`button`,{onClick:t[0]||=()=>{b.value=`select`,$()},disabled:x.value||S.value,class:`_cppay-btn _cppay-btn-primary _cppay-state-btn`},(0,n.toDisplayString)(v.value.returnButton),9,Oe)])]):b.value===`error`?(0,n.renderSlot)(e.$slots,`error`,{key:2},()=>[(0,n.createElementVNode)(`div`,ke,[t[11]||=(0,n.createElementVNode)(`div`,{class:`_cppay-state-error-bg`},[(0,n.createElementVNode)(`div`,{class:`_cppay-state-error-icon`},`!`)],-1),(0,n.createElementVNode)(`h3`,Ae,(0,n.toDisplayString)(C.value||v.value.error),1),(0,n.createElementVNode)(`p`,je,(0,n.toDisplayString)(v.value.checkStatusFailed),1),(0,n.createElementVNode)(`button`,{onClick:t[1]||=()=>{b.value=`select`,$()},disabled:x.value||S.value,class:`_cppay-btn _cppay-btn-primary _cppay-state-btn`},(0,n.toDisplayString)(v.value.returnButton),9,Me)])]):b.value===`failed`?(0,n.renderSlot)(e.$slots,`failed`,{key:3},()=>[(0,n.createElementVNode)(`div`,Ne,[t[12]||=(0,n.createElementVNode)(`div`,{class:`_cppay-state-failed-bg`},[(0,n.createElementVNode)(`div`,{class:`_cppay-state-failed-icon`},`✕`)],-1),(0,n.createElementVNode)(`h3`,Pe,(0,n.toDisplayString)(v.value.paymentFailed),1),(0,n.createElementVNode)(`p`,Fe,(0,n.toDisplayString)(v.value.pleaseInitiatePaymentAgain),1),(0,n.createElementVNode)(`button`,{onClick:t[2]||=()=>{b.value=`select`,$()},disabled:x.value||S.value,class:`_cppay-btn _cppay-btn-primary _cppay-state-btn`},(0,n.toDisplayString)(v.value.returnButton),9,Ie)])]):b.value===`select`?((0,n.openBlock)(),(0,n.createElementBlock)(`div`,Le,[(0,n.renderSlot)(e.$slots,`choose-top`),(0,n.createElementVNode)(`div`,Re,[(0,n.createElementVNode)(`label`,ze,(0,n.toDisplayString)(v.value.paymentNetwork),1),(0,n.createElementVNode)(`div`,Be,[((0,n.openBlock)(!0),(0,n.createElementBlock)(n.Fragment,null,(0,n.renderList)(w.value,e=>((0,n.openBlock)(),(0,n.createElementBlock)(`button`,{key:e.chain,onClick:t=>T.value=e.chain,class:(0,n.normalizeClass)([`_cppay-select-btn`,{"_cppay-selected":T.value===e.chain}])},[e.icon?((0,n.openBlock)(),(0,n.createElementBlock)(`img`,{key:0,src:e.icon,alt:e.chain},null,8,p)):(0,n.createCommentVNode)(``,!0),(0,n.createElementVNode)(`span`,null,(0,n.toDisplayString)(e.chain),1)],10,f))),128))])]),(0,n.createElementVNode)(`div`,Ve,[(0,n.createElementVNode)(`label`,He,(0,n.toDisplayString)(v.value.paymentToken),1),(0,n.createElementVNode)(`div`,Ue,[((0,n.openBlock)(!0),(0,n.createElementBlock)(n.Fragment,null,(0,n.renderList)(V.value,e=>((0,n.openBlock)(),(0,n.createElementBlock)(`button`,{key:e.symbol,onClick:t=>E.value=e.symbol,class:(0,n.normalizeClass)([`_cppay-select-btn`,{"_cppay-selected":E.value===e.symbol}])},[e.icon?((0,n.openBlock)(),(0,n.createElementBlock)(`img`,{key:0,src:e.icon,alt:e.symbol},null,8,Ge)):(0,n.createCommentVNode)(``,!0),(0,n.createElementVNode)(`span`,null,(0,n.toDisplayString)(e.symbol),1)],10,We))),128))])]),(0,n.renderSlot)(e.$slots,`choose-bottom`),(0,n.createElementVNode)(`div`,Ke,[(0,n.createElementVNode)(`div`,qe,[(0,n.createElementVNode)(`div`,Je,[(0,n.createElementVNode)(`span`,Ye,(0,n.toDisplayString)(v.value.paymentAmount),1),(0,n.createElementVNode)(`div`,Xe,[(0,n.createElementVNode)(`div`,Ze,(0,n.toDisplayString)(q.value??`-`)+` `+(0,n.toDisplayString)(E.value??``),1),(0,n.createElementVNode)(`div`,Qe,`≈ $`+(0,n.toDisplayString)(m.amount),1)])])])]),(0,n.createElementVNode)(`div`,$e,[C.value?((0,n.openBlock)(),(0,n.createElementBlock)(`div`,{key:0,class:`_cppay-error-tooltip-wrapper`,onMouseenter:t[3]||=e=>N.value=!0,onMouseleave:t[4]||=e=>N.value=!1},[(0,n.createElementVNode)(`div`,et,[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)(C.value),1)]),N.value?((0,n.openBlock)(),(0,n.createElementBlock)(`div`,tt,(0,n.toDisplayString)(C.value),1)):(0,n.createCommentVNode)(``,!0)],32)):(0,n.createCommentVNode)(``,!0),(0,n.createElementVNode)(`button`,{onClick:X,disabled:!T.value||!E.value||x.value,class:`_cppay-btn _cppay-btn-primary`},(0,n.toDisplayString)(x.value?v.value.processing:v.value.continuePayment),9,nt)])])):((0,n.openBlock)(),(0,n.createElementBlock)(`div`,rt,[D.value?((0,n.openBlock)(),(0,n.createElementBlock)(`div`,it,[(0,n.createElementVNode)(`div`,at,[(0,n.createElementVNode)(`img`,{src:D.value,alt:`Payment QR Code`,class:`_cppay-qr-image`},null,8,ot)])])):(0,n.createCommentVNode)(``,!0),(0,n.createElementVNode)(`div`,st,[H.value?((0,n.openBlock)(),(0,n.createElementBlock)(`div`,ct,[(0,n.createElementVNode)(`div`,lt,[(0,n.createElementVNode)(`div`,ut,[(0,n.createElementVNode)(`div`,dt,(0,n.toDisplayString)(m.plain===`subscription`?v.value.authorizationAmount:v.value.paymentAmount),1),(0,n.createElementVNode)(`div`,ft,[L.value?((0,n.openBlock)(),(0,n.createElementBlock)(`span`,pt,(0,n.toDisplayString)(m.plain===`subscription`?`${W(L.value.approveAmount,U(H.value.symbol))} ${H.value.symbol}`:`${W(L.value.paymentAmount,U(H.value.symbol))} ${H.value.symbol}`),1)):(0,n.createCommentVNode)(``,!0),(0,n.createElementVNode)(`span`,null,`≈ $`+(0,n.toDisplayString)(m.amount),1)])])])])):(0,n.createCommentVNode)(``,!0),(0,n.createElementVNode)(`div`,mt,[(0,n.createElementVNode)(`div`,ht,[(0,n.createElementVNode)(`div`,gt,[(0,n.createElementVNode)(`span`,null,(0,n.toDisplayString)(m.plain===`subscription`?v.value.authorizationContractAddress:v.value.paymentAddress),1),j.value?((0,n.openBlock)(),(0,n.createElementBlock)(`span`,_t,`⏰ `+(0,n.toDisplayString)(j.value),1)):(0,n.createCommentVNode)(``,!0)]),(0,n.createElementVNode)(`div`,vt,[L.value?((0,n.openBlock)(),(0,n.createElementBlock)(`code`,yt,(0,n.toDisplayString)(m.plain===`subscription`?L.value.spenderAddress:L.value.receiveAddress),1)):(0,n.createCommentVNode)(``,!0),(0,n.createElementVNode)(`button`,{onClick:Wt,class:(0,n.normalizeClass)([`_cppay-copy-btn`,{"_cppay-copy-success":M.value}]),title:M.value?v.value.copied:v.value.copyAddress},[M.value?((0,n.openBlock)(),(0,n.createElementBlock)(`svg`,St,[...t[15]||=[(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`,xt,[...t[14]||=[(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,bt)])])]),m.plain===`subscription`?((0,n.openBlock)(),(0,n.createElementBlock)(`div`,Ct,[(0,n.createElementVNode)(`div`,wt,(0,n.toDisplayString)(v.value.subscriptionNotice),1),(0,n.createElementVNode)(`div`,Tt,(0,n.toDisplayString)(v.value.subscriptionNoticeMessage),1)])):(0,n.createCommentVNode)(``,!0)]),C.value?((0,n.openBlock)(),(0,n.createElementBlock)(`div`,{key:1,class:`_cppay-error-tooltip-wrapper`,onMouseenter:t[5]||=e=>N.value=!0,onMouseleave:t[6]||=e=>N.value=!1},[(0,n.createElementVNode)(`div`,Et,[t[16]||=(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.value),1)]),N.value?((0,n.openBlock)(),(0,n.createElementBlock)(`div`,Dt,(0,n.toDisplayString)(C.value),1)):(0,n.createCommentVNode)(``,!0)],32)):(0,n.createCommentVNode)(``,!0),S.value?(0,n.createCommentVNode)(``,!0):((0,n.openBlock)(),(0,n.createElementBlock)(`div`,Ot,[O.value?((0,n.openBlock)(),(0,n.createElementBlock)(n.Fragment,{key:1},[(0,n.createElementVNode)(`button`,{onClick:Ht,disabled:x.value,class:`_cppay-btn _cppay-btn-primary`},(0,n.toDisplayString)(x.value?m.plain===`subscription`?v.value.authorizing:v.value.processing:m.plain===`subscription`?v.value.walletAuthorize:v.value.walletPay),9,At),(0,n.createElementVNode)(`button`,{onClick:z,disabled:x.value,class:`_cppay-btn _cppay-wallet-address-btn`,title:v.value.clickToModifyWallet},[(0,n.createElementVNode)(`span`,Mt,(0,n.toDisplayString)(O.value.slice(0,10))+`...`+(0,n.toDisplayString)(O.value.slice(-4)),1),t[17]||=(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,jt)],64)):((0,n.openBlock)(),(0,n.createElementBlock)(`button`,{key:0,onClick:z,disabled:k.value,class:`_cppay-btn _cppay-btn-secondary _cppay-connect-wallet-btn`},[(0,n.createElementVNode)(`span`,null,(0,n.toDisplayString)(k.value?v.value.processing:v.value.connectWallet),1)],8,kt))])),(0,n.createElementVNode)(`div`,Nt,[(0,n.createElementVNode)(`button`,{onClick:Ut,disabled:S.value,class:`_cppay-btn _cppay-btn-primary`},[S.value?((0,n.openBlock)(),(0,n.createElementBlock)(n.Fragment,{key:0},[t[18]||=(0,n.createElementVNode)(`svg`,{class:`_cppay-spinner`,viewBox:`0 0 24 24`,fill:`none`,xmlns:`http://www.w3.org/2000/svg`},[(0,n.createElementVNode)(`circle`,{cx:`12`,cy:`12`,r:`10`,stroke:`currentColor`,"stroke-width":`3`,"stroke-opacity":`0.25`}),(0,n.createElementVNode)(`path`,{d:`M12 2a10 10 0 0 1 10 10`,stroke:`currentColor`,"stroke-width":`3`,"stroke-linecap":`round`})],-1),(0,n.createTextVNode)(` `+(0,n.toDisplayString)(v.value.checking),1)],64)):((0,n.openBlock)(),(0,n.createElementBlock)(n.Fragment,{key:1},[(0,n.createTextVNode)((0,n.toDisplayString)(v.value.completedPayment),1)],64))],8,Pt)]),t[19]||=(0,n.createElementVNode)(`hr`,{class:`_cppay-divider`},null,-1),(0,n.createElementVNode)(`div`,Ft,[(0,n.createElementVNode)(`button`,{onClick:t[7]||=()=>{F.value?.unsubscribe(),b.value=`select`,$()},disabled:x.value||S.value,class:`_cppay-btn _cppay-btn-text`},(0,n.toDisplayString)(v.value.changePaymentMethod),9,It)])]))]))}}),h=m,g={class:`_cppay-dialog`},_={class:`_cppay-header`},v={class:`_cppay-title`},y=[`disabled`],b=(0,n.defineComponent)({__name:`PaymentDialog`,props:{modelValue:{type:Boolean},ott:{},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`,g,[(0,n.createElementVNode)(`div`,_,[(0,n.createElementVNode)(`h2`,v,(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,y)]),t.modelValue?((0,n.openBlock)(),(0,n.createBlock)(h,{key:0,apikey:t.apikey,ott:t.ott,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`)]),success:(0,n.withCtx)(()=>[(0,n.renderSlot)(e.$slots,`success`)]),failed:(0,n.withCtx)(()=>[(0,n.renderSlot)(e.$slots,`failed`)]),error:(0,n.withCtx)(()=>[(0,n.renderSlot)(e.$slots,`error`)]),expired:(0,n.withCtx)(()=>[(0,n.renderSlot)(e.$slots,`expired`)]),_:3},8,[`apikey`,`ott`,`orderId`,`amount`,`plain`,`intervalDays`,`locale`])):(0,n.createCommentVNode)(``,!0)])])):(0,n.createCommentVNode)(``,!0)}}),x=b,S=(0,n.ref)({open:!1,options:null});const C=e=>{S.value.options=e,S.value.open=!0},w=()=>{S.value.open=!1};var T=()=>{S.value.open=!1},E=e=>{S.value.options?.onSuccess?.(e)},D=e=>{S.value.options?.onExpired?.(e)},O=e=>{S.value.options?.onFailed?.(e)},k=e=>{S.value.options?.onError?.(e)};const A={install(e){e.config.globalProperties.$showPayment=C,e.config.globalProperties.$closePayment=w;let t=document.createElement(`div`);document.body.appendChild(t),(0,n.createApp)({setup(){return()=>S.value.options?(0,n.h)(x,{modelValue:S.value.open,"onUpdate:modelValue":e=>{S.value.open=e,e||T()},...S.value.options,onSuccess:E,onExpired:D,onFailed:O,onError:k}):null}}).mount(t)}},j=()=>({showPayment:C,closePayment:w});e.n(e.r),exports.CppayPlugin=A,exports.PaymentContent=h,exports.PaymentDialog=x,exports.showPayment=C,exports.useCppayPayment=j;
package/dist/vue.js CHANGED
@@ -539,7 +539,7 @@ var _hoisted_1$1 = { class: "_cppay-content" }, _hoisted_2$1 = { class: "_cppay-
539
539
  n[19] ||= createElementVNode("hr", { class: "_cppay-divider" }, null, -1),
540
540
  createElementVNode("div", _hoisted_94, [createElementVNode("button", {
541
541
  onClick: n[7] ||= () => {
542
- p.value = "select", Q();
542
+ k.value?.unsubscribe(), p.value = "select", Q();
543
543
  },
544
544
  disabled: m.value || g.value,
545
545
  class: "_cppay-btn _cppay-btn-text"
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "cppay-sdk",
3
- "version": "0.0.5",
3
+ "version": "0.0.6",
4
4
  "type": "module",
5
5
  "scripts": {
6
6
  "dev": "vite",
@@ -99,4 +99,4 @@
99
99
  "react",
100
100
  "vue"
101
101
  ]
102
- }
102
+ }