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

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.
@@ -14,7 +14,7 @@ const CHAIN_ICONS = {
14
14
  TRX: "https://raw.githubusercontent.com/trustwallet/assets/master/blockchains/tron/info/logo.png",
15
15
  SOL: "https://raw.githubusercontent.com/trustwallet/assets/master/blockchains/solana/info/logo.png"
16
16
  };
17
- var BASE_URL = "http://192.168.0.162:8000", request = async (e, t, r) => {
17
+ var BASE_URL = "http://192.168.0.163:8000", request = async (e, t, r) => {
18
18
  let i = Object.assign({ timeout: 15e3 }, r), a = new AbortController(), o = setTimeout(() => a.abort(), i.timeout);
19
19
  try {
20
20
  let r = await fetch(new URL(e, BASE_URL), {
@@ -1 +1 @@
1
- const e={Ethereum:`https://raw.githubusercontent.com/trustwallet/assets/master/blockchains/ethereum/info/logo.png`,BSC:`https://raw.githubusercontent.com/trustwallet/assets/master/blockchains/binance/info/logo.png`,"bsc-testnet":`https://raw.githubusercontent.com/trustwallet/assets/master/blockchains/binance/info/logo.png`,Tron:`https://raw.githubusercontent.com/trustwallet/assets/master/blockchains/tron/info/logo.png`,Polygon:`https://raw.githubusercontent.com/trustwallet/assets/master/blockchains/polygon/info/logo.png`,Solana:`https://raw.githubusercontent.com/trustwallet/assets/master/blockchains/solana/info/logo.png`},t={USDT:`https://raw.githubusercontent.com/trustwallet/assets/master/blockchains/ethereum/assets/0xdAC17F958D2ee523a2206206994597C13D831ec7/logo.png`,USDC:`https://raw.githubusercontent.com/trustwallet/assets/master/blockchains/ethereum/assets/0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48/logo.png`,ETH:`https://raw.githubusercontent.com/trustwallet/assets/master/blockchains/ethereum/info/logo.png`,BNB:`https://raw.githubusercontent.com/trustwallet/assets/master/blockchains/binance/info/logo.png`,tBNB:`https://raw.githubusercontent.com/trustwallet/assets/master/blockchains/binance/info/logo.png`,TRX:`https://raw.githubusercontent.com/trustwallet/assets/master/blockchains/tron/info/logo.png`,SOL:`https://raw.githubusercontent.com/trustwallet/assets/master/blockchains/solana/info/logo.png`};var n=`http://192.168.0.162:8000`,r=async(e,t,r)=>{let i=Object.assign({timeout:15e3},r),a=new AbortController,o=setTimeout(()=>a.abort(),i.timeout);try{let r=await fetch(new URL(e,n),{signal:a.signal,...t});clearTimeout(o);let i=r.headers.get(`Content-Type`)??``;if(i.includes(`json`))return await r.json();try{return await r.json()}catch{throw Error(`URL: ${e}, Unsupport Content Type: ${i}`)}}catch(t){throw clearTimeout(o),t instanceof DOMException&&t.name===`AbortError`?Error(`URL: ${e}, Request timeout after ${i.timeout}ms`):t}},i=0,a=async(e,t)=>{let n=new URLSearchParams(t.params),a=await r(`${t.url}${n.size?`?${n.toString()}`:``}`,{method:t.method??`get`,headers:{Authorization:e,...t.headers},body:t.data?JSON.stringify(t.data):void 0});if(a.code!==i)throw Error(`Request ${t.url} Failed. ${a.message}`);return a.data},o=class{authorization;constructor(e,t){this.authorization=e?`ApiKey ${e}`:`OTT ${t}`}async getSupportedChains(){return(await a(this.authorization,{url:`/api/payment/token`})).map(e=>({chain:e.chain,chainId:e.chain_id,tokenSymbol:e.token_symbol,tokenDecimals:e.token_decimals,tokenAddress:e.token_address,tokenPrice:e.token_price}))}async createOnetimePayment(e,t,n,r){let i={chain:e,token:t,order_no:n,amount:r},o=await a(this.authorization,{url:`/api/payment/create`,method:`post`,data:i});return{paymentId:o.payment_id,paymentAmount:o.pay_amount,receiveAddress:o.receive_address,expireAt:o.expire_at}}async createSubscriptionPayment(e,t,n,r,i){let o={chain:e,token:t,order_no:n,amount_usd:r,renewal_days:i},s=await a(this.authorization,{url:`/api/subscription/create`,method:`post`,data:o});return{subscriptionId:s.subscription_id,approveAmount:s.approved_amount,spenderAddress:s.contract_address,expireAt:s.expire_at}}async createX402Payment(){throw Error(`Unsupported payment mode`)}async checkOnetimePaymentStatus(e){let t=`orderId`in e?{order_no:e.orderId}:{payment_id:e.paymentId},n=await a(this.authorization,{url:`/api/payment/query`,params:t});return{orderId:n.order_no,paymentId:n.payment_id,chain:n.chain,token:n.token,baseAmount:n.base_amount,payAmount:n.pay_amount,receiveAddress:n.receive_address,expireAt:n.expire_at,status:n.status}}async checkSubcriptionPaymentStatus(e){let t=`orderId`in e?{order_no:e.orderId}:{subscription_id:e.subscriptionId},n=await a(this.authorization,{url:`/api/subscription/query`,params:t});return{orderId:n.order_no,subscriptionId:n.subscription_id,chain:n.chain,token:n.token,approvedAddress:n.approved_contract_address,txHash:n.approved_tx_hash,approveAmount:n.approved_amount,amountOfUsd:n.amount_usd,expireAt:n.expire_at,status:n.subscription_status}}async getSubcriptionPayments(e){let t={subscription_id:e},n=await a(this.authorization,{url:`/api/subscription/payments`,params:t});return{total:n.total,payments:(n.payments??[]).map(e=>({orderId:e.order_no,subscriptionId:e.subscription_id,chain:e.chain,token:e.token,txHash:e.tx_hash,payAmount:e.pay_amount,receiveAddress:e.receive_address,status:e.status,errorMessage:e.error_message}))}}async checkX402PaymentStatus(){throw Error(`Unsupported payment mode`)}},s=class{api;constructor(e,t){this.api=new o(e,t)}async getSupportedChains(){let n=(await this.api.getSupportedChains()).reduce((n,r)=>{let i=n[r.chain]??{chain:r.chain,chainId:r.chainId,tokens:[],icon:e[r.chain]};return i.tokens.push({symbol:r.tokenSymbol,decimals:r.tokenDecimals,address:r.tokenAddress,icon:t[r.tokenSymbol],price:r.tokenPrice}),n[r.chain]=i,n},{});return Object.values(n)}async createPayment(e,t){switch(e){case`one-time`:return this.createOnetimePayment(t);case`subscription`:return this.createSubscriptionPayment(t)}}async checkPaymentStatus(e,t){switch(e){case`one-time`:return this.checkOnetimePaymentStatus(t);case`subscription`:return this.checkSubscriptionPaymentStatus(t)}}async createOnetimePayment(e){let t=await this.api.createOnetimePayment(e.paymentChain,e.paymentToken,e.orderId,e.amount);return{...e,...t}}async createSubscriptionPayment(e){let t=await this.api.createSubscriptionPayment(e.paymentChain,e.paymentToken,e.orderId,e.amountOfUsd,e.intervalDays);return{...e,...t}}async checkOnetimePaymentStatus(e){return{...await this.api.checkOnetimePaymentStatus(e)}}async checkSubscriptionPaymentStatus(e){return{...await this.api.checkSubcriptionPaymentStatus(e)}}},c=s;Object.defineProperty(exports,`n`,{enumerable:!0,get:function(){return e}}),Object.defineProperty(exports,`r`,{enumerable:!0,get:function(){return t}}),Object.defineProperty(exports,`t`,{enumerable:!0,get:function(){return c}});
1
+ const e={Ethereum:`https://raw.githubusercontent.com/trustwallet/assets/master/blockchains/ethereum/info/logo.png`,BSC:`https://raw.githubusercontent.com/trustwallet/assets/master/blockchains/binance/info/logo.png`,"bsc-testnet":`https://raw.githubusercontent.com/trustwallet/assets/master/blockchains/binance/info/logo.png`,Tron:`https://raw.githubusercontent.com/trustwallet/assets/master/blockchains/tron/info/logo.png`,Polygon:`https://raw.githubusercontent.com/trustwallet/assets/master/blockchains/polygon/info/logo.png`,Solana:`https://raw.githubusercontent.com/trustwallet/assets/master/blockchains/solana/info/logo.png`},t={USDT:`https://raw.githubusercontent.com/trustwallet/assets/master/blockchains/ethereum/assets/0xdAC17F958D2ee523a2206206994597C13D831ec7/logo.png`,USDC:`https://raw.githubusercontent.com/trustwallet/assets/master/blockchains/ethereum/assets/0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48/logo.png`,ETH:`https://raw.githubusercontent.com/trustwallet/assets/master/blockchains/ethereum/info/logo.png`,BNB:`https://raw.githubusercontent.com/trustwallet/assets/master/blockchains/binance/info/logo.png`,tBNB:`https://raw.githubusercontent.com/trustwallet/assets/master/blockchains/binance/info/logo.png`,TRX:`https://raw.githubusercontent.com/trustwallet/assets/master/blockchains/tron/info/logo.png`,SOL:`https://raw.githubusercontent.com/trustwallet/assets/master/blockchains/solana/info/logo.png`};var n=`http://192.168.0.163:8000`,r=async(e,t,r)=>{let i=Object.assign({timeout:15e3},r),a=new AbortController,o=setTimeout(()=>a.abort(),i.timeout);try{let r=await fetch(new URL(e,n),{signal:a.signal,...t});clearTimeout(o);let i=r.headers.get(`Content-Type`)??``;if(i.includes(`json`))return await r.json();try{return await r.json()}catch{throw Error(`URL: ${e}, Unsupport Content Type: ${i}`)}}catch(t){throw clearTimeout(o),t instanceof DOMException&&t.name===`AbortError`?Error(`URL: ${e}, Request timeout after ${i.timeout}ms`):t}},i=0,a=async(e,t)=>{let n=new URLSearchParams(t.params),a=await r(`${t.url}${n.size?`?${n.toString()}`:``}`,{method:t.method??`get`,headers:{Authorization:e,...t.headers},body:t.data?JSON.stringify(t.data):void 0});if(a.code!==i)throw Error(`Request ${t.url} Failed. ${a.message}`);return a.data},o=class{authorization;constructor(e,t){this.authorization=e?`ApiKey ${e}`:`OTT ${t}`}async getSupportedChains(){return(await a(this.authorization,{url:`/api/payment/token`})).map(e=>({chain:e.chain,chainId:e.chain_id,tokenSymbol:e.token_symbol,tokenDecimals:e.token_decimals,tokenAddress:e.token_address,tokenPrice:e.token_price}))}async createOnetimePayment(e,t,n,r){let i={chain:e,token:t,order_no:n,amount:r},o=await a(this.authorization,{url:`/api/payment/create`,method:`post`,data:i});return{paymentId:o.payment_id,paymentAmount:o.pay_amount,receiveAddress:o.receive_address,expireAt:o.expire_at}}async createSubscriptionPayment(e,t,n,r,i){let o={chain:e,token:t,order_no:n,amount_usd:r,renewal_days:i},s=await a(this.authorization,{url:`/api/subscription/create`,method:`post`,data:o});return{subscriptionId:s.subscription_id,approveAmount:s.approved_amount,spenderAddress:s.contract_address,expireAt:s.expire_at}}async createX402Payment(){throw Error(`Unsupported payment mode`)}async checkOnetimePaymentStatus(e){let t=`orderId`in e?{order_no:e.orderId}:{payment_id:e.paymentId},n=await a(this.authorization,{url:`/api/payment/query`,params:t});return{orderId:n.order_no,paymentId:n.payment_id,chain:n.chain,token:n.token,baseAmount:n.base_amount,payAmount:n.pay_amount,receiveAddress:n.receive_address,expireAt:n.expire_at,status:n.status}}async checkSubcriptionPaymentStatus(e){let t=`orderId`in e?{order_no:e.orderId}:{subscription_id:e.subscriptionId},n=await a(this.authorization,{url:`/api/subscription/query`,params:t});return{orderId:n.order_no,subscriptionId:n.subscription_id,chain:n.chain,token:n.token,approvedAddress:n.approved_contract_address,txHash:n.approved_tx_hash,approveAmount:n.approved_amount,amountOfUsd:n.amount_usd,expireAt:n.expire_at,status:n.subscription_status}}async getSubcriptionPayments(e){let t={subscription_id:e},n=await a(this.authorization,{url:`/api/subscription/payments`,params:t});return{total:n.total,payments:(n.payments??[]).map(e=>({orderId:e.order_no,subscriptionId:e.subscription_id,chain:e.chain,token:e.token,txHash:e.tx_hash,payAmount:e.pay_amount,receiveAddress:e.receive_address,status:e.status,errorMessage:e.error_message}))}}async checkX402PaymentStatus(){throw Error(`Unsupported payment mode`)}},s=class{api;constructor(e,t){this.api=new o(e,t)}async getSupportedChains(){let n=(await this.api.getSupportedChains()).reduce((n,r)=>{let i=n[r.chain]??{chain:r.chain,chainId:r.chainId,tokens:[],icon:e[r.chain]};return i.tokens.push({symbol:r.tokenSymbol,decimals:r.tokenDecimals,address:r.tokenAddress,icon:t[r.tokenSymbol],price:r.tokenPrice}),n[r.chain]=i,n},{});return Object.values(n)}async createPayment(e,t){switch(e){case`one-time`:return this.createOnetimePayment(t);case`subscription`:return this.createSubscriptionPayment(t)}}async checkPaymentStatus(e,t){switch(e){case`one-time`:return this.checkOnetimePaymentStatus(t);case`subscription`:return this.checkSubscriptionPaymentStatus(t)}}async createOnetimePayment(e){let t=await this.api.createOnetimePayment(e.paymentChain,e.paymentToken,e.orderId,e.amount);return{...e,...t}}async createSubscriptionPayment(e){let t=await this.api.createSubscriptionPayment(e.paymentChain,e.paymentToken,e.orderId,e.amountOfUsd,e.intervalDays);return{...e,...t}}async checkOnetimePaymentStatus(e){return{...await this.api.checkOnetimePaymentStatus(e)}}async checkSubscriptionPaymentStatus(e){return{...await this.api.checkSubcriptionPaymentStatus(e)}}},c=s;Object.defineProperty(exports,`n`,{enumerable:!0,get:function(){return e}}),Object.defineProperty(exports,`r`,{enumerable:!0,get:function(){return t}}),Object.defineProperty(exports,`t`,{enumerable:!0,get:function(){return c}});
package/dist/index.cjs CHANGED
@@ -1 +1 @@
1
- const e=require(`./cppay-BYRjTzRF.cjs`);exports.CHAIN_ICONS=e.n,exports.Cppay=e.t,exports.TOKEN_ICONS=e.r;
1
+ const e=require(`./cppay-GXgivhbP.cjs`);exports.CHAIN_ICONS=e.n,exports.Cppay=e.t,exports.TOKEN_ICONS=e.r;
package/dist/index.js CHANGED
@@ -1,2 +1,2 @@
1
- import { n as CHAIN_ICONS, r as TOKEN_ICONS, t as cppay_default } from "./cppay-C_gp2ZZ3.js";
1
+ import { n as CHAIN_ICONS, r as TOKEN_ICONS, t as cppay_default } from "./cppay-DnoMkyVy.js";
2
2
  export { CHAIN_ICONS, cppay_default as Cppay, TOKEN_ICONS };
package/dist/react.cjs CHANGED
@@ -1 +1 @@
1
- const e=require(`./locales-DAKREZkH.cjs`),t=require(`./cppay-BYRjTzRF.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,locale:_=`zh-CN`,onSuccess:v,onExpired:y,onFailed:b,onError:x,Slots:S,paymentStep:C,onPaymentStepChange:w,loading:T=!1,isCheckingPayment:E=!1,error:D,onErrorChange:O})=>{let k=(0,l.useMemo)(()=>new t.t(d,f),[d,f]),A=(0,l.useMemo)(()=>e.t(_),[_]),[j,ee]=(0,l.useState)([]),[M,N]=(0,l.useState)(),[P,te]=(0,l.useState)(),[ne,F]=(0,l.useState)(),[I,L]=(0,l.useState)(),[re,ie]=(0,l.useState)(!1),[R,z]=(0,l.useState)(),[B,ae]=(0,l.useState)(``),[V,oe]=(0,l.useState)(!1),[se,H]=(0,l.useState)(!1),U=(0,l.useRef)(null),W=(0,l.useRef)(null),G=(0,l.useRef)(null);(0,l.useEffect)(()=>{typeof window<`u`&&!U.current&&(U.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}}),L(U.current.getAddress()),z(U.current.getProvider(`eip155`)),U.current.subscribeAccount(e=>{e.isConnected?L(e.address):(L(void 0),z(void 0))}),U.current.subscribeProviders(e=>{let t=e?.eip155;z(t)}))},[]);let ce=async()=>{try{ie(!0),O?.(void 0),U.current&&await U.current.open()}catch(e){console.error(`钱包连接失败:`,e);let t=e instanceof Error?e.message:A.walletConnectionFailed;O?.(t),x?.(e)}finally{ie(!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+$/,``)},le=e=>{if(e<=0)return A.expired;let t=Math.floor(e/3600),n=Math.floor(e%3600/60),r=e%60;return t>0?`${t}${A.hours}${n}${A.minutes}${r}${A.seconds}`:`${n}${A.minutes}${r}${A.seconds}`},ue=e=>{G.current&&clearInterval(G.current);let t=()=>{let t=e-Math.floor(Date.now()/1e3);ae(le(t)),t<=0&&(w(`expired`),de())};t(),G.current=setInterval(t,1e3)},de=()=>{G.current&&=(clearInterval(G.current),null)},Z=(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]),fe=async()=>{try{O?.(void 0);let e=await k.getSupportedChains();ee(e),e.length>0&&N(e[0].chain)}catch(e){let t=e instanceof Error?e.message:A.loadPaymentNetworkFailed;O?.(t),x?.(e)}},pe=async e=>{if(R)try{await R.request({method:`wallet_switchEthereumChain`,params:[{chainId:`0x${e.toString(16)}`}]})}catch(e){throw e.code===4902?Error(A.pleaseAddNetwork):e}},me=async()=>{if(!(!I||!R||!Q.current||!J||!K))try{let e=Q.current;await pe(K.chainId);let t=(0,a.createWalletClient)({account:I,transport:(0,a.custom)(R)});J.address?await t.writeContract({address:J.address,abi:[{name:`transfer`,type:`function`,stateMutability:`nonpayable`,inputs:[{name:`to`,type:`address`},{name:`amount`,type:`uint256`}],outputs:[{type:`bool`}]}],functionName:`transfer`,args:[e.receiveAddress,(0,a.parseUnits)(e.paymentAmount,J.decimals)],chain:null}):await t.sendTransaction({to:e.receiveAddress,value:(0,a.parseUnits)(e.paymentAmount,J.decimals),chain:null}),F(void 0)}catch(e){console.error(`钱包支付失败:`,e);let t=e instanceof Error?e.message:A.walletPaymentFailed;O?.(t),x?.(e)}},he=async()=>{if(!(!I||!R||!Q.current||!J||!K))try{let e=Q.current;await pe(K.chainId);let t=(0,a.createWalletClient)({account:I,transport:(0,a.custom)(R)});if(!J.address)throw Error(A.subscriptionDoesNotSupportNative);await t.writeContract({address:J.address,abi:[{name:`approve`,type:`function`,stateMutability:`nonpayable`,inputs:[{name:`spender`,type:`address`},{name:`amount`,type:`uint256`}],outputs:[{type:`bool`}]}],functionName:`approve`,args:[e.spenderAddress,(0,a.parseUnits)(e.approveAmount,J.decimals)],chain:null}),F(void 0)}catch(e){console.error(`钱包授权失败:`,e);let t=e instanceof Error?e.message:A.walletPaymentFailed;O?.(t),x?.(e)}},ge=async()=>{if(!I){let e=A.pleaseConnectWallet;O?.(e),x?.(Error(e));return}p===`one-time`?await me():p===`subscription`&&await he()},Q=(0,l.useRef)(null),_e=async()=>{if(!(!M||!P))try{O?.(void 0);let e=``;p===`one-time`?(Q.current=await k.createOnetimePayment({paymentChain:M,paymentToken:P,orderId:m,amount:Z}),e=`${M.toLowerCase()}:${Q.current.receiveAddress}?amount=${Q.current.paymentAmount}`,ue(Q.current.expireAt),$({paymentId:Q.current.paymentId})):p===`subscription`&&(Q.current=await k.createSubscriptionPayment({paymentChain:M,paymentToken:P,orderId:m,amountOfUsd:Z,intervalDays:g||30}),e=`${M.toLowerCase()}:${Q.current.spenderAddress}?amount=${Q.current.approveAmount}`,ue(Q.current.expireAt),$({subscriptionId:Q.current.subscriptionId})),w(`payment`),F(await n.toDataURL(e,{width:200,margin:2,errorCorrectionLevel:`H`}))}catch(e){let t=e instanceof Error?e.message:A.createPaymentFailed;O?.(t),x?.(e)}},$=e=>{W.current?.unsubscribe();let t=()=>(0,r.defer)(()=>p===`subscription`?k.checkSubscriptionPaymentStatus(e):k.checkOnetimePaymentStatus(e)).pipe((0,i.timeout)(15e3),(0,i.retry)({delay:2e3}));W.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=>{(e.status===`paid`||e.status===`approved`)&&(w(`success`),v?.(e)),e.status===`expired`&&(w(`expired`),y?.(e)),e.status===`failed`&&(w(`failed`),b?.(e))})).subscribe({error:e=>{if(Q.current){let t=e instanceof Error?e.message:A.checkPaymentStatusFailed;w(`error`),O?.(t),x?.(e)}},complete:()=>{W.current?.unsubscribe()}})};return(0,l.useEffect)(()=>{j.length===0&&fe()},[]),(0,l.useEffect)(()=>{q.length>0&&te(q[0].symbol)},[q]),(0,l.useEffect)(()=>(m&&$({orderId:m}),()=>{W.current?.unsubscribe(),de()}),[m]),(0,u.jsx)(`div`,{className:`_cppay-content`,children:C===`success`?(0,u.jsxs)(`div`,{className:`_cppay-state-container`,children:[(0,u.jsx)(`div`,{className:`_cppay-state-icon`,children:`✅`}),(0,u.jsx)(`h3`,{className:`_cppay-state-title`,children:p===`subscription`?A.authorizationSuccess:A.paymentSuccess}),(0,u.jsx)(`p`,{className:`_cppay-state-message`,children:p===`subscription`?A.subscriptionActivated:A.transactionCompleted})]}):C===`expired`?(0,u.jsxs)(`div`,{className:`_cppay-state-container`,children:[(0,u.jsx)(`div`,{className:`_cppay-state-icon`,children:`⏰`}),(0,u.jsx)(`h3`,{className:`_cppay-state-title`,children:A.paymentExpired}),(0,u.jsx)(`button`,{onClick:()=>w(`select`),disabled:T||E,className:`_cppay-btn _cppay-btn-text`,children:A.returnButton})]}):C===`error`?(0,u.jsxs)(`div`,{className:`_cppay-state-container`,children:[(0,u.jsx)(`div`,{className:`_cppay-state-icon`,children:`❌`}),(0,u.jsx)(`h3`,{className:`_cppay-state-title`,children:D||A.error})]}):C===`failed`?(0,u.jsxs)(`div`,{className:`_cppay-state-container`,children:[(0,u.jsx)(`div`,{className:`_cppay-state-icon`,children:`❌`}),(0,u.jsx)(`h3`,{className:`_cppay-state-title`,children:A.paymentFailed})]}):C===`select`?(0,u.jsxs)(`div`,{children:[S?.ChooseTop,(0,u.jsxs)(`div`,{className:`_cppay-section`,children:[(0,u.jsx)(`label`,{className:`_cppay-label`,children:A.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:A.paymentToken}),(0,u.jsx)(`div`,{className:`_cppay-grid`,children:q.map(e=>(0,u.jsxs)(`button`,{onClick:()=>te(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))})]}),S?.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:A.paymentAmount}),(0,u.jsxs)(`div`,{className:`_cppay-price-amount`,children:[(0,u.jsxs)(`div`,{className:`_cppay-price-main`,children:[Z??`-`,` `,P??``]}),(0,u.jsxs)(`div`,{className:`_cppay-price-sub`,children:[`≈ $`,h]})]})]})})}),(0,u.jsxs)(`div`,{className:`_cppay-section`,children:[D&&(0,u.jsxs)(`div`,{className:`_cppay-error-tooltip-wrapper`,onMouseEnter:()=>H(!0),onMouseLeave:()=>H(!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:D})]}),se&&(0,u.jsx)(`div`,{className:`_cppay-error-tooltip-full`,children:D})]}),(0,u.jsx)(`button`,{onClick:_e,disabled:!M||!P||T,className:`_cppay-btn _cppay-btn-primary`,children:T?A.processing:A.continuePayment})]})]}):(0,u.jsxs)(`div`,{children:[(0,u.jsx)(`div`,{className:`_cppay-qr-container`,children:(0,u.jsx)(`div`,{className:`_cppay-qr-code`,children:ne&&(0,u.jsx)(`img`,{src:ne,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`?A.authorizationAmount:A.paymentAmount}),(0,u.jsxs)(`div`,{className:`_cppay-info-value _cppay-info-value-flex`,children:[(0,u.jsx)(`span`,{children:p===`subscription`?`${X(Q.current.approveAmount,Y(J.symbol))} ${J.symbol}`:`${X(Q.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`?A.authorizationContractAddress:A.paymentAddress}),B&&(0,u.jsxs)(`span`,{className:`_cppay-countdown`,children:[`⏰ `,B]})]}),(0,u.jsxs)(`div`,{className:`_cppay-address-row`,children:[(0,u.jsx)(`code`,{children:p===`subscription`?Q.current.spenderAddress:Q.current.receiveAddress}),(0,u.jsx)(`button`,{onClick:async()=>{if(!Q.current)return;let e=p===`subscription`?Q.current.spenderAddress:Q.current.receiveAddress;if(e)try{await navigator.clipboard.writeText(e),oe(!0),setTimeout(()=>{oe(!1)},2e3)}catch(e){console.error(`复制失败:`,e)}},className:`_cppay-copy-btn ${V?`_cppay-copy-success`:``}`,title:V?A.copied:A.copyAddress,children:V?(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:A.subscriptionNotice}),(0,u.jsx)(`div`,{className:`_cppay-info-value _cppay-subscription-message`,children:A.subscriptionNoticeMessage})]})]}),D&&(0,u.jsxs)(`div`,{className:`_cppay-error-tooltip-wrapper`,onMouseEnter:()=>H(!0),onMouseLeave:()=>H(!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:D})]}),se&&(0,u.jsx)(`div`,{className:`_cppay-error-tooltip-full`,children:D})]}),!E&&(0,u.jsx)(`div`,{className:`_cppay-section`,children:I?(0,u.jsxs)(u.Fragment,{children:[(0,u.jsx)(`button`,{onClick:ge,disabled:T,className:`_cppay-btn _cppay-btn-primary`,children:T?p===`subscription`?A.authorizing:A.processing:p===`subscription`?`💳 ${A.connectWallet}`:`💳 ${A.walletPay}`}),(0,u.jsxs)(`button`,{onClick:ce,disabled:T,className:`_cppay-btn _cppay-wallet-address-btn`,title:A.clickToModifyWallet,children:[(0,u.jsxs)(`span`,{className:`_cppay-wallet-address-text`,children:[I.slice(0,10),`...`,I.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:ce,disabled:re,className:`_cppay-btn _cppay-btn-secondary _cppay-connect-wallet-btn`,children:(0,u.jsx)(`span`,{children:re?A.processing:`💳 ${A.connectWallet}`})})}),(0,u.jsx)(`div`,{className:`_cppay-section`,children:(0,u.jsx)(`button`,{onClick:()=>{w(`payment`)},disabled:E,className:`_cppay-btn _cppay-btn-primary`,children:E?A.checking:A.completedPayment})}),(0,u.jsx)(`hr`,{className:`_cppay-divider`}),(0,u.jsx)(`div`,{className:`_cppay-section`,children:(0,u.jsx)(`button`,{onClick:()=>w(`select`),disabled:T||E,className:`_cppay-btn _cppay-btn-text`,children:A.changePaymentMethod})})]})})},f=d,p=({open:t,onClose:n,ott:r,apikey:i,plain:a,orderId:o,amount:s,intervalDays:c,locale:d,onExpired:p,onSuccess:m,onFailed:h,onError:g,Slots:_})=>{let[v,y]=(0,l.useState)(`select`),[b,x]=(0,l.useState)(!1),[S,C]=(0,l.useState)(!1),[w,T]=(0,l.useState)();(0,l.useEffect)(()=>{if(v===`success`){let e=setTimeout(()=>{E()},1e3);return()=>clearTimeout(e)}},[v]),(0,l.useEffect)(()=>{t||(y(`select`),T(void 0),x(!1),C(!1))},[t]),(0,l.useEffect)(()=>{if(!t)return;let e=e=>{e.key===`Escape`&&!b&&!S&&E()};return window.addEventListener(`keydown`,e),()=>window.removeEventListener(`keydown`,e)},[t,b,S]);let E=()=>{b||S||n()},D=(0,l.useMemo)(()=>e.t(d),[d]);return t?(0,u.jsx)(`div`,{className:`_cppay-overlay`,onClick:e=>e.target===e.currentTarget&&!b&&!S&&E(),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 D.paymentResult;case`expired`:return D.paymentExpired;case`failed`:return D.paymentFailed;case`error`:return D.error;case`payment`:return D.completePayment;default:return D.selectPaymentMethod}})()}),(0,u.jsx)(`button`,{onClick:E,disabled:b||S,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,locale:d,onSuccess:m,onExpired:p,onFailed:h,onError:g,Slots:_,paymentStep:v,onPaymentStepChange:y,loading:b,isCheckingPayment:S,error:w,onErrorChange:T})]})}):null},m=p,h=(0,l.createContext)(null);const g=({apikey:e,children:t})=>{let[n,r]=(0,l.useState)(!1),[i,a]=(0,l.useState)(null),o=(0,l.useCallback)(e=>{a(e),r(!0)},[]),s=(0,l.useCallback)(()=>{r(!1)},[]),c=(0,l.useCallback)(()=>{r(!1)},[]),d=(0,l.useCallback)(e=>{i?.onSuccess?.(e),setTimeout(()=>r(!1),1e3)},[i]),f=(0,l.useCallback)(e=>{i?.onExpired?.(e)},[i]),p=(0,l.useCallback)(e=>{i?.onFailed?.(e)},[i]),g=(0,l.useCallback)(e=>{i?.onError?.(e)},[i]);return(0,l.useEffect)(()=>{if(!n)return;let e=e=>{e.key===`Escape`&&c()};return document.addEventListener(`keydown`,e),()=>document.removeEventListener(`keydown`,e)},[n,c]),(0,u.jsxs)(h.Provider,{value:{showPayment:o,closePayment:s},children:[t,i&&(0,u.jsx)(m,{open:n,onClose:c,apikey:e,plain:i.plain,orderId:i.orderId,amount:i.amount,intervalDays:i.intervalDays,onSuccess:d,onExpired:f,onFailed:p,onError:g})]})},_=()=>{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=_;
1
+ const e=require(`./locales-DAKREZkH.cjs`),t=require(`./cppay-GXgivhbP.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,locale:_=`zh-CN`,onSuccess:v,onExpired:y,onFailed:b,onError:x,Slots:S,paymentStep:C,onPaymentStepChange:w,loading:T=!1,isCheckingPayment:E=!1,error:D,onErrorChange:O})=>{let k=(0,l.useMemo)(()=>new t.t(d,f),[d,f]),A=(0,l.useMemo)(()=>e.t(_),[_]),[j,ee]=(0,l.useState)([]),[M,N]=(0,l.useState)(),[P,te]=(0,l.useState)(),[ne,F]=(0,l.useState)(),[I,L]=(0,l.useState)(),[re,ie]=(0,l.useState)(!1),[R,z]=(0,l.useState)(),[B,ae]=(0,l.useState)(``),[V,oe]=(0,l.useState)(!1),[se,H]=(0,l.useState)(!1),U=(0,l.useRef)(null),W=(0,l.useRef)(null),G=(0,l.useRef)(null);(0,l.useEffect)(()=>{typeof window<`u`&&!U.current&&(U.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}}),L(U.current.getAddress()),z(U.current.getProvider(`eip155`)),U.current.subscribeAccount(e=>{e.isConnected?L(e.address):(L(void 0),z(void 0))}),U.current.subscribeProviders(e=>{let t=e?.eip155;z(t)}))},[]);let ce=async()=>{try{ie(!0),O?.(void 0),U.current&&await U.current.open()}catch(e){console.error(`钱包连接失败:`,e);let t=e instanceof Error?e.message:A.walletConnectionFailed;O?.(t),x?.(e)}finally{ie(!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+$/,``)},le=e=>{if(e<=0)return A.expired;let t=Math.floor(e/3600),n=Math.floor(e%3600/60),r=e%60;return t>0?`${t}${A.hours}${n}${A.minutes}${r}${A.seconds}`:`${n}${A.minutes}${r}${A.seconds}`},ue=e=>{G.current&&clearInterval(G.current);let t=()=>{let t=e-Math.floor(Date.now()/1e3);ae(le(t)),t<=0&&(w(`expired`),de())};t(),G.current=setInterval(t,1e3)},de=()=>{G.current&&=(clearInterval(G.current),null)},Z=(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]),fe=async()=>{try{O?.(void 0);let e=await k.getSupportedChains();ee(e),e.length>0&&N(e[0].chain)}catch(e){let t=e instanceof Error?e.message:A.loadPaymentNetworkFailed;O?.(t),x?.(e)}},pe=async e=>{if(R)try{await R.request({method:`wallet_switchEthereumChain`,params:[{chainId:`0x${e.toString(16)}`}]})}catch(e){throw e.code===4902?Error(A.pleaseAddNetwork):e}},me=async()=>{if(!(!I||!R||!Q.current||!J||!K))try{let e=Q.current;await pe(K.chainId);let t=(0,a.createWalletClient)({account:I,transport:(0,a.custom)(R)});J.address?await t.writeContract({address:J.address,abi:[{name:`transfer`,type:`function`,stateMutability:`nonpayable`,inputs:[{name:`to`,type:`address`},{name:`amount`,type:`uint256`}],outputs:[{type:`bool`}]}],functionName:`transfer`,args:[e.receiveAddress,(0,a.parseUnits)(e.paymentAmount,J.decimals)],chain:null}):await t.sendTransaction({to:e.receiveAddress,value:(0,a.parseUnits)(e.paymentAmount,J.decimals),chain:null}),F(void 0)}catch(e){console.error(`钱包支付失败:`,e);let t=e instanceof Error?e.message:A.walletPaymentFailed;O?.(t),x?.(e)}},he=async()=>{if(!(!I||!R||!Q.current||!J||!K))try{let e=Q.current;await pe(K.chainId);let t=(0,a.createWalletClient)({account:I,transport:(0,a.custom)(R)});if(!J.address)throw Error(A.subscriptionDoesNotSupportNative);await t.writeContract({address:J.address,abi:[{name:`approve`,type:`function`,stateMutability:`nonpayable`,inputs:[{name:`spender`,type:`address`},{name:`amount`,type:`uint256`}],outputs:[{type:`bool`}]}],functionName:`approve`,args:[e.spenderAddress,(0,a.parseUnits)(e.approveAmount,J.decimals)],chain:null}),F(void 0)}catch(e){console.error(`钱包授权失败:`,e);let t=e instanceof Error?e.message:A.walletPaymentFailed;O?.(t),x?.(e)}},ge=async()=>{if(!I){let e=A.pleaseConnectWallet;O?.(e),x?.(Error(e));return}p===`one-time`?await me():p===`subscription`&&await he()},Q=(0,l.useRef)(null),_e=async()=>{if(!(!M||!P))try{O?.(void 0);let e=``;p===`one-time`?(Q.current=await k.createOnetimePayment({paymentChain:M,paymentToken:P,orderId:m,amount:Z}),e=`${M.toLowerCase()}:${Q.current.receiveAddress}?amount=${Q.current.paymentAmount}`,ue(Q.current.expireAt),$({paymentId:Q.current.paymentId})):p===`subscription`&&(Q.current=await k.createSubscriptionPayment({paymentChain:M,paymentToken:P,orderId:m,amountOfUsd:Z,intervalDays:g||30}),e=`${M.toLowerCase()}:${Q.current.spenderAddress}?amount=${Q.current.approveAmount}`,ue(Q.current.expireAt),$({subscriptionId:Q.current.subscriptionId})),w(`payment`),F(await n.toDataURL(e,{width:200,margin:2,errorCorrectionLevel:`H`}))}catch(e){let t=e instanceof Error?e.message:A.createPaymentFailed;O?.(t),x?.(e)}},$=e=>{W.current?.unsubscribe();let t=()=>(0,r.defer)(()=>p===`subscription`?k.checkSubscriptionPaymentStatus(e):k.checkOnetimePaymentStatus(e)).pipe((0,i.timeout)(15e3),(0,i.retry)({delay:2e3}));W.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=>{(e.status===`paid`||e.status===`approved`)&&(w(`success`),v?.(e)),e.status===`expired`&&(w(`expired`),y?.(e)),e.status===`failed`&&(w(`failed`),b?.(e))})).subscribe({error:e=>{if(Q.current){let t=e instanceof Error?e.message:A.checkPaymentStatusFailed;w(`error`),O?.(t),x?.(e)}},complete:()=>{W.current?.unsubscribe()}})};return(0,l.useEffect)(()=>{j.length===0&&fe()},[]),(0,l.useEffect)(()=>{q.length>0&&te(q[0].symbol)},[q]),(0,l.useEffect)(()=>(m&&$({orderId:m}),()=>{W.current?.unsubscribe(),de()}),[m]),(0,u.jsx)(`div`,{className:`_cppay-content`,children:C===`success`?(0,u.jsxs)(`div`,{className:`_cppay-state-container`,children:[(0,u.jsx)(`div`,{className:`_cppay-state-icon`,children:`✅`}),(0,u.jsx)(`h3`,{className:`_cppay-state-title`,children:p===`subscription`?A.authorizationSuccess:A.paymentSuccess}),(0,u.jsx)(`p`,{className:`_cppay-state-message`,children:p===`subscription`?A.subscriptionActivated:A.transactionCompleted})]}):C===`expired`?(0,u.jsxs)(`div`,{className:`_cppay-state-container`,children:[(0,u.jsx)(`div`,{className:`_cppay-state-icon`,children:`⏰`}),(0,u.jsx)(`h3`,{className:`_cppay-state-title`,children:A.paymentExpired}),(0,u.jsx)(`button`,{onClick:()=>w(`select`),disabled:T||E,className:`_cppay-btn _cppay-btn-text`,children:A.returnButton})]}):C===`error`?(0,u.jsxs)(`div`,{className:`_cppay-state-container`,children:[(0,u.jsx)(`div`,{className:`_cppay-state-icon`,children:`❌`}),(0,u.jsx)(`h3`,{className:`_cppay-state-title`,children:D||A.error})]}):C===`failed`?(0,u.jsxs)(`div`,{className:`_cppay-state-container`,children:[(0,u.jsx)(`div`,{className:`_cppay-state-icon`,children:`❌`}),(0,u.jsx)(`h3`,{className:`_cppay-state-title`,children:A.paymentFailed})]}):C===`select`?(0,u.jsxs)(`div`,{children:[S?.ChooseTop,(0,u.jsxs)(`div`,{className:`_cppay-section`,children:[(0,u.jsx)(`label`,{className:`_cppay-label`,children:A.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:A.paymentToken}),(0,u.jsx)(`div`,{className:`_cppay-grid`,children:q.map(e=>(0,u.jsxs)(`button`,{onClick:()=>te(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))})]}),S?.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:A.paymentAmount}),(0,u.jsxs)(`div`,{className:`_cppay-price-amount`,children:[(0,u.jsxs)(`div`,{className:`_cppay-price-main`,children:[Z??`-`,` `,P??``]}),(0,u.jsxs)(`div`,{className:`_cppay-price-sub`,children:[`≈ $`,h]})]})]})})}),(0,u.jsxs)(`div`,{className:`_cppay-section`,children:[D&&(0,u.jsxs)(`div`,{className:`_cppay-error-tooltip-wrapper`,onMouseEnter:()=>H(!0),onMouseLeave:()=>H(!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:D})]}),se&&(0,u.jsx)(`div`,{className:`_cppay-error-tooltip-full`,children:D})]}),(0,u.jsx)(`button`,{onClick:_e,disabled:!M||!P||T,className:`_cppay-btn _cppay-btn-primary`,children:T?A.processing:A.continuePayment})]})]}):(0,u.jsxs)(`div`,{children:[(0,u.jsx)(`div`,{className:`_cppay-qr-container`,children:(0,u.jsx)(`div`,{className:`_cppay-qr-code`,children:ne&&(0,u.jsx)(`img`,{src:ne,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`?A.authorizationAmount:A.paymentAmount}),(0,u.jsxs)(`div`,{className:`_cppay-info-value _cppay-info-value-flex`,children:[(0,u.jsx)(`span`,{children:p===`subscription`?`${X(Q.current.approveAmount,Y(J.symbol))} ${J.symbol}`:`${X(Q.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`?A.authorizationContractAddress:A.paymentAddress}),B&&(0,u.jsxs)(`span`,{className:`_cppay-countdown`,children:[`⏰ `,B]})]}),(0,u.jsxs)(`div`,{className:`_cppay-address-row`,children:[(0,u.jsx)(`code`,{children:p===`subscription`?Q.current.spenderAddress:Q.current.receiveAddress}),(0,u.jsx)(`button`,{onClick:async()=>{if(!Q.current)return;let e=p===`subscription`?Q.current.spenderAddress:Q.current.receiveAddress;if(e)try{await navigator.clipboard.writeText(e),oe(!0),setTimeout(()=>{oe(!1)},2e3)}catch(e){console.error(`复制失败:`,e)}},className:`_cppay-copy-btn ${V?`_cppay-copy-success`:``}`,title:V?A.copied:A.copyAddress,children:V?(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:A.subscriptionNotice}),(0,u.jsx)(`div`,{className:`_cppay-info-value _cppay-subscription-message`,children:A.subscriptionNoticeMessage})]})]}),D&&(0,u.jsxs)(`div`,{className:`_cppay-error-tooltip-wrapper`,onMouseEnter:()=>H(!0),onMouseLeave:()=>H(!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:D})]}),se&&(0,u.jsx)(`div`,{className:`_cppay-error-tooltip-full`,children:D})]}),!E&&(0,u.jsx)(`div`,{className:`_cppay-section`,children:I?(0,u.jsxs)(u.Fragment,{children:[(0,u.jsx)(`button`,{onClick:ge,disabled:T,className:`_cppay-btn _cppay-btn-primary`,children:T?p===`subscription`?A.authorizing:A.processing:p===`subscription`?`💳 ${A.connectWallet}`:`💳 ${A.walletPay}`}),(0,u.jsxs)(`button`,{onClick:ce,disabled:T,className:`_cppay-btn _cppay-wallet-address-btn`,title:A.clickToModifyWallet,children:[(0,u.jsxs)(`span`,{className:`_cppay-wallet-address-text`,children:[I.slice(0,10),`...`,I.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:ce,disabled:re,className:`_cppay-btn _cppay-btn-secondary _cppay-connect-wallet-btn`,children:(0,u.jsx)(`span`,{children:re?A.processing:`💳 ${A.connectWallet}`})})}),(0,u.jsx)(`div`,{className:`_cppay-section`,children:(0,u.jsx)(`button`,{onClick:()=>{w(`payment`)},disabled:E,className:`_cppay-btn _cppay-btn-primary`,children:E?A.checking:A.completedPayment})}),(0,u.jsx)(`hr`,{className:`_cppay-divider`}),(0,u.jsx)(`div`,{className:`_cppay-section`,children:(0,u.jsx)(`button`,{onClick:()=>w(`select`),disabled:T||E,className:`_cppay-btn _cppay-btn-text`,children:A.changePaymentMethod})})]})})},f=d,p=({open:t,onClose:n,ott:r,apikey:i,plain:a,orderId:o,amount:s,intervalDays:c,locale:d,onExpired:p,onSuccess:m,onFailed:h,onError:g,Slots:_})=>{let[v,y]=(0,l.useState)(`select`),[b,x]=(0,l.useState)(!1),[S,C]=(0,l.useState)(!1),[w,T]=(0,l.useState)();(0,l.useEffect)(()=>{if(v===`success`){let e=setTimeout(()=>{E()},1e3);return()=>clearTimeout(e)}},[v]),(0,l.useEffect)(()=>{t||(y(`select`),T(void 0),x(!1),C(!1))},[t]),(0,l.useEffect)(()=>{if(!t)return;let e=e=>{e.key===`Escape`&&!b&&!S&&E()};return window.addEventListener(`keydown`,e),()=>window.removeEventListener(`keydown`,e)},[t,b,S]);let E=()=>{b||S||n()},D=(0,l.useMemo)(()=>e.t(d),[d]);return t?(0,u.jsx)(`div`,{className:`_cppay-overlay`,onClick:e=>e.target===e.currentTarget&&!b&&!S&&E(),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 D.paymentResult;case`expired`:return D.paymentExpired;case`failed`:return D.paymentFailed;case`error`:return D.error;case`payment`:return D.completePayment;default:return D.selectPaymentMethod}})()}),(0,u.jsx)(`button`,{onClick:E,disabled:b||S,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,locale:d,onSuccess:m,onExpired:p,onFailed:h,onError:g,Slots:_,paymentStep:v,onPaymentStepChange:y,loading:b,isCheckingPayment:S,error:w,onErrorChange:T})]})}):null},m=p,h=(0,l.createContext)(null);const g=({apikey:e,children:t})=>{let[n,r]=(0,l.useState)(!1),[i,a]=(0,l.useState)(null),o=(0,l.useCallback)(e=>{a(e),r(!0)},[]),s=(0,l.useCallback)(()=>{r(!1)},[]),c=(0,l.useCallback)(()=>{r(!1)},[]),d=(0,l.useCallback)(e=>{i?.onSuccess?.(e),setTimeout(()=>r(!1),1e3)},[i]),f=(0,l.useCallback)(e=>{i?.onExpired?.(e)},[i]),p=(0,l.useCallback)(e=>{i?.onFailed?.(e)},[i]),g=(0,l.useCallback)(e=>{i?.onError?.(e)},[i]);return(0,l.useEffect)(()=>{if(!n)return;let e=e=>{e.key===`Escape`&&c()};return document.addEventListener(`keydown`,e),()=>document.removeEventListener(`keydown`,e)},[n,c]),(0,u.jsxs)(h.Provider,{value:{showPayment:o,closePayment:s},children:[t,i&&(0,u.jsx)(m,{open:n,onClose:c,apikey:e,plain:i.plain,orderId:i.orderId,amount:i.amount,intervalDays:i.intervalDays,onSuccess:d,onExpired:f,onFailed:p,onError:g})]})},_=()=>{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=_;
package/dist/react.js CHANGED
@@ -1,4 +1,4 @@
1
- import { t as cppay_default } from "./cppay-C_gp2ZZ3.js";
1
+ import { t as cppay_default } from "./cppay-DnoMkyVy.js";
2
2
  import { n as injectStyle, r as payment_dialog_default, t as getLocaleMessages } from "./locales-DGvDecya.js";
3
3
  import * as QRCode from "qrcode";
4
4
  import { EMPTY, defer, timer } from "rxjs";
package/dist/vue.cjs CHANGED
@@ -1 +1 @@
1
- const e=require(`./locales-DAKREZkH.cjs`),t=require(`./cppay-BYRjTzRF.cjs`);let n=require(`vue`),r=require(`qrcode`);r=e.i(r);let i=require(`rxjs`),a=require(`rxjs/operators`),o=require(`viem`),s=require(`viem/chains`),c=require(`@reown/appkit`),l=require(`@reown/appkit-adapter-ethers`);var u={class:`_cppay-content`},d={key:0,class:`_cppay-state-container`},f={class:`_cppay-state-title`},ee={class:`_cppay-state-message`},te={key:1,class:`_cppay-state-container`},p={class:`_cppay-state-title`},ne=[`disabled`],re={key:2,class:`_cppay-state-container`},ie={class:`_cppay-state-title`},ae={key:3,class:`_cppay-state-container`},oe={class:`_cppay-state-title`},se={key:4},ce={class:`_cppay-section`},le={class:`_cppay-label`},ue={class:`_cppay-grid`},de=[`onClick`],fe=[`src`,`alt`],pe={class:`_cppay-section`},me={class:`_cppay-label`},he={class:`_cppay-grid`},ge=[`onClick`],_e=[`src`,`alt`],ve={class:`_cppay-section`},ye={class:`_cppay-price-box`},be={class:`_cppay-price-row`},xe={class:`_cppay-price-label`},Se={class:`_cppay-price-amount`},Ce={class:`_cppay-price-main`},we={class:`_cppay-price-sub`},Te={class:`_cppay-section`},Ee={class:`_cppay-error-tooltip`},De={key:0,class:`_cppay-error-tooltip-full`},Oe=[`disabled`],ke={key:5},Ae={class:`_cppay-qr-container`},je={class:`_cppay-qr-code`},m=[`src`],h={class:`_cppay-section`},g={key:0,class:`_cppay-info-box`},_={class:`_cppay-info-flex-container`},v={class:`_cppay-info-flex-child`},y={class:`_cppay-info-label`},b={class:`_cppay-info-value _cppay-info-value-flex`},x={key:0},S={class:`_cppay-info-box`},Me={class:`_cppay-info-flex-child`},Ne={class:`_cppay-info-label _cppay-info-label-flex`},Pe={key:0,class:`_cppay-countdown`},Fe={class:`_cppay-address-row`},Ie={key:0},Le=[`title`],Re={key:0,class:`_cppay-copy-icon`,viewBox:`0 0 24 24`,fill:`none`,stroke:`currentColor`,"stroke-width":`2`},ze={key:1,class:`_cppay-copy-icon`,viewBox:`0 0 24 24`,fill:`currentColor`},Be={key:1,class:`_cppay-info-box _cppay-subscription-box`},Ve={class:`_cppay-info-label _cppay-subscription-label`},He={class:`_cppay-info-value _cppay-subscription-message`},Ue={class:`_cppay-error-tooltip`},We={key:0,class:`_cppay-error-tooltip-full`},Ge={key:1,class:`_cppay-section`},Ke=[`disabled`],qe=[`disabled`],Je=[`disabled`,`title`],Ye={class:`_cppay-wallet-address-text`},Xe={class:`_cppay-section`},Ze=[`disabled`],Qe={class:`_cppay-section`},$e=[`disabled`],C=(0,n.defineComponent)({__name:`PaymentContent`,props:{apikey:{},orderId:{},amount:{},plain:{default:`one-time`},intervalDays:{},paymentStep:{},loading:{type:Boolean,default:!1},isCheckingPayment:{type:Boolean,default:!1},error:{},slots:{},locale:{}},emits:[`update:paymentStep`,`success`,`expired`,`failed`,`error`,`update:error`],setup(C,{emit:w}){let T=C,E=w,D=(0,n.computed)(()=>e.t(T.locale||`zh-CN`)),O=new t.t(T.apikey),k=(0,n.ref)([]),A=(0,n.ref)(),j=(0,n.ref)(),M=(0,n.ref)(),N=(0,n.ref)(),P=(0,n.ref)(!1),F=(0,n.ref)(),I=(0,n.ref)(``),L=(0,n.ref)(!1),R=(0,n.ref)(!1),z=(0,n.ref)(null),B=(0,n.ref)(null),V=(0,n.ref)(null),H=(0,n.ref)(null),et=()=>{typeof window<`u`&&!z.value&&(z.value=(0,c.createAppKit)({debug:!1,enableNetworkSwitch:!1,adapters:[new l.EthersAdapter],projectId:`8d2e1854d3f1782e45aa15fbd8938894`,allowUnsupportedChain:!0,networks:[s.mainnet,s.bsc,s.polygon,s.arbitrum,s.optimism,s.base],metadata:{name:`Cppay`,description:`Cppay Payment Gateway`,url:window.location.origin,icons:[`https://cppay.com/icon.png`]},features:{analytics:!1}}),N.value=z.value.getAddress(),F.value=z.value.getProvider(`eip155`),z.value.subscribeAccount(e=>{e.isConnected?N.value=e.address:(N.value=void 0,F.value=void 0)}),z.value.subscribeProviders(e=>{F.value=e?.eip155}))},U=async()=>{try{P.value=!0,E(`update:error`,void 0),z.value&&await z.value.open()}catch(e){E(`update:error`,e instanceof Error?e.message:D.value.walletConnectionFailed),E(`error`,e)}finally{P.value=!1}},W=(0,n.computed)(()=>k.value.find(e=>e.chain===A.value)),G=(0,n.computed)(()=>W.value?.tokens||[]),K=(0,n.computed)(()=>G.value.find(e=>e.symbol===j.value)),q=e=>[`USDT`,`USDC`,`BUSD`,`DAI`,`TUSD`,`USDD`,`FDUSD`].includes(e.toUpperCase())?2:6,J=(e,t)=>{let n=parseFloat(e);return isNaN(n)?`0`:n.toFixed(t).replace(/\.?0+$/,``)},tt=e=>{if(e<=0)return D.value.expired;let t=Math.floor(e/3600),n=Math.floor(e%3600/60),r=e%60;return t>0?`${t}${D.value.hours}${n}${D.value.minutes}${r}${D.value.seconds}`:`${n}${D.value.minutes}${r}${D.value.seconds}`},Y=e=>{V.value&&clearInterval(V.value);let t=()=>{let t=e-Math.floor(Date.now()/1e3);I.value=tt(t),t<=0&&(E(`update:paymentStep`,`expired`),X())};t(),V.value=setInterval(t,1e3)},X=()=>{V.value&&=(clearInterval(V.value),null)},Z=(0,n.computed)(()=>{if(!j.value||!K.value)return`0`;let e=parseFloat(K.value.price);if(isNaN(e)||e===0)return`0`;let t=q(j.value);return J((parseFloat(T.amount)/e).toFixed(t),t)}),nt=async()=>{try{E(`update:error`,void 0);let e=await O.getSupportedChains();k.value=e,e.length>0&&(A.value=e[0].chain)}catch(e){E(`update:error`,e instanceof Error?e.message:D.value.loadPaymentNetworkFailed),E(`error`,e)}},Q=async e=>{if(F.value)try{await F.value.request({method:`wallet_switchEthereumChain`,params:[{chainId:`0x${e.toString(16)}`}]})}catch(e){throw e.code===4902?Error(D.value.pleaseAddNetwork):e}},rt=async()=>{if(!(!N.value||!F.value||!H.value||!K.value||!W.value))try{let e=H.value;await Q(W.value.chainId);let t=(0,o.createWalletClient)({account:N.value,transport:(0,o.custom)(F.value)});K.value.address?await t.writeContract({address:K.value.address,abi:[{name:`transfer`,type:`function`,stateMutability:`nonpayable`,inputs:[{name:`to`,type:`address`},{name:`amount`,type:`uint256`}],outputs:[{type:`bool`}]}],functionName:`transfer`,args:[e.receiveAddress,(0,o.parseUnits)(e.paymentAmount,K.value.decimals)],chain:null}):await t.sendTransaction({to:e.receiveAddress,value:(0,o.parseUnits)(e.paymentAmount,K.value.decimals),chain:null}),M.value=void 0}catch(e){E(`update:error`,e instanceof Error?e.message:D.value.walletPaymentFailed),E(`error`,e)}},it=async()=>{if(!(!N.value||!F.value||!H.value||!K.value||!W.value))try{let e=H.value;await Q(W.value.chainId);let t=(0,o.createWalletClient)({account:N.value,transport:(0,o.custom)(F.value)});if(!K.value.address)throw Error(D.value.subscriptionDoesNotSupportNative);await t.writeContract({address:K.value.address,abi:[{name:`approve`,type:`function`,stateMutability:`nonpayable`,inputs:[{name:`spender`,type:`address`},{name:`amount`,type:`uint256`}],outputs:[{type:`bool`}]}],functionName:`approve`,args:[e.spenderAddress,(0,o.parseUnits)(e.approveAmount,K.value.decimals)],chain:null}),M.value=void 0}catch(e){E(`update:error`,e instanceof Error?e.message:D.value.walletPaymentFailed),E(`error`,e)}},at=async()=>{if(!N.value){E(`update:error`,D.value.pleaseConnectWallet),E(`error`,Error(D.value.pleaseConnectWallet));return}T.plain===`one-time`?await rt():T.plain===`subscription`&&await it()},ot=async()=>{if(!(!A.value||!j.value))try{E(`update:error`,void 0);let e=``;T.plain===`one-time`?(H.value=await O.createOnetimePayment({paymentChain:A.value,paymentToken:j.value,orderId:T.orderId,amount:Z.value}),e=`${A.value.toLowerCase()}:${H.value.receiveAddress}?amount=${H.value.paymentAmount}`,Y(H.value.expireAt),$({paymentId:H.value.paymentId})):T.plain===`subscription`&&(H.value=await O.createSubscriptionPayment({paymentChain:A.value,paymentToken:j.value,orderId:T.orderId,amountOfUsd:Z.value,intervalDays:T.intervalDays||30}),e=`${A.value.toLowerCase()}:${H.value.spenderAddress}?amount=${H.value.approveAmount}`,Y(H.value.expireAt),$({subscriptionId:H.value.subscriptionId})),E(`update:paymentStep`,`payment`),M.value=await r.toDataURL(e,{width:200,margin:2,errorCorrectionLevel:`H`})}catch(e){E(`update:error`,e instanceof Error?e.message:D.value.createPaymentFailed),E(`error`,e)}},$=e=>{B.value?.unsubscribe();let t=()=>(0,i.defer)(()=>T.plain===`subscription`?O.checkSubscriptionPaymentStatus(e):O.checkOnetimePaymentStatus(e)).pipe((0,a.timeout)(15e3),(0,a.retry)({delay:2e3}));B.value=t().pipe((0,a.expand)(e=>e.status===`pending`?(0,i.timer)(2e3).pipe((0,a.switchMap)(()=>t())):i.EMPTY),(0,a.tap)(e=>{(e.status===`paid`||e.status===`approved`)&&(E(`update:paymentStep`,`success`),E(`success`,e)),e.status===`expired`&&(E(`update:paymentStep`,`expired`),E(`expired`,e)),e.status===`failed`&&(E(`update:paymentStep`,`failed`),E(`failed`,e))})).subscribe({error:e=>{if(H.value){let t=e instanceof Error?e.message:D.value.checkPaymentStatusFailed;E(`update:paymentStep`,`error`),E(`update:error`,t),E(`error`,e)}},complete:()=>{B.value?.unsubscribe()}})},st=async()=>{if(!H.value)return;let e=T.plain===`subscription`?H.value.spenderAddress:H.value.receiveAddress;if(e)try{await navigator.clipboard.writeText(e),L.value=!0,setTimeout(()=>{L.value=!1},2e3)}catch(e){console.error(`复制失败:`,e)}};return(0,n.watch)(()=>T.paymentStep,e=>{e===`select`&&k.value.length===0&&nt()},{immediate:!0}),(0,n.watch)(G,e=>{e.length>0&&!j.value&&(j.value=e[0].symbol)}),(0,n.watch)(()=>T.orderId,e=>{e&&$({orderId:e})}),(0,n.onMounted)(()=>{et()}),(0,n.onUnmounted)(()=>{B.value?.unsubscribe(),X()}),(e,t)=>((0,n.openBlock)(),(0,n.createElementBlock)(`div`,u,[C.paymentStep===`success`?((0,n.openBlock)(),(0,n.createElementBlock)(`div`,d,[t[7]||=(0,n.createElementVNode)(`div`,{class:`_cppay-state-icon`},`✅`,-1),(0,n.createElementVNode)(`h3`,f,(0,n.toDisplayString)(C.plain===`subscription`?D.value.authorizationSuccess:D.value.paymentSuccess),1),(0,n.createElementVNode)(`p`,ee,(0,n.toDisplayString)(C.plain===`subscription`?D.value.subscriptionActivated:D.value.transactionCompleted),1)])):C.paymentStep===`expired`?((0,n.openBlock)(),(0,n.createElementBlock)(`div`,te,[t[8]||=(0,n.createElementVNode)(`div`,{class:`_cppay-state-icon`},`⏰`,-1),(0,n.createElementVNode)(`h3`,p,(0,n.toDisplayString)(D.value.paymentExpired),1),(0,n.createElementVNode)(`button`,{onClick:t[0]||=t=>e.$emit(`update:paymentStep`,`select`),disabled:C.loading||C.isCheckingPayment,class:`_cppay-btn _cppay-btn-text`},(0,n.toDisplayString)(D.value.returnButton),9,ne)])):C.paymentStep===`error`?((0,n.openBlock)(),(0,n.createElementBlock)(`div`,re,[t[9]||=(0,n.createElementVNode)(`div`,{class:`_cppay-state-icon`},`❌`,-1),(0,n.createElementVNode)(`h3`,ie,(0,n.toDisplayString)(D.value.checking),1)])):C.paymentStep===`failed`?((0,n.openBlock)(),(0,n.createElementBlock)(`div`,ae,[t[10]||=(0,n.createElementVNode)(`div`,{class:`_cppay-state-icon`},`❌`,-1),(0,n.createElementVNode)(`h3`,oe,(0,n.toDisplayString)(D.value.paymentFailed),1)])):C.paymentStep===`select`?((0,n.openBlock)(),(0,n.createElementBlock)(`div`,se,[(0,n.renderSlot)(e.$slots,`choose-top`),(0,n.createElementVNode)(`div`,ce,[(0,n.createElementVNode)(`label`,le,(0,n.toDisplayString)(D.value.paymentNetwork),1),(0,n.createElementVNode)(`div`,ue,[((0,n.openBlock)(!0),(0,n.createElementBlock)(n.Fragment,null,(0,n.renderList)(k.value,e=>((0,n.openBlock)(),(0,n.createElementBlock)(`button`,{key:e.chain,onClick:t=>A.value=e.chain,class:(0,n.normalizeClass)([`_cppay-select-btn`,{"_cppay-selected":A.value===e.chain}])},[e.icon?((0,n.openBlock)(),(0,n.createElementBlock)(`img`,{key:0,src:e.icon,alt:e.chain},null,8,fe)):(0,n.createCommentVNode)(``,!0),(0,n.createElementVNode)(`span`,null,(0,n.toDisplayString)(e.chain),1)],10,de))),128))])]),(0,n.createElementVNode)(`div`,pe,[(0,n.createElementVNode)(`label`,me,(0,n.toDisplayString)(D.value.paymentToken),1),(0,n.createElementVNode)(`div`,he,[((0,n.openBlock)(!0),(0,n.createElementBlock)(n.Fragment,null,(0,n.renderList)(G.value,e=>((0,n.openBlock)(),(0,n.createElementBlock)(`button`,{key:e.symbol,onClick:t=>j.value=e.symbol,class:(0,n.normalizeClass)([`_cppay-select-btn`,{"_cppay-selected":j.value===e.symbol}])},[e.icon?((0,n.openBlock)(),(0,n.createElementBlock)(`img`,{key:0,src:e.icon,alt:e.symbol},null,8,_e)):(0,n.createCommentVNode)(``,!0),(0,n.createElementVNode)(`span`,null,(0,n.toDisplayString)(e.symbol),1)],10,ge))),128))])]),(0,n.renderSlot)(e.$slots,`choose-bottom`),(0,n.createElementVNode)(`div`,ve,[(0,n.createElementVNode)(`div`,ye,[(0,n.createElementVNode)(`div`,be,[(0,n.createElementVNode)(`span`,xe,(0,n.toDisplayString)(D.value.paymentAmount),1),(0,n.createElementVNode)(`div`,Se,[(0,n.createElementVNode)(`div`,Ce,(0,n.toDisplayString)(Z.value??`-`)+` `+(0,n.toDisplayString)(j.value??``),1),(0,n.createElementVNode)(`div`,we,`≈ $`+(0,n.toDisplayString)(C.amount),1)])])])]),(0,n.createElementVNode)(`div`,Te,[C.error?((0,n.openBlock)(),(0,n.createElementBlock)(`div`,{key:0,class:`_cppay-error-tooltip-wrapper`,onMouseenter:t[1]||=e=>R.value=!0,onMouseleave:t[2]||=e=>R.value=!1},[(0,n.createElementVNode)(`div`,Ee,[t[11]||=(0,n.createElementVNode)(`svg`,{viewBox:`0 0 20 20`,fill:`currentColor`},[(0,n.createElementVNode)(`path`,{"fill-rule":`evenodd`,d:`M10 18a8 8 0 100-16 8 8 0 000 16zM8.707 7.293a1 1 0 00-1.414 1.414L8.586 10l-1.293 1.293a1 1 0 101.414 1.414L10 11.414l1.293 1.293a1 1 0 001.414-1.414L11.414 10l1.293-1.293a1 1 0 00-1.414-1.414L10 8.586 8.707 7.293z`,"clip-rule":`evenodd`})],-1),(0,n.createElementVNode)(`span`,null,(0,n.toDisplayString)(C.error),1)]),R.value?((0,n.openBlock)(),(0,n.createElementBlock)(`div`,De,(0,n.toDisplayString)(C.error),1)):(0,n.createCommentVNode)(``,!0)],32)):(0,n.createCommentVNode)(``,!0),(0,n.createElementVNode)(`button`,{onClick:ot,disabled:!A.value||!j.value||C.loading,class:`_cppay-btn _cppay-btn-primary`},(0,n.toDisplayString)(C.loading?D.value.processing:D.value.continuePayment),9,Oe)])])):((0,n.openBlock)(),(0,n.createElementBlock)(`div`,ke,[(0,n.createElementVNode)(`div`,Ae,[(0,n.createElementVNode)(`div`,je,[M.value?((0,n.openBlock)(),(0,n.createElementBlock)(`img`,{key:0,src:M.value,alt:`Payment QR Code`,class:`_cppay-qr-image`},null,8,m)):(0,n.createCommentVNode)(``,!0)])]),(0,n.createElementVNode)(`div`,h,[K.value?((0,n.openBlock)(),(0,n.createElementBlock)(`div`,g,[(0,n.createElementVNode)(`div`,_,[(0,n.createElementVNode)(`div`,v,[(0,n.createElementVNode)(`div`,y,(0,n.toDisplayString)(C.plain===`subscription`?D.value.authorizationAmount:D.value.paymentAmount),1),(0,n.createElementVNode)(`div`,b,[H.value?((0,n.openBlock)(),(0,n.createElementBlock)(`span`,x,(0,n.toDisplayString)(C.plain===`subscription`?`${J(H.value.approveAmount,q(K.value.symbol))} ${K.value.symbol}`:`${J(H.value.paymentAmount,q(K.value.symbol))} ${K.value.symbol}`),1)):(0,n.createCommentVNode)(``,!0),(0,n.createElementVNode)(`span`,null,`≈ $`+(0,n.toDisplayString)(C.amount),1)])])])])):(0,n.createCommentVNode)(``,!0),(0,n.createElementVNode)(`div`,S,[(0,n.createElementVNode)(`div`,Me,[(0,n.createElementVNode)(`div`,Ne,[(0,n.createElementVNode)(`span`,null,(0,n.toDisplayString)(C.plain===`subscription`?D.value.authorizationContractAddress:D.value.paymentAddress),1),I.value?((0,n.openBlock)(),(0,n.createElementBlock)(`span`,Pe,`⏰ `+(0,n.toDisplayString)(I.value),1)):(0,n.createCommentVNode)(``,!0)]),(0,n.createElementVNode)(`div`,Fe,[H.value?((0,n.openBlock)(),(0,n.createElementBlock)(`code`,Ie,(0,n.toDisplayString)(C.plain===`subscription`?H.value.spenderAddress:H.value.receiveAddress),1)):(0,n.createCommentVNode)(``,!0),(0,n.createElementVNode)(`button`,{onClick:st,class:(0,n.normalizeClass)([`_cppay-copy-btn`,{"_cppay-copy-success":L.value}]),title:L.value?D.value.copied:D.value.copyAddress},[L.value?((0,n.openBlock)(),(0,n.createElementBlock)(`svg`,ze,[...t[13]||=[(0,n.createElementVNode)(`path`,{d:`M9 16.17L4.83 12l-1.42 1.41L9 19 21 7l-1.41-1.41z`},null,-1)]])):((0,n.openBlock)(),(0,n.createElementBlock)(`svg`,Re,[...t[12]||=[(0,n.createElementVNode)(`path`,{d:`M16 4h2a2 2 0 0 1 2 2v14a2 2 0 0 1-2 2H6a2 2 0 0 1-2-2V6a2 2 0 0 1 2-2h2`},null,-1),(0,n.createElementVNode)(`rect`,{x:`8`,y:`2`,width:`8`,height:`4`,rx:`1`,ry:`1`},null,-1)]]))],10,Le)])])]),C.plain===`subscription`?((0,n.openBlock)(),(0,n.createElementBlock)(`div`,Be,[(0,n.createElementVNode)(`div`,Ve,(0,n.toDisplayString)(D.value.subscriptionNotice),1),(0,n.createElementVNode)(`div`,He,(0,n.toDisplayString)(D.value.subscriptionNoticeMessage),1)])):(0,n.createCommentVNode)(``,!0)]),C.error?((0,n.openBlock)(),(0,n.createElementBlock)(`div`,{key:0,class:`_cppay-error-tooltip-wrapper`,onMouseenter:t[3]||=e=>R.value=!0,onMouseleave:t[4]||=e=>R.value=!1},[(0,n.createElementVNode)(`div`,Ue,[t[14]||=(0,n.createElementVNode)(`svg`,{viewBox:`0 0 20 20`,fill:`currentColor`},[(0,n.createElementVNode)(`path`,{"fill-rule":`evenodd`,d:`M10 18a8 8 0 100-16 8 8 0 000 16zM8.707 7.293a1 1 0 00-1.414 1.414L8.586 10l-1.293 1.293a1 1 0 101.414 1.414L10 11.414l1.293 1.293a1 1 0 001.414-1.414L11.414 10l1.293-1.293a1 1 0 00-1.414-1.414L10 8.586 8.707 7.293z`,"clip-rule":`evenodd`})],-1),(0,n.createElementVNode)(`span`,null,(0,n.toDisplayString)(C.error),1)]),R.value?((0,n.openBlock)(),(0,n.createElementBlock)(`div`,We,(0,n.toDisplayString)(C.error),1)):(0,n.createCommentVNode)(``,!0)],32)):(0,n.createCommentVNode)(``,!0),C.isCheckingPayment?(0,n.createCommentVNode)(``,!0):((0,n.openBlock)(),(0,n.createElementBlock)(`div`,Ge,[N.value?((0,n.openBlock)(),(0,n.createElementBlock)(n.Fragment,{key:1},[(0,n.createElementVNode)(`button`,{onClick:at,disabled:C.loading,class:`_cppay-btn _cppay-btn-primary`},(0,n.toDisplayString)(C.loading?C.plain===`subscription`?D.value.authorizing:D.value.processing:(C.plain,D.value.walletPay)),9,qe),(0,n.createElementVNode)(`button`,{onClick:U,disabled:C.loading,class:`_cppay-btn _cppay-wallet-address-btn`,title:D.value.clickToModifyWallet},[(0,n.createElementVNode)(`span`,Ye,(0,n.toDisplayString)(N.value.slice(0,10))+`...`+(0,n.toDisplayString)(N.value.slice(-4)),1),t[15]||=(0,n.createElementVNode)(`svg`,{class:`_cppay-wallet-arrow`,viewBox:`0 0 24 24`,fill:`none`,stroke:`currentColor`,"stroke-width":`2`},[(0,n.createElementVNode)(`polyline`,{points:`6 9 12 15 18 9`})],-1)],8,Je)],64)):((0,n.openBlock)(),(0,n.createElementBlock)(`button`,{key:0,onClick:U,disabled:P.value,class:`_cppay-btn _cppay-btn-secondary _cppay-connect-wallet-btn`},[(0,n.createElementVNode)(`span`,null,(0,n.toDisplayString)(P.value?D.value.processing:D.value.connectWallet),1)],8,Ke))])),(0,n.createElementVNode)(`div`,Xe,[(0,n.createElementVNode)(`button`,{onClick:t[5]||=t=>e.$emit(`update:paymentStep`,`payment`),disabled:C.isCheckingPayment,class:`_cppay-btn _cppay-btn-primary`},(0,n.toDisplayString)(C.isCheckingPayment?D.value.checking:D.value.completedPayment),9,Ze)]),t[16]||=(0,n.createElementVNode)(`hr`,{class:`_cppay-divider`},null,-1),(0,n.createElementVNode)(`div`,Qe,[(0,n.createElementVNode)(`button`,{onClick:t[6]||=t=>e.$emit(`update:paymentStep`,`select`),disabled:C.loading||C.isCheckingPayment,class:`_cppay-btn _cppay-btn-text`},(0,n.toDisplayString)(D.value.changePaymentMethod),9,$e)])]))]))}}),w=C,T={class:`_cppay-dialog`},E={class:`_cppay-header`},D={class:`_cppay-title`},O=[`disabled`],k=(0,n.defineComponent)({__name:`PaymentDialog`,props:{modelValue:{type:Boolean},apikey:{},orderId:{},amount:{},plain:{default:`one-time`},intervalDays:{default:30},locale:{default:`zh-CN`}},emits:[`update:modelValue`,`success`,`expired`,`failed`,`error`],setup(t,{emit:r}){let i=t,a=r,o=(0,n.computed)(()=>e.t(i.locale)),s=(0,n.ref)(`select`),c=(0,n.ref)(!1),l=(0,n.ref)(!1),u=(0,n.ref)();(0,n.watch)(()=>s.value,e=>{e===`success`&&setTimeout(()=>{d()},1e3)}),(0,n.watch)(()=>i.modelValue,e=>{e||(s.value=`select`,u.value=void 0,c.value=!1,l.value=!1)}),(0,n.onMounted)(()=>{let e=e=>{e.key===`Escape`&&i.modelValue&&!c.value&&!l.value&&d()};return window.addEventListener(`keydown`,e),()=>{window.removeEventListener(`keydown`,e)}});let d=()=>{c.value||l.value||a(`update:modelValue`,!1)},f=()=>{switch(s.value){case`success`:return o.value.paymentResult;case`expired`:return o.value.paymentExpired;case`failed`:return o.value.paymentFailed;case`error`:return o.value.error;case`payment`:return o.value.completePayment;default:return o.value.selectPaymentMethod}};return(e,r)=>t.modelValue?((0,n.openBlock)(),(0,n.createElementBlock)(`div`,{key:0,class:`_cppay-overlay`,onClick:r[6]||=e=>e.target===e.currentTarget&&!c.value&&!l.value&&d()},[(0,n.createElementVNode)(`div`,T,[(0,n.createElementVNode)(`div`,E,[(0,n.createElementVNode)(`h2`,D,(0,n.toDisplayString)(f()),1),(0,n.createElementVNode)(`button`,{onClick:d,disabled:c.value||l.value,class:`_cppay-close-btn`},[...r[7]||=[(0,n.createElementVNode)(`svg`,{fill:`none`,stroke:`currentColor`,viewBox:`0 0 24 24`},[(0,n.createElementVNode)(`path`,{"stroke-linecap":`round`,"stroke-linejoin":`round`,"stroke-width":`2`,d:`M6 18L18 6M6 6l12 12`})],-1)]],8,O)]),(0,n.createVNode)(w,{apikey:t.apikey,orderId:t.orderId,amount:t.amount,plain:t.plain,intervalDays:t.intervalDays,locale:t.locale,paymentStep:s.value,loading:c.value,isCheckingPayment:l.value,error:u.value,"onUpdate:paymentStep":r[0]||=e=>s.value=e,"onUpdate:error":r[1]||=e=>u.value=e,onSuccess:r[2]||=e=>a(`success`,e),onExpired:r[3]||=e=>a(`expired`,e),onFailed:r[4]||=e=>a(`failed`,e),onError:r[5]||=e=>a(`error`,e)},{"choose-top":(0,n.withCtx)(()=>[(0,n.renderSlot)(e.$slots,`choose-top`)]),"choose-bottom":(0,n.withCtx)(()=>[(0,n.renderSlot)(e.$slots,`choose-bottom`)]),_:3},8,[`apikey`,`orderId`,`amount`,`plain`,`intervalDays`,`locale`,`paymentStep`,`loading`,`isCheckingPayment`,`error`])])])):(0,n.createCommentVNode)(``,!0)}}),A=k,j=(0,n.ref)({apikey:``,open:!1,options:null});const M=e=>{j.value.options=e,j.value.open=!0},N=()=>{j.value.open=!1};var P=()=>{j.value.open=!1},F=e=>{j.value.options?.onSuccess?.(e),setTimeout(()=>{j.value.open=!1},1e3)},I=e=>{j.value.options?.onExpired?.(e)},L=e=>{j.value.options?.onFailed?.(e)},R=e=>{j.value.options?.onError?.(e)};const z={install(e,t){if(!t?.apikey)throw Error(`Cppay plugin requires an apikey`);j.value.apikey=t.apikey,e.config.globalProperties.$showPayment=M,e.config.globalProperties.$closePayment=N;let r=e=>{e.key===`Escape`&&j.value.open&&P()},i=document.createElement(`div`);document.body.appendChild(i),(0,n.createApp)({setup(){return()=>j.value.options?(0,n.h)(A,{modelValue:j.value.open,"onUpdate:modelValue":e=>{j.value.open=e,e||P()},apikey:j.value.apikey,plain:j.value.options.plain,orderId:j.value.options.orderId,amount:j.value.options.amount,intervalDays:j.value.options.intervalDays,onSuccess:F,onExpired:I,onFailed:L,onError:R}):null}}).mount(i),j.value.open&&document.addEventListener(`keydown`,r),e.config.globalProperties.$watchEffect?.(()=>{j.value.open?document.addEventListener(`keydown`,r):document.removeEventListener(`keydown`,r)})}},B=()=>{if(!j.value.apikey)throw Error(`useCppayPayment must be used after installing CppayPlugin`);return{showPayment:M,closePayment:N}};e.n(e.r),exports.CppayPlugin=z,exports.PaymentContent=w,exports.PaymentDialog=A,exports.showPayment=M,exports.useCppayPayment=B;
1
+ const e=require(`./locales-DAKREZkH.cjs`),t=require(`./cppay-GXgivhbP.cjs`);let n=require(`vue`),r=require(`qrcode`);r=e.i(r);let i=require(`rxjs`),a=require(`rxjs/operators`),o=require(`viem`),s=require(`viem/chains`),c=require(`@reown/appkit`),l=require(`@reown/appkit-adapter-ethers`);var u={class:`_cppay-content`},d={key:0,class:`_cppay-state-container`},f={class:`_cppay-state-title`},ee={class:`_cppay-state-message`},te={key:1,class:`_cppay-state-container`},p={class:`_cppay-state-title`},ne=[`disabled`],re={key:2,class:`_cppay-state-container`},ie={class:`_cppay-state-title`},ae={key:3,class:`_cppay-state-container`},oe={class:`_cppay-state-title`},se={key:4},ce={class:`_cppay-section`},le={class:`_cppay-label`},ue={class:`_cppay-grid`},de=[`onClick`],fe=[`src`,`alt`],pe={class:`_cppay-section`},me={class:`_cppay-label`},he={class:`_cppay-grid`},ge=[`onClick`],_e=[`src`,`alt`],ve={class:`_cppay-section`},ye={class:`_cppay-price-box`},be={class:`_cppay-price-row`},xe={class:`_cppay-price-label`},Se={class:`_cppay-price-amount`},Ce={class:`_cppay-price-main`},we={class:`_cppay-price-sub`},Te={class:`_cppay-section`},Ee={class:`_cppay-error-tooltip`},De={key:0,class:`_cppay-error-tooltip-full`},Oe=[`disabled`],ke={key:5},Ae={class:`_cppay-qr-container`},je={class:`_cppay-qr-code`},m=[`src`],h={class:`_cppay-section`},g={key:0,class:`_cppay-info-box`},_={class:`_cppay-info-flex-container`},v={class:`_cppay-info-flex-child`},y={class:`_cppay-info-label`},b={class:`_cppay-info-value _cppay-info-value-flex`},x={key:0},S={class:`_cppay-info-box`},Me={class:`_cppay-info-flex-child`},Ne={class:`_cppay-info-label _cppay-info-label-flex`},Pe={key:0,class:`_cppay-countdown`},Fe={class:`_cppay-address-row`},Ie={key:0},Le=[`title`],Re={key:0,class:`_cppay-copy-icon`,viewBox:`0 0 24 24`,fill:`none`,stroke:`currentColor`,"stroke-width":`2`},ze={key:1,class:`_cppay-copy-icon`,viewBox:`0 0 24 24`,fill:`currentColor`},Be={key:1,class:`_cppay-info-box _cppay-subscription-box`},Ve={class:`_cppay-info-label _cppay-subscription-label`},He={class:`_cppay-info-value _cppay-subscription-message`},Ue={class:`_cppay-error-tooltip`},We={key:0,class:`_cppay-error-tooltip-full`},Ge={key:1,class:`_cppay-section`},Ke=[`disabled`],qe=[`disabled`],Je=[`disabled`,`title`],Ye={class:`_cppay-wallet-address-text`},Xe={class:`_cppay-section`},Ze=[`disabled`],Qe={class:`_cppay-section`},$e=[`disabled`],C=(0,n.defineComponent)({__name:`PaymentContent`,props:{apikey:{},orderId:{},amount:{},plain:{default:`one-time`},intervalDays:{},paymentStep:{},loading:{type:Boolean,default:!1},isCheckingPayment:{type:Boolean,default:!1},error:{},slots:{},locale:{}},emits:[`update:paymentStep`,`success`,`expired`,`failed`,`error`,`update:error`],setup(C,{emit:w}){let T=C,E=w,D=(0,n.computed)(()=>e.t(T.locale||`zh-CN`)),O=new t.t(T.apikey),k=(0,n.ref)([]),A=(0,n.ref)(),j=(0,n.ref)(),M=(0,n.ref)(),N=(0,n.ref)(),P=(0,n.ref)(!1),F=(0,n.ref)(),I=(0,n.ref)(``),L=(0,n.ref)(!1),R=(0,n.ref)(!1),z=(0,n.ref)(null),B=(0,n.ref)(null),V=(0,n.ref)(null),H=(0,n.ref)(null),et=()=>{typeof window<`u`&&!z.value&&(z.value=(0,c.createAppKit)({debug:!1,enableNetworkSwitch:!1,adapters:[new l.EthersAdapter],projectId:`8d2e1854d3f1782e45aa15fbd8938894`,allowUnsupportedChain:!0,networks:[s.mainnet,s.bsc,s.polygon,s.arbitrum,s.optimism,s.base],metadata:{name:`Cppay`,description:`Cppay Payment Gateway`,url:window.location.origin,icons:[`https://cppay.com/icon.png`]},features:{analytics:!1}}),N.value=z.value.getAddress(),F.value=z.value.getProvider(`eip155`),z.value.subscribeAccount(e=>{e.isConnected?N.value=e.address:(N.value=void 0,F.value=void 0)}),z.value.subscribeProviders(e=>{F.value=e?.eip155}))},U=async()=>{try{P.value=!0,E(`update:error`,void 0),z.value&&await z.value.open()}catch(e){E(`update:error`,e instanceof Error?e.message:D.value.walletConnectionFailed),E(`error`,e)}finally{P.value=!1}},W=(0,n.computed)(()=>k.value.find(e=>e.chain===A.value)),G=(0,n.computed)(()=>W.value?.tokens||[]),K=(0,n.computed)(()=>G.value.find(e=>e.symbol===j.value)),q=e=>[`USDT`,`USDC`,`BUSD`,`DAI`,`TUSD`,`USDD`,`FDUSD`].includes(e.toUpperCase())?2:6,J=(e,t)=>{let n=parseFloat(e);return isNaN(n)?`0`:n.toFixed(t).replace(/\.?0+$/,``)},tt=e=>{if(e<=0)return D.value.expired;let t=Math.floor(e/3600),n=Math.floor(e%3600/60),r=e%60;return t>0?`${t}${D.value.hours}${n}${D.value.minutes}${r}${D.value.seconds}`:`${n}${D.value.minutes}${r}${D.value.seconds}`},Y=e=>{V.value&&clearInterval(V.value);let t=()=>{let t=e-Math.floor(Date.now()/1e3);I.value=tt(t),t<=0&&(E(`update:paymentStep`,`expired`),X())};t(),V.value=setInterval(t,1e3)},X=()=>{V.value&&=(clearInterval(V.value),null)},Z=(0,n.computed)(()=>{if(!j.value||!K.value)return`0`;let e=parseFloat(K.value.price);if(isNaN(e)||e===0)return`0`;let t=q(j.value);return J((parseFloat(T.amount)/e).toFixed(t),t)}),nt=async()=>{try{E(`update:error`,void 0);let e=await O.getSupportedChains();k.value=e,e.length>0&&(A.value=e[0].chain)}catch(e){E(`update:error`,e instanceof Error?e.message:D.value.loadPaymentNetworkFailed),E(`error`,e)}},Q=async e=>{if(F.value)try{await F.value.request({method:`wallet_switchEthereumChain`,params:[{chainId:`0x${e.toString(16)}`}]})}catch(e){throw e.code===4902?Error(D.value.pleaseAddNetwork):e}},rt=async()=>{if(!(!N.value||!F.value||!H.value||!K.value||!W.value))try{let e=H.value;await Q(W.value.chainId);let t=(0,o.createWalletClient)({account:N.value,transport:(0,o.custom)(F.value)});K.value.address?await t.writeContract({address:K.value.address,abi:[{name:`transfer`,type:`function`,stateMutability:`nonpayable`,inputs:[{name:`to`,type:`address`},{name:`amount`,type:`uint256`}],outputs:[{type:`bool`}]}],functionName:`transfer`,args:[e.receiveAddress,(0,o.parseUnits)(e.paymentAmount,K.value.decimals)],chain:null}):await t.sendTransaction({to:e.receiveAddress,value:(0,o.parseUnits)(e.paymentAmount,K.value.decimals),chain:null}),M.value=void 0}catch(e){E(`update:error`,e instanceof Error?e.message:D.value.walletPaymentFailed),E(`error`,e)}},it=async()=>{if(!(!N.value||!F.value||!H.value||!K.value||!W.value))try{let e=H.value;await Q(W.value.chainId);let t=(0,o.createWalletClient)({account:N.value,transport:(0,o.custom)(F.value)});if(!K.value.address)throw Error(D.value.subscriptionDoesNotSupportNative);await t.writeContract({address:K.value.address,abi:[{name:`approve`,type:`function`,stateMutability:`nonpayable`,inputs:[{name:`spender`,type:`address`},{name:`amount`,type:`uint256`}],outputs:[{type:`bool`}]}],functionName:`approve`,args:[e.spenderAddress,(0,o.parseUnits)(e.approveAmount,K.value.decimals)],chain:null}),M.value=void 0}catch(e){E(`update:error`,e instanceof Error?e.message:D.value.walletPaymentFailed),E(`error`,e)}},at=async()=>{if(!N.value){E(`update:error`,D.value.pleaseConnectWallet),E(`error`,Error(D.value.pleaseConnectWallet));return}T.plain===`one-time`?await rt():T.plain===`subscription`&&await it()},ot=async()=>{if(!(!A.value||!j.value))try{E(`update:error`,void 0);let e=``;T.plain===`one-time`?(H.value=await O.createOnetimePayment({paymentChain:A.value,paymentToken:j.value,orderId:T.orderId,amount:Z.value}),e=`${A.value.toLowerCase()}:${H.value.receiveAddress}?amount=${H.value.paymentAmount}`,Y(H.value.expireAt),$({paymentId:H.value.paymentId})):T.plain===`subscription`&&(H.value=await O.createSubscriptionPayment({paymentChain:A.value,paymentToken:j.value,orderId:T.orderId,amountOfUsd:Z.value,intervalDays:T.intervalDays||30}),e=`${A.value.toLowerCase()}:${H.value.spenderAddress}?amount=${H.value.approveAmount}`,Y(H.value.expireAt),$({subscriptionId:H.value.subscriptionId})),E(`update:paymentStep`,`payment`),M.value=await r.toDataURL(e,{width:200,margin:2,errorCorrectionLevel:`H`})}catch(e){E(`update:error`,e instanceof Error?e.message:D.value.createPaymentFailed),E(`error`,e)}},$=e=>{B.value?.unsubscribe();let t=()=>(0,i.defer)(()=>T.plain===`subscription`?O.checkSubscriptionPaymentStatus(e):O.checkOnetimePaymentStatus(e)).pipe((0,a.timeout)(15e3),(0,a.retry)({delay:2e3}));B.value=t().pipe((0,a.expand)(e=>e.status===`pending`?(0,i.timer)(2e3).pipe((0,a.switchMap)(()=>t())):i.EMPTY),(0,a.tap)(e=>{(e.status===`paid`||e.status===`approved`)&&(E(`update:paymentStep`,`success`),E(`success`,e)),e.status===`expired`&&(E(`update:paymentStep`,`expired`),E(`expired`,e)),e.status===`failed`&&(E(`update:paymentStep`,`failed`),E(`failed`,e))})).subscribe({error:e=>{if(H.value){let t=e instanceof Error?e.message:D.value.checkPaymentStatusFailed;E(`update:paymentStep`,`error`),E(`update:error`,t),E(`error`,e)}},complete:()=>{B.value?.unsubscribe()}})},st=async()=>{if(!H.value)return;let e=T.plain===`subscription`?H.value.spenderAddress:H.value.receiveAddress;if(e)try{await navigator.clipboard.writeText(e),L.value=!0,setTimeout(()=>{L.value=!1},2e3)}catch(e){console.error(`复制失败:`,e)}};return(0,n.watch)(()=>T.paymentStep,e=>{e===`select`&&k.value.length===0&&nt()},{immediate:!0}),(0,n.watch)(G,e=>{e.length>0&&!j.value&&(j.value=e[0].symbol)}),(0,n.watch)(()=>T.orderId,e=>{e&&$({orderId:e})}),(0,n.onMounted)(()=>{et()}),(0,n.onUnmounted)(()=>{B.value?.unsubscribe(),X()}),(e,t)=>((0,n.openBlock)(),(0,n.createElementBlock)(`div`,u,[C.paymentStep===`success`?((0,n.openBlock)(),(0,n.createElementBlock)(`div`,d,[t[7]||=(0,n.createElementVNode)(`div`,{class:`_cppay-state-icon`},`✅`,-1),(0,n.createElementVNode)(`h3`,f,(0,n.toDisplayString)(C.plain===`subscription`?D.value.authorizationSuccess:D.value.paymentSuccess),1),(0,n.createElementVNode)(`p`,ee,(0,n.toDisplayString)(C.plain===`subscription`?D.value.subscriptionActivated:D.value.transactionCompleted),1)])):C.paymentStep===`expired`?((0,n.openBlock)(),(0,n.createElementBlock)(`div`,te,[t[8]||=(0,n.createElementVNode)(`div`,{class:`_cppay-state-icon`},`⏰`,-1),(0,n.createElementVNode)(`h3`,p,(0,n.toDisplayString)(D.value.paymentExpired),1),(0,n.createElementVNode)(`button`,{onClick:t[0]||=t=>e.$emit(`update:paymentStep`,`select`),disabled:C.loading||C.isCheckingPayment,class:`_cppay-btn _cppay-btn-text`},(0,n.toDisplayString)(D.value.returnButton),9,ne)])):C.paymentStep===`error`?((0,n.openBlock)(),(0,n.createElementBlock)(`div`,re,[t[9]||=(0,n.createElementVNode)(`div`,{class:`_cppay-state-icon`},`❌`,-1),(0,n.createElementVNode)(`h3`,ie,(0,n.toDisplayString)(D.value.checking),1)])):C.paymentStep===`failed`?((0,n.openBlock)(),(0,n.createElementBlock)(`div`,ae,[t[10]||=(0,n.createElementVNode)(`div`,{class:`_cppay-state-icon`},`❌`,-1),(0,n.createElementVNode)(`h3`,oe,(0,n.toDisplayString)(D.value.paymentFailed),1)])):C.paymentStep===`select`?((0,n.openBlock)(),(0,n.createElementBlock)(`div`,se,[(0,n.renderSlot)(e.$slots,`choose-top`),(0,n.createElementVNode)(`div`,ce,[(0,n.createElementVNode)(`label`,le,(0,n.toDisplayString)(D.value.paymentNetwork),1),(0,n.createElementVNode)(`div`,ue,[((0,n.openBlock)(!0),(0,n.createElementBlock)(n.Fragment,null,(0,n.renderList)(k.value,e=>((0,n.openBlock)(),(0,n.createElementBlock)(`button`,{key:e.chain,onClick:t=>A.value=e.chain,class:(0,n.normalizeClass)([`_cppay-select-btn`,{"_cppay-selected":A.value===e.chain}])},[e.icon?((0,n.openBlock)(),(0,n.createElementBlock)(`img`,{key:0,src:e.icon,alt:e.chain},null,8,fe)):(0,n.createCommentVNode)(``,!0),(0,n.createElementVNode)(`span`,null,(0,n.toDisplayString)(e.chain),1)],10,de))),128))])]),(0,n.createElementVNode)(`div`,pe,[(0,n.createElementVNode)(`label`,me,(0,n.toDisplayString)(D.value.paymentToken),1),(0,n.createElementVNode)(`div`,he,[((0,n.openBlock)(!0),(0,n.createElementBlock)(n.Fragment,null,(0,n.renderList)(G.value,e=>((0,n.openBlock)(),(0,n.createElementBlock)(`button`,{key:e.symbol,onClick:t=>j.value=e.symbol,class:(0,n.normalizeClass)([`_cppay-select-btn`,{"_cppay-selected":j.value===e.symbol}])},[e.icon?((0,n.openBlock)(),(0,n.createElementBlock)(`img`,{key:0,src:e.icon,alt:e.symbol},null,8,_e)):(0,n.createCommentVNode)(``,!0),(0,n.createElementVNode)(`span`,null,(0,n.toDisplayString)(e.symbol),1)],10,ge))),128))])]),(0,n.renderSlot)(e.$slots,`choose-bottom`),(0,n.createElementVNode)(`div`,ve,[(0,n.createElementVNode)(`div`,ye,[(0,n.createElementVNode)(`div`,be,[(0,n.createElementVNode)(`span`,xe,(0,n.toDisplayString)(D.value.paymentAmount),1),(0,n.createElementVNode)(`div`,Se,[(0,n.createElementVNode)(`div`,Ce,(0,n.toDisplayString)(Z.value??`-`)+` `+(0,n.toDisplayString)(j.value??``),1),(0,n.createElementVNode)(`div`,we,`≈ $`+(0,n.toDisplayString)(C.amount),1)])])])]),(0,n.createElementVNode)(`div`,Te,[C.error?((0,n.openBlock)(),(0,n.createElementBlock)(`div`,{key:0,class:`_cppay-error-tooltip-wrapper`,onMouseenter:t[1]||=e=>R.value=!0,onMouseleave:t[2]||=e=>R.value=!1},[(0,n.createElementVNode)(`div`,Ee,[t[11]||=(0,n.createElementVNode)(`svg`,{viewBox:`0 0 20 20`,fill:`currentColor`},[(0,n.createElementVNode)(`path`,{"fill-rule":`evenodd`,d:`M10 18a8 8 0 100-16 8 8 0 000 16zM8.707 7.293a1 1 0 00-1.414 1.414L8.586 10l-1.293 1.293a1 1 0 101.414 1.414L10 11.414l1.293 1.293a1 1 0 001.414-1.414L11.414 10l1.293-1.293a1 1 0 00-1.414-1.414L10 8.586 8.707 7.293z`,"clip-rule":`evenodd`})],-1),(0,n.createElementVNode)(`span`,null,(0,n.toDisplayString)(C.error),1)]),R.value?((0,n.openBlock)(),(0,n.createElementBlock)(`div`,De,(0,n.toDisplayString)(C.error),1)):(0,n.createCommentVNode)(``,!0)],32)):(0,n.createCommentVNode)(``,!0),(0,n.createElementVNode)(`button`,{onClick:ot,disabled:!A.value||!j.value||C.loading,class:`_cppay-btn _cppay-btn-primary`},(0,n.toDisplayString)(C.loading?D.value.processing:D.value.continuePayment),9,Oe)])])):((0,n.openBlock)(),(0,n.createElementBlock)(`div`,ke,[(0,n.createElementVNode)(`div`,Ae,[(0,n.createElementVNode)(`div`,je,[M.value?((0,n.openBlock)(),(0,n.createElementBlock)(`img`,{key:0,src:M.value,alt:`Payment QR Code`,class:`_cppay-qr-image`},null,8,m)):(0,n.createCommentVNode)(``,!0)])]),(0,n.createElementVNode)(`div`,h,[K.value?((0,n.openBlock)(),(0,n.createElementBlock)(`div`,g,[(0,n.createElementVNode)(`div`,_,[(0,n.createElementVNode)(`div`,v,[(0,n.createElementVNode)(`div`,y,(0,n.toDisplayString)(C.plain===`subscription`?D.value.authorizationAmount:D.value.paymentAmount),1),(0,n.createElementVNode)(`div`,b,[H.value?((0,n.openBlock)(),(0,n.createElementBlock)(`span`,x,(0,n.toDisplayString)(C.plain===`subscription`?`${J(H.value.approveAmount,q(K.value.symbol))} ${K.value.symbol}`:`${J(H.value.paymentAmount,q(K.value.symbol))} ${K.value.symbol}`),1)):(0,n.createCommentVNode)(``,!0),(0,n.createElementVNode)(`span`,null,`≈ $`+(0,n.toDisplayString)(C.amount),1)])])])])):(0,n.createCommentVNode)(``,!0),(0,n.createElementVNode)(`div`,S,[(0,n.createElementVNode)(`div`,Me,[(0,n.createElementVNode)(`div`,Ne,[(0,n.createElementVNode)(`span`,null,(0,n.toDisplayString)(C.plain===`subscription`?D.value.authorizationContractAddress:D.value.paymentAddress),1),I.value?((0,n.openBlock)(),(0,n.createElementBlock)(`span`,Pe,`⏰ `+(0,n.toDisplayString)(I.value),1)):(0,n.createCommentVNode)(``,!0)]),(0,n.createElementVNode)(`div`,Fe,[H.value?((0,n.openBlock)(),(0,n.createElementBlock)(`code`,Ie,(0,n.toDisplayString)(C.plain===`subscription`?H.value.spenderAddress:H.value.receiveAddress),1)):(0,n.createCommentVNode)(``,!0),(0,n.createElementVNode)(`button`,{onClick:st,class:(0,n.normalizeClass)([`_cppay-copy-btn`,{"_cppay-copy-success":L.value}]),title:L.value?D.value.copied:D.value.copyAddress},[L.value?((0,n.openBlock)(),(0,n.createElementBlock)(`svg`,ze,[...t[13]||=[(0,n.createElementVNode)(`path`,{d:`M9 16.17L4.83 12l-1.42 1.41L9 19 21 7l-1.41-1.41z`},null,-1)]])):((0,n.openBlock)(),(0,n.createElementBlock)(`svg`,Re,[...t[12]||=[(0,n.createElementVNode)(`path`,{d:`M16 4h2a2 2 0 0 1 2 2v14a2 2 0 0 1-2 2H6a2 2 0 0 1-2-2V6a2 2 0 0 1 2-2h2`},null,-1),(0,n.createElementVNode)(`rect`,{x:`8`,y:`2`,width:`8`,height:`4`,rx:`1`,ry:`1`},null,-1)]]))],10,Le)])])]),C.plain===`subscription`?((0,n.openBlock)(),(0,n.createElementBlock)(`div`,Be,[(0,n.createElementVNode)(`div`,Ve,(0,n.toDisplayString)(D.value.subscriptionNotice),1),(0,n.createElementVNode)(`div`,He,(0,n.toDisplayString)(D.value.subscriptionNoticeMessage),1)])):(0,n.createCommentVNode)(``,!0)]),C.error?((0,n.openBlock)(),(0,n.createElementBlock)(`div`,{key:0,class:`_cppay-error-tooltip-wrapper`,onMouseenter:t[3]||=e=>R.value=!0,onMouseleave:t[4]||=e=>R.value=!1},[(0,n.createElementVNode)(`div`,Ue,[t[14]||=(0,n.createElementVNode)(`svg`,{viewBox:`0 0 20 20`,fill:`currentColor`},[(0,n.createElementVNode)(`path`,{"fill-rule":`evenodd`,d:`M10 18a8 8 0 100-16 8 8 0 000 16zM8.707 7.293a1 1 0 00-1.414 1.414L8.586 10l-1.293 1.293a1 1 0 101.414 1.414L10 11.414l1.293 1.293a1 1 0 001.414-1.414L11.414 10l1.293-1.293a1 1 0 00-1.414-1.414L10 8.586 8.707 7.293z`,"clip-rule":`evenodd`})],-1),(0,n.createElementVNode)(`span`,null,(0,n.toDisplayString)(C.error),1)]),R.value?((0,n.openBlock)(),(0,n.createElementBlock)(`div`,We,(0,n.toDisplayString)(C.error),1)):(0,n.createCommentVNode)(``,!0)],32)):(0,n.createCommentVNode)(``,!0),C.isCheckingPayment?(0,n.createCommentVNode)(``,!0):((0,n.openBlock)(),(0,n.createElementBlock)(`div`,Ge,[N.value?((0,n.openBlock)(),(0,n.createElementBlock)(n.Fragment,{key:1},[(0,n.createElementVNode)(`button`,{onClick:at,disabled:C.loading,class:`_cppay-btn _cppay-btn-primary`},(0,n.toDisplayString)(C.loading?C.plain===`subscription`?D.value.authorizing:D.value.processing:(C.plain,D.value.walletPay)),9,qe),(0,n.createElementVNode)(`button`,{onClick:U,disabled:C.loading,class:`_cppay-btn _cppay-wallet-address-btn`,title:D.value.clickToModifyWallet},[(0,n.createElementVNode)(`span`,Ye,(0,n.toDisplayString)(N.value.slice(0,10))+`...`+(0,n.toDisplayString)(N.value.slice(-4)),1),t[15]||=(0,n.createElementVNode)(`svg`,{class:`_cppay-wallet-arrow`,viewBox:`0 0 24 24`,fill:`none`,stroke:`currentColor`,"stroke-width":`2`},[(0,n.createElementVNode)(`polyline`,{points:`6 9 12 15 18 9`})],-1)],8,Je)],64)):((0,n.openBlock)(),(0,n.createElementBlock)(`button`,{key:0,onClick:U,disabled:P.value,class:`_cppay-btn _cppay-btn-secondary _cppay-connect-wallet-btn`},[(0,n.createElementVNode)(`span`,null,(0,n.toDisplayString)(P.value?D.value.processing:D.value.connectWallet),1)],8,Ke))])),(0,n.createElementVNode)(`div`,Xe,[(0,n.createElementVNode)(`button`,{onClick:t[5]||=t=>e.$emit(`update:paymentStep`,`payment`),disabled:C.isCheckingPayment,class:`_cppay-btn _cppay-btn-primary`},(0,n.toDisplayString)(C.isCheckingPayment?D.value.checking:D.value.completedPayment),9,Ze)]),t[16]||=(0,n.createElementVNode)(`hr`,{class:`_cppay-divider`},null,-1),(0,n.createElementVNode)(`div`,Qe,[(0,n.createElementVNode)(`button`,{onClick:t[6]||=t=>e.$emit(`update:paymentStep`,`select`),disabled:C.loading||C.isCheckingPayment,class:`_cppay-btn _cppay-btn-text`},(0,n.toDisplayString)(D.value.changePaymentMethod),9,$e)])]))]))}}),w=C,T={class:`_cppay-dialog`},E={class:`_cppay-header`},D={class:`_cppay-title`},O=[`disabled`],k=(0,n.defineComponent)({__name:`PaymentDialog`,props:{modelValue:{type:Boolean},apikey:{},orderId:{},amount:{},plain:{default:`one-time`},intervalDays:{default:30},locale:{default:`zh-CN`}},emits:[`update:modelValue`,`success`,`expired`,`failed`,`error`],setup(t,{emit:r}){let i=t,a=r,o=(0,n.computed)(()=>e.t(i.locale)),s=(0,n.ref)(`select`),c=(0,n.ref)(!1),l=(0,n.ref)(!1),u=(0,n.ref)();(0,n.watch)(()=>s.value,e=>{e===`success`&&setTimeout(()=>{d()},1e3)}),(0,n.watch)(()=>i.modelValue,e=>{e||(s.value=`select`,u.value=void 0,c.value=!1,l.value=!1)}),(0,n.onMounted)(()=>{let e=e=>{e.key===`Escape`&&i.modelValue&&!c.value&&!l.value&&d()};return window.addEventListener(`keydown`,e),()=>{window.removeEventListener(`keydown`,e)}});let d=()=>{c.value||l.value||a(`update:modelValue`,!1)},f=()=>{switch(s.value){case`success`:return o.value.paymentResult;case`expired`:return o.value.paymentExpired;case`failed`:return o.value.paymentFailed;case`error`:return o.value.error;case`payment`:return o.value.completePayment;default:return o.value.selectPaymentMethod}};return(e,r)=>t.modelValue?((0,n.openBlock)(),(0,n.createElementBlock)(`div`,{key:0,class:`_cppay-overlay`,onClick:r[6]||=e=>e.target===e.currentTarget&&!c.value&&!l.value&&d()},[(0,n.createElementVNode)(`div`,T,[(0,n.createElementVNode)(`div`,E,[(0,n.createElementVNode)(`h2`,D,(0,n.toDisplayString)(f()),1),(0,n.createElementVNode)(`button`,{onClick:d,disabled:c.value||l.value,class:`_cppay-close-btn`},[...r[7]||=[(0,n.createElementVNode)(`svg`,{fill:`none`,stroke:`currentColor`,viewBox:`0 0 24 24`},[(0,n.createElementVNode)(`path`,{"stroke-linecap":`round`,"stroke-linejoin":`round`,"stroke-width":`2`,d:`M6 18L18 6M6 6l12 12`})],-1)]],8,O)]),(0,n.createVNode)(w,{apikey:t.apikey,orderId:t.orderId,amount:t.amount,plain:t.plain,intervalDays:t.intervalDays,locale:t.locale,paymentStep:s.value,loading:c.value,isCheckingPayment:l.value,error:u.value,"onUpdate:paymentStep":r[0]||=e=>s.value=e,"onUpdate:error":r[1]||=e=>u.value=e,onSuccess:r[2]||=e=>a(`success`,e),onExpired:r[3]||=e=>a(`expired`,e),onFailed:r[4]||=e=>a(`failed`,e),onError:r[5]||=e=>a(`error`,e)},{"choose-top":(0,n.withCtx)(()=>[(0,n.renderSlot)(e.$slots,`choose-top`)]),"choose-bottom":(0,n.withCtx)(()=>[(0,n.renderSlot)(e.$slots,`choose-bottom`)]),_:3},8,[`apikey`,`orderId`,`amount`,`plain`,`intervalDays`,`locale`,`paymentStep`,`loading`,`isCheckingPayment`,`error`])])])):(0,n.createCommentVNode)(``,!0)}}),A=k,j=(0,n.ref)({apikey:``,open:!1,options:null});const M=e=>{j.value.options=e,j.value.open=!0},N=()=>{j.value.open=!1};var P=()=>{j.value.open=!1},F=e=>{j.value.options?.onSuccess?.(e),setTimeout(()=>{j.value.open=!1},1e3)},I=e=>{j.value.options?.onExpired?.(e)},L=e=>{j.value.options?.onFailed?.(e)},R=e=>{j.value.options?.onError?.(e)};const z={install(e,t){if(!t?.apikey)throw Error(`Cppay plugin requires an apikey`);j.value.apikey=t.apikey,e.config.globalProperties.$showPayment=M,e.config.globalProperties.$closePayment=N;let r=e=>{e.key===`Escape`&&j.value.open&&P()},i=document.createElement(`div`);document.body.appendChild(i),(0,n.createApp)({setup(){return()=>j.value.options?(0,n.h)(A,{modelValue:j.value.open,"onUpdate:modelValue":e=>{j.value.open=e,e||P()},apikey:j.value.apikey,plain:j.value.options.plain,orderId:j.value.options.orderId,amount:j.value.options.amount,intervalDays:j.value.options.intervalDays,onSuccess:F,onExpired:I,onFailed:L,onError:R}):null}}).mount(i),j.value.open&&document.addEventListener(`keydown`,r),e.config.globalProperties.$watchEffect?.(()=>{j.value.open?document.addEventListener(`keydown`,r):document.removeEventListener(`keydown`,r)})}},B=()=>{if(!j.value.apikey)throw Error(`useCppayPayment must be used after installing CppayPlugin`);return{showPayment:M,closePayment:N}};e.n(e.r),exports.CppayPlugin=z,exports.PaymentContent=w,exports.PaymentDialog=A,exports.showPayment=M,exports.useCppayPayment=B;
package/dist/vue.js CHANGED
@@ -1,4 +1,4 @@
1
- import { t as cppay_default } from "./cppay-C_gp2ZZ3.js";
1
+ import { t as cppay_default } from "./cppay-DnoMkyVy.js";
2
2
  import { n as injectStyle, r as payment_dialog_default, t as getLocaleMessages } from "./locales-DGvDecya.js";
3
3
  import { Fragment, computed, createApp, createCommentVNode, createElementBlock, createElementVNode, createVNode, defineComponent, h, normalizeClass, onMounted, onUnmounted, openBlock, ref, renderList, renderSlot, toDisplayString, watch, withCtx } from "vue";
4
4
  import * as QRCode from "qrcode";
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "cppay-sdk",
3
- "version": "0.0.2-beta.34",
3
+ "version": "0.0.2-beta.35",
4
4
  "type": "module",
5
5
  "scripts": {
6
6
  "dev": "vite",