cppay-sdk 0.0.2-beta.31 → 0.0.2-beta.32

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.
@@ -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={payment_id:e},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={subscription_id:e},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.paymentId)}}async checkSubscriptionPaymentStatus(e){return{...await this.api.checkSubcriptionPaymentStatus(e.subscriptionId)}}async getSubcriptionPayments(e){return{...await this.api.getSubcriptionPayments(e.subscriptionId)}}},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.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}});
@@ -99,7 +99,7 @@ var BASE_URL = "http://192.168.0.162:8000", request = async (e, t, r) => {
99
99
  throw Error("Unsupported payment mode");
100
100
  }
101
101
  async checkOnetimePaymentStatus(e) {
102
- let t = { payment_id: e }, n = await cppayRequest(this.authorization, {
102
+ let t = "orderId" in e ? { order_no: e.orderId } : { payment_id: e.paymentId }, n = await cppayRequest(this.authorization, {
103
103
  url: "/api/payment/query",
104
104
  params: t
105
105
  });
@@ -116,7 +116,7 @@ var BASE_URL = "http://192.168.0.162:8000", request = async (e, t, r) => {
116
116
  };
117
117
  }
118
118
  async checkSubcriptionPaymentStatus(e) {
119
- let t = { subscription_id: e }, n = await cppayRequest(this.authorization, {
119
+ let t = "orderId" in e ? { order_no: e.orderId } : { subscription_id: e.subscriptionId }, n = await cppayRequest(this.authorization, {
120
120
  url: "/api/subscription/query",
121
121
  params: t
122
122
  });
@@ -206,13 +206,10 @@ var BASE_URL = "http://192.168.0.162:8000", request = async (e, t, r) => {
206
206
  };
207
207
  }
208
208
  async checkOnetimePaymentStatus(e) {
209
- return { ...await this.api.checkOnetimePaymentStatus(e.paymentId) };
209
+ return { ...await this.api.checkOnetimePaymentStatus(e) };
210
210
  }
211
211
  async checkSubscriptionPaymentStatus(e) {
212
- return { ...await this.api.checkSubcriptionPaymentStatus(e.subscriptionId) };
213
- }
214
- async getSubcriptionPayments(e) {
215
- return { ...await this.api.getSubcriptionPayments(e.subscriptionId) };
212
+ return { ...await this.api.checkSubcriptionPaymentStatus(e) };
216
213
  }
217
214
  };
218
215
  export { CHAIN_ICONS as n, TOKEN_ICONS as r, cppay_default as t };
package/dist/index.cjs CHANGED
@@ -1 +1 @@
1
- const e=require(`./cppay-DXZVBIDi.cjs`);exports.CHAIN_ICONS=e.n,exports.Cppay=e.t,exports.TOKEN_ICONS=e.r;
1
+ const e=require(`./cppay-BYRjTzRF.cjs`);exports.CHAIN_ICONS=e.n,exports.Cppay=e.t,exports.TOKEN_ICONS=e.r;
package/dist/index.d.ts CHANGED
@@ -32,17 +32,15 @@ export declare class Cppay {
32
32
  intervalDays: number;
33
33
  }): Promise<SubscriptionPaymentInfo>;
34
34
  checkOnetimePaymentStatus(params: {
35
+ orderId: string;
36
+ } | {
35
37
  paymentId: string;
36
38
  }): Promise<OnetimePaymentOrderStatus>;
37
39
  checkSubscriptionPaymentStatus(params: {
40
+ orderId: string;
41
+ } | {
38
42
  subscriptionId: string;
39
43
  }): Promise<SubscriptionPaymentOrderStatus>;
40
- getSubcriptionPayments(params: {
41
- subscriptionId: string;
42
- }): Promise<{
43
- total: number;
44
- payments: SubscriptionPayment[];
45
- }>;
46
44
  }
47
45
 
48
46
  declare class CppayApi {
@@ -70,7 +68,11 @@ declare class CppayApi {
70
68
  expireAt: number;
71
69
  }>;
72
70
  createX402Payment(): Promise<void>;
73
- checkOnetimePaymentStatus(paymentId: string): Promise<{
71
+ checkOnetimePaymentStatus(_params: {
72
+ orderId: string;
73
+ } | {
74
+ paymentId: string;
75
+ }): Promise<{
74
76
  orderId: string;
75
77
  paymentId: string;
76
78
  chain: string;
@@ -81,7 +83,11 @@ declare class CppayApi {
81
83
  expireAt: number;
82
84
  status: PaymentStatus;
83
85
  }>;
84
- checkSubcriptionPaymentStatus(subscriptionId: string): Promise<{
86
+ checkSubcriptionPaymentStatus(_params: {
87
+ orderId: string;
88
+ } | {
89
+ subscriptionId: string;
90
+ }): Promise<{
85
91
  orderId: string;
86
92
  subscriptionId: string;
87
93
  chain: string;
@@ -125,6 +131,7 @@ export declare interface OnetimePaymentInfo {
125
131
  paymentChain: string;
126
132
  paymentToken: string;
127
133
  receiveAddress: Address;
134
+ expireAt: number;
128
135
  }
129
136
 
130
137
  export declare interface OnetimePaymentOrderStatus {
@@ -197,6 +204,9 @@ export { }
197
204
 
198
205
  declare module "@vue/runtime-core" {
199
206
  interface ComponentCustomProperties {
207
+ /** 显示支付对话框的全局方法 */
200
208
  $showPayment: typeof showPayment;
209
+ /** 关闭支付对话框的全局方法 */
210
+ $closePayment: typeof closePayment;
201
211
  }
202
212
  }
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-BPtRBPjB.js";
1
+ import { n as CHAIN_ICONS, r as TOKEN_ICONS, t as cppay_default } from "./cppay-C_gp2ZZ3.js";
2
2
  export { CHAIN_ICONS, cppay_default as Cppay, TOKEN_ICONS };
@@ -0,0 +1 @@
1
+ var e=Object.create,t=Object.defineProperty,n=Object.getOwnPropertyDescriptor,r=Object.getOwnPropertyNames,i=Object.getPrototypeOf,a=Object.prototype.hasOwnProperty,o=(e,i,o,s)=>{if(i&&typeof i==`object`||typeof i==`function`)for(var c=r(i),l=0,u=c.length,d;l<u;l++)d=c[l],!a.call(e,d)&&d!==o&&t(e,d,{get:(e=>i[e]).bind(null,d),enumerable:!(s=n(i,d))||s.enumerable});return e},s=(n,r,a)=>(a=n==null?{}:e(i(n)),o(r||!n||!n.__esModule?t(a,`default`,{value:n,enumerable:!0}):a,n)),c=`:root{--cppay-bg:#fff;--cppay-bg-secondary:#fafafa;--cppay-surface:#f7f7f8;--cppay-surface-hover:#efeff0;--cppay-text-main:#18181b;--cppay-text-sub:#71717a;--cppay-text-muted:#a1a1aa;--cppay-accent:#18181b;--cppay-accent-primary:#6366f1;--cppay-accent-primary-light:#eef2ff;--cppay-accent-primary-border:#c7d2fe;--cppay-border:#e4e4e7;--cppay-border-dark:#d4d4d8;--cppay-danger:#ef4444;--cppay-danger-light:#fee2e2;--cppay-danger-border:#fecaca;--cppay-warning:#f97316;--cppay-warning-light:#fef3c7;--cppay-warning-border:#fcd34d;--cppay-success:#16a34a;--cppay-radius-lg:24px;--cppay-radius-md:16px;--cppay-radius-sm:12px;--cppay-radius-xs:8px;--cppay-space-xs:4px;--cppay-space-sm:8px;--cppay-space-md:12px;--cppay-space-lg:16px;--cppay-space-xl:24px;--cppay-space-2xl:32px;--cppay-shadow-sm:0 1px 2px 0 #0000000d;--cppay-shadow-md:0 4px 6px -1px #0000001a;--cppay-shadow-lg:0 10px 15px -3px #0000001a;--cppay-shadow-xl:0 20px 25px -5px #0000001a;--cppay-transition:all .2s cubic-bezier(.4, 0, .2, 1)}._cppay-overlay{-webkit-backdrop-filter:blur(4px);z-index:999;padding:var(--cppay-space-lg);background-color:#00000080;justify-content:center;align-items:center;animation:.3s ease-out _cppay-fadeIn;display:flex;position:fixed;inset:0}._cppay-dialog{background-color:var(--cppay-bg);border-radius:var(--cppay-radius-md);box-shadow:var(--cppay-shadow-xl);flex-direction:column;width:100%;max-width:500px;max-height:90vh;font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Helvetica Neue,sans-serif;animation:.3s cubic-bezier(.4,0,.2,1) _cppay-slideUp;display:flex;overflow:hidden}._cppay-header{padding:var(--cppay-space-xl);border-bottom:1px solid var(--cppay-border);background:var(--cppay-bg);flex-shrink:0;justify-content:space-between;align-items:center;display:flex}._cppay-title{color:var(--cppay-text-main);letter-spacing:-.01em;margin:0;font-size:20px;font-weight:600}._cppay-close-btn{color:var(--cppay-text-muted);cursor:pointer;background:0 0;border:none;border-radius:50%;justify-content:center;align-items:center;padding:.5rem;transition:all .2s;display:flex}._cppay-close-btn:hover{background-color:var(--cppay-surface);color:var(--cppay-text-main)}._cppay-close-btn svg{width:1.5rem;height:1.5rem}._cppay-content{flex:1;padding:1rem 2rem 2rem;overflow-y:auto}._cppay-content::-webkit-scrollbar{width:0;height:0}._cppay-section{margin-bottom:1.5rem}._cppay-section:last-child{margin-bottom:0}._cppay-label{color:var(--cppay-text-sub);margin-bottom:.75rem;font-size:.875rem;font-weight:600;display:block}._cppay-grid{grid-template-columns:repeat(2,1fr);gap:.75rem;display:grid}._cppay-select-btn{border-radius:var(--cppay-radius-sm);background:var(--cppay-surface);cursor:pointer;color:var(--cppay-text-main);border:2px solid #0000;justify-content:flex-start;align-items:center;gap:.75rem;padding:.875rem 1rem;font-family:inherit;font-size:.95rem;font-weight:500;transition:all .2s cubic-bezier(.4,0,.2,1);display:flex;position:relative}._cppay-select-btn:hover{background-color:var(--cppay-surface-hover)}._cppay-select-btn._cppay-selected{background-color:var(--cppay-bg);border-color:var(--cppay-accent);box-shadow:0 4px 12px #0000000d}._cppay-select-btn img{object-fit:cover;border-radius:50%;width:1.5rem;height:1.5rem}._cppay-price-box{text-align:center;padding:1.5rem 0;position:relative}._cppay-price-label{color:var(--cppay-text-sub);margin-bottom:.5rem;font-size:.875rem;font-weight:500;display:block}._cppay-price-main{color:var(--cppay-text-main);letter-spacing:-.03em;justify-content:center;align-items:baseline;gap:.5rem;font-size:2.5rem;font-weight:800;line-height:1.1;display:flex}._cppay-price-symbol{color:var(--cppay-text-sub);font-size:1rem;font-weight:600;transform:translateY(-4px)}._cppay-price-sub{color:var(--cppay-text-muted);margin-top:.75rem;font-size:.95rem;font-weight:500}._cppay-btn{border-radius:var(--cppay-radius-md);cursor:pointer;letter-spacing:-.01em;border:none;justify-content:center;align-items:center;gap:.5rem;width:100%;padding:1rem;font-size:1rem;font-weight:600;transition:all .2s;display:flex}._cppay-btn-primary{background:var(--cppay-accent);color:#fff;box-shadow:0 4px 6px -1px #0000001a}._cppay-btn-primary:hover:not(:disabled){background:#222;transform:translateY(-1px);box-shadow:0 10px 15px -3px #0000001a}._cppay-btn-primary:active:not(:disabled){transform:scale(.98)}._cppay-btn-primary:disabled{color:#a3a3a3;cursor:not-allowed;box-shadow:none;background:#e5e5e5}._cppay-btn-text{color:var(--cppay-text-sub);background:0 0;margin-top:.5rem;font-size:.875rem}._cppay-btn-text:hover:not(:disabled){color:var(--cppay-text-main)}._cppay-btn-text:disabled{opacity:.5;cursor:not-allowed}._cppay-qr-container{justify-content:center;margin:1.5rem 0 2rem;display:flex}._cppay-qr-code{border-radius:var(--cppay-radius-md);border:1px solid var(--cppay-border);background:#fff;padding:.75rem;box-shadow:0 10px 20px #00000008}._cppay-qr-image{border-radius:8px;width:190px;height:190px;display:block}._cppay-info-box{background-color:var(--cppay-surface);border-radius:var(--cppay-radius-sm);border:1px solid #0000;margin-bottom:.75rem;padding:1rem;transition:all .2s}._cppay-info-box:hover{background-color:var(--cppay-surface-hover);border-color:var(--cppay-border)}._cppay-info-header{justify-content:space-between;align-items:center;margin-bottom:.5rem;display:flex}._cppay-info-label{text-transform:uppercase;color:var(--cppay-text-sub);letter-spacing:.05em;font-size:.75rem;font-weight:700}._cppay-info-label-flex{justify-content:space-between;align-items:center;gap:.5rem;display:flex}._cppay-info-value{color:var(--cppay-text-main);word-break:break-all;font-size:.95rem}._cppay-info-value-flex{flex-direction:column;gap:.5rem;margin-top:.5rem;display:flex}._cppay-info-value-flex span:first-child{font-size:1rem;font-weight:600}._cppay-info-value-flex span:last-child{color:var(--cppay-text-muted);font-size:.85rem}._cppay-info-flex-container{flex-direction:column;gap:.75rem;display:flex}._cppay-info-flex-child{flex-direction:column;gap:.5rem;display:flex}._cppay-address-row{justify-content:space-between;align-items:center;gap:.75rem;margin-top:.5rem;display:flex}._cppay-address-row code{border:1px solid var(--cppay-border);color:var(--cppay-text-main);word-break:break-all;overflow-wrap:break-word;background:#fff;border-radius:4px;flex:1;padding:.5rem .75rem;font-family:SF Mono,Monaco,Inconsolata,monospace;font-size:.85rem}._cppay-countdown{color:#d97706;background:#fffbeb;border-radius:4px;padding:2px 6px;font-size:.75rem;font-weight:600}._cppay-address-wrapper{justify-content:space-between;align-items:center;gap:.5rem;display:flex}._cppay-address-text{color:var(--cppay-text-main);text-overflow:ellipsis;white-space:nowrap;font-family:SF Mono,Monaco,monospace;font-size:.9rem;overflow:hidden}._cppay-copy-btn{border:1px solid var(--cppay-border);cursor:pointer;width:32px;height:32px;color:var(--cppay-text-main);background:#fff;border-radius:6px;flex-shrink:0;justify-content:center;align-items:center;padding:0;transition:all .2s;display:flex}._cppay-copy-btn:hover:not(._cppay-copy-success){background:var(--cppay-text-main);border-color:var(--cppay-text-main);color:#fff}._cppay-copy-btn._cppay-copy-success{color:#fff;background:#22c55e;border-color:#22c55e;animation:.3s ease-out _cppay-copyPulse}._cppay-copy-icon{justify-content:center;align-items:center;width:1rem;height:1rem;display:flex}._cppay-subscription-box{background-color:#fef3c7;border-color:#fcd34d}._cppay-subscription-label{color:#92400e;font-size:.85rem;font-weight:600}._cppay-subscription-message{color:#b45309;font-size:.85rem;line-height:1.5}._cppay-state-container{text-align:center;padding:3rem 1rem}._cppay-state-icon{background:var(--cppay-surface);border-radius:50%;justify-content:center;align-items:center;width:80px;height:80px;margin:0 auto 1.5rem;font-size:2.5rem;display:flex}._cppay-wallet-address-btn{color:var(--cppay-text-muted);margin-top:.5rem;cursor:pointer;background:0 0;border-radius:0;justify-content:center;align-items:center;gap:.5rem;margin-inline:auto;padding:.5rem 0;font-size:.85rem;font-weight:400;transition:all .2s;display:inline-flex}._cppay-wallet-address-btn:hover:not(:disabled){border-bottom-color:var(--cppay-text-main);color:var(--cppay-text-main);background:0 0}._cppay-wallet-address-btn:active:not(:disabled){transform:scale(.98)}._cppay-wallet-address-btn:disabled{opacity:.5;cursor:not-allowed}._cppay-wallet-icon{width:1rem;height:1rem;color:inherit;flex-shrink:0}._cppay-wallet-address-text{text-align:center;color:inherit;flex-shrink:0;font-family:SF Mono,Monaco,Inconsolata,monospace;font-size:.8rem}._cppay-wallet-arrow{width:.85rem;height:.85rem;color:inherit;opacity:.7;flex-shrink:0;transition:transform .2s}._cppay-wallet-address-btn:hover:not(:disabled) ._cppay-wallet-arrow{opacity:1;transform:translateY(1px)}._cppay-wallet-status{background:var(--cppay-surface);border-radius:var(--cppay-radius-sm);justify-content:space-between;align-items:center;margin-top:1rem;padding:.75rem 1rem;display:flex}._cppay-wallet-addr{color:var(--cppay-text-sub);font-family:monospace;font-size:.875rem}._cppay-divider{border-color:var(--cppay-border);border-top:0}._cppay-wallet-disconnect{color:var(--cppay-text-muted);cursor:pointer;background:0 0;border:none;font-size:.75rem}._cppay-wallet-disconnect:hover{color:var(--cppay-danger)}._cppay-error-tooltip-wrapper{position:relative}._cppay-error-tooltip{color:#991b1b;cursor:help;background-color:#fef2f2;border:1px solid #fecaca;border-radius:.375rem;align-items:center;gap:.5rem;margin-bottom:.5rem;padding:.5rem .75rem;font-size:.8125rem;line-height:1.25;transition:all .2s;display:flex}._cppay-error-tooltip:hover{background-color:#fee2e2;border-color:#fca5a5}._cppay-error-tooltip svg{flex-shrink:0;width:1rem;height:1rem}._cppay-error-tooltip span{text-overflow:ellipsis;white-space:nowrap;flex:1;min-width:0;overflow:hidden}._cppay-error-tooltip-full{color:#fff;z-index:10;word-wrap:break-word;white-space:normal;background-color:#7f1d1d;border-radius:.5rem;margin-bottom:.25rem;padding:.625rem .875rem;font-size:.8125rem;line-height:1.4;animation:.2s ease-out _cppay-tooltipFadeIn;position:absolute;bottom:100%;left:0;right:0;box-shadow:0 4px 6px -1px #0000001a,0 2px 4px -1px #0000000f}._cppay-error-tooltip-full:after{content:"";border:.375rem solid #0000;border-top-color:#7f1d1d;position:absolute;top:100%;left:1rem}@keyframes _cppay-fadeIn{0%{opacity:0}to{opacity:1}}@keyframes _cppay-slideUp{0%{opacity:0;transform:translateY(20px)}to{opacity:1;transform:translateY(0)}}@keyframes _cppay-scaleIn{0%{opacity:0;transform:scale(.95)translateY(10px)}to{opacity:1;transform:scale(1)translateY(0)}}@keyframes _cppay-copyPulse{0%{transform:scale(1)}50%{transform:scale(1.1)}to{transform:scale(1)}}@keyframes _cppay-pulse{0%,to{opacity:1}50%{opacity:.7}}@keyframes _cppay-tooltipFadeIn{0%{opacity:0;transform:translateY(-4px)}to{opacity:1;transform:translateY(0)}}@media (max-width:640px){._cppay-dialog{max-width:100%;margin:var(--cppay-space-lg);border-radius:var(--cppay-radius-md)}._cppay-header{padding:var(--cppay-space-lg)}._cppay-title{font-size:18px}._cppay-content{padding:var(--cppay-space-lg)}._cppay-grid{gap:var(--cppay-space-sm);grid-template-columns:repeat(auto-fit,minmax(80px,1fr))}._cppay-select-btn{padding:var(--cppay-space-md) var(--cppay-space-sm);font-size:12px}._cppay-select-btn img{width:28px;height:28px}._cppay-price-main{font-size:18px}._cppay-qr-image{width:160px;height:160px}}`;function l(e){if(typeof document>`u`||document.getElementById(`_cppay-payment-dialog-style`))return;let t=document.createElement(`style`);t.id=`_cppay-payment-dialog-style`,t.textContent=e,document.head.appendChild(t)}Object.defineProperty(exports,`n`,{enumerable:!0,get:function(){return c}}),Object.defineProperty(exports,`r`,{enumerable:!0,get:function(){return s}}),Object.defineProperty(exports,`t`,{enumerable:!0,get:function(){return l}});
@@ -0,0 +1,7 @@
1
+ var payment_dialog_default = ":root{--cppay-bg:#fff;--cppay-bg-secondary:#fafafa;--cppay-surface:#f7f7f8;--cppay-surface-hover:#efeff0;--cppay-text-main:#18181b;--cppay-text-sub:#71717a;--cppay-text-muted:#a1a1aa;--cppay-accent:#18181b;--cppay-accent-primary:#6366f1;--cppay-accent-primary-light:#eef2ff;--cppay-accent-primary-border:#c7d2fe;--cppay-border:#e4e4e7;--cppay-border-dark:#d4d4d8;--cppay-danger:#ef4444;--cppay-danger-light:#fee2e2;--cppay-danger-border:#fecaca;--cppay-warning:#f97316;--cppay-warning-light:#fef3c7;--cppay-warning-border:#fcd34d;--cppay-success:#16a34a;--cppay-radius-lg:24px;--cppay-radius-md:16px;--cppay-radius-sm:12px;--cppay-radius-xs:8px;--cppay-space-xs:4px;--cppay-space-sm:8px;--cppay-space-md:12px;--cppay-space-lg:16px;--cppay-space-xl:24px;--cppay-space-2xl:32px;--cppay-shadow-sm:0 1px 2px 0 #0000000d;--cppay-shadow-md:0 4px 6px -1px #0000001a;--cppay-shadow-lg:0 10px 15px -3px #0000001a;--cppay-shadow-xl:0 20px 25px -5px #0000001a;--cppay-transition:all .2s cubic-bezier(.4, 0, .2, 1)}._cppay-overlay{-webkit-backdrop-filter:blur(4px);z-index:999;padding:var(--cppay-space-lg);background-color:#00000080;justify-content:center;align-items:center;animation:.3s ease-out _cppay-fadeIn;display:flex;position:fixed;inset:0}._cppay-dialog{background-color:var(--cppay-bg);border-radius:var(--cppay-radius-md);box-shadow:var(--cppay-shadow-xl);flex-direction:column;width:100%;max-width:500px;max-height:90vh;font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Helvetica Neue,sans-serif;animation:.3s cubic-bezier(.4,0,.2,1) _cppay-slideUp;display:flex;overflow:hidden}._cppay-header{padding:var(--cppay-space-xl);border-bottom:1px solid var(--cppay-border);background:var(--cppay-bg);flex-shrink:0;justify-content:space-between;align-items:center;display:flex}._cppay-title{color:var(--cppay-text-main);letter-spacing:-.01em;margin:0;font-size:20px;font-weight:600}._cppay-close-btn{color:var(--cppay-text-muted);cursor:pointer;background:0 0;border:none;border-radius:50%;justify-content:center;align-items:center;padding:.5rem;transition:all .2s;display:flex}._cppay-close-btn:hover{background-color:var(--cppay-surface);color:var(--cppay-text-main)}._cppay-close-btn svg{width:1.5rem;height:1.5rem}._cppay-content{flex:1;padding:1rem 2rem 2rem;overflow-y:auto}._cppay-content::-webkit-scrollbar{width:0;height:0}._cppay-section{margin-bottom:1.5rem}._cppay-section:last-child{margin-bottom:0}._cppay-label{color:var(--cppay-text-sub);margin-bottom:.75rem;font-size:.875rem;font-weight:600;display:block}._cppay-grid{grid-template-columns:repeat(2,1fr);gap:.75rem;display:grid}._cppay-select-btn{border-radius:var(--cppay-radius-sm);background:var(--cppay-surface);cursor:pointer;color:var(--cppay-text-main);border:2px solid #0000;justify-content:flex-start;align-items:center;gap:.75rem;padding:.875rem 1rem;font-family:inherit;font-size:.95rem;font-weight:500;transition:all .2s cubic-bezier(.4,0,.2,1);display:flex;position:relative}._cppay-select-btn:hover{background-color:var(--cppay-surface-hover)}._cppay-select-btn._cppay-selected{background-color:var(--cppay-bg);border-color:var(--cppay-accent);box-shadow:0 4px 12px #0000000d}._cppay-select-btn img{object-fit:cover;border-radius:50%;width:1.5rem;height:1.5rem}._cppay-price-box{text-align:center;padding:1.5rem 0;position:relative}._cppay-price-label{color:var(--cppay-text-sub);margin-bottom:.5rem;font-size:.875rem;font-weight:500;display:block}._cppay-price-main{color:var(--cppay-text-main);letter-spacing:-.03em;justify-content:center;align-items:baseline;gap:.5rem;font-size:2.5rem;font-weight:800;line-height:1.1;display:flex}._cppay-price-symbol{color:var(--cppay-text-sub);font-size:1rem;font-weight:600;transform:translateY(-4px)}._cppay-price-sub{color:var(--cppay-text-muted);margin-top:.75rem;font-size:.95rem;font-weight:500}._cppay-btn{border-radius:var(--cppay-radius-md);cursor:pointer;letter-spacing:-.01em;border:none;justify-content:center;align-items:center;gap:.5rem;width:100%;padding:1rem;font-size:1rem;font-weight:600;transition:all .2s;display:flex}._cppay-btn-primary{background:var(--cppay-accent);color:#fff;box-shadow:0 4px 6px -1px #0000001a}._cppay-btn-primary:hover:not(:disabled){background:#222;transform:translateY(-1px);box-shadow:0 10px 15px -3px #0000001a}._cppay-btn-primary:active:not(:disabled){transform:scale(.98)}._cppay-btn-primary:disabled{color:#a3a3a3;cursor:not-allowed;box-shadow:none;background:#e5e5e5}._cppay-btn-text{color:var(--cppay-text-sub);background:0 0;margin-top:.5rem;font-size:.875rem}._cppay-btn-text:hover:not(:disabled){color:var(--cppay-text-main)}._cppay-btn-text:disabled{opacity:.5;cursor:not-allowed}._cppay-qr-container{justify-content:center;margin:1.5rem 0 2rem;display:flex}._cppay-qr-code{border-radius:var(--cppay-radius-md);border:1px solid var(--cppay-border);background:#fff;padding:.75rem;box-shadow:0 10px 20px #00000008}._cppay-qr-image{border-radius:8px;width:190px;height:190px;display:block}._cppay-info-box{background-color:var(--cppay-surface);border-radius:var(--cppay-radius-sm);border:1px solid #0000;margin-bottom:.75rem;padding:1rem;transition:all .2s}._cppay-info-box:hover{background-color:var(--cppay-surface-hover);border-color:var(--cppay-border)}._cppay-info-header{justify-content:space-between;align-items:center;margin-bottom:.5rem;display:flex}._cppay-info-label{text-transform:uppercase;color:var(--cppay-text-sub);letter-spacing:.05em;font-size:.75rem;font-weight:700}._cppay-info-label-flex{justify-content:space-between;align-items:center;gap:.5rem;display:flex}._cppay-info-value{color:var(--cppay-text-main);word-break:break-all;font-size:.95rem}._cppay-info-value-flex{flex-direction:column;gap:.5rem;margin-top:.5rem;display:flex}._cppay-info-value-flex span:first-child{font-size:1rem;font-weight:600}._cppay-info-value-flex span:last-child{color:var(--cppay-text-muted);font-size:.85rem}._cppay-info-flex-container{flex-direction:column;gap:.75rem;display:flex}._cppay-info-flex-child{flex-direction:column;gap:.5rem;display:flex}._cppay-address-row{justify-content:space-between;align-items:center;gap:.75rem;margin-top:.5rem;display:flex}._cppay-address-row code{border:1px solid var(--cppay-border);color:var(--cppay-text-main);word-break:break-all;overflow-wrap:break-word;background:#fff;border-radius:4px;flex:1;padding:.5rem .75rem;font-family:SF Mono,Monaco,Inconsolata,monospace;font-size:.85rem}._cppay-countdown{color:#d97706;background:#fffbeb;border-radius:4px;padding:2px 6px;font-size:.75rem;font-weight:600}._cppay-address-wrapper{justify-content:space-between;align-items:center;gap:.5rem;display:flex}._cppay-address-text{color:var(--cppay-text-main);text-overflow:ellipsis;white-space:nowrap;font-family:SF Mono,Monaco,monospace;font-size:.9rem;overflow:hidden}._cppay-copy-btn{border:1px solid var(--cppay-border);cursor:pointer;width:32px;height:32px;color:var(--cppay-text-main);background:#fff;border-radius:6px;flex-shrink:0;justify-content:center;align-items:center;padding:0;transition:all .2s;display:flex}._cppay-copy-btn:hover:not(._cppay-copy-success){background:var(--cppay-text-main);border-color:var(--cppay-text-main);color:#fff}._cppay-copy-btn._cppay-copy-success{color:#fff;background:#22c55e;border-color:#22c55e;animation:.3s ease-out _cppay-copyPulse}._cppay-copy-icon{justify-content:center;align-items:center;width:1rem;height:1rem;display:flex}._cppay-subscription-box{background-color:#fef3c7;border-color:#fcd34d}._cppay-subscription-label{color:#92400e;font-size:.85rem;font-weight:600}._cppay-subscription-message{color:#b45309;font-size:.85rem;line-height:1.5}._cppay-state-container{text-align:center;padding:3rem 1rem}._cppay-state-icon{background:var(--cppay-surface);border-radius:50%;justify-content:center;align-items:center;width:80px;height:80px;margin:0 auto 1.5rem;font-size:2.5rem;display:flex}._cppay-wallet-address-btn{color:var(--cppay-text-muted);margin-top:.5rem;cursor:pointer;background:0 0;border-radius:0;justify-content:center;align-items:center;gap:.5rem;margin-inline:auto;padding:.5rem 0;font-size:.85rem;font-weight:400;transition:all .2s;display:inline-flex}._cppay-wallet-address-btn:hover:not(:disabled){border-bottom-color:var(--cppay-text-main);color:var(--cppay-text-main);background:0 0}._cppay-wallet-address-btn:active:not(:disabled){transform:scale(.98)}._cppay-wallet-address-btn:disabled{opacity:.5;cursor:not-allowed}._cppay-wallet-icon{width:1rem;height:1rem;color:inherit;flex-shrink:0}._cppay-wallet-address-text{text-align:center;color:inherit;flex-shrink:0;font-family:SF Mono,Monaco,Inconsolata,monospace;font-size:.8rem}._cppay-wallet-arrow{width:.85rem;height:.85rem;color:inherit;opacity:.7;flex-shrink:0;transition:transform .2s}._cppay-wallet-address-btn:hover:not(:disabled) ._cppay-wallet-arrow{opacity:1;transform:translateY(1px)}._cppay-wallet-status{background:var(--cppay-surface);border-radius:var(--cppay-radius-sm);justify-content:space-between;align-items:center;margin-top:1rem;padding:.75rem 1rem;display:flex}._cppay-wallet-addr{color:var(--cppay-text-sub);font-family:monospace;font-size:.875rem}._cppay-divider{border-color:var(--cppay-border);border-top:0}._cppay-wallet-disconnect{color:var(--cppay-text-muted);cursor:pointer;background:0 0;border:none;font-size:.75rem}._cppay-wallet-disconnect:hover{color:var(--cppay-danger)}._cppay-error-tooltip-wrapper{position:relative}._cppay-error-tooltip{color:#991b1b;cursor:help;background-color:#fef2f2;border:1px solid #fecaca;border-radius:.375rem;align-items:center;gap:.5rem;margin-bottom:.5rem;padding:.5rem .75rem;font-size:.8125rem;line-height:1.25;transition:all .2s;display:flex}._cppay-error-tooltip:hover{background-color:#fee2e2;border-color:#fca5a5}._cppay-error-tooltip svg{flex-shrink:0;width:1rem;height:1rem}._cppay-error-tooltip span{text-overflow:ellipsis;white-space:nowrap;flex:1;min-width:0;overflow:hidden}._cppay-error-tooltip-full{color:#fff;z-index:10;word-wrap:break-word;white-space:normal;background-color:#7f1d1d;border-radius:.5rem;margin-bottom:.25rem;padding:.625rem .875rem;font-size:.8125rem;line-height:1.4;animation:.2s ease-out _cppay-tooltipFadeIn;position:absolute;bottom:100%;left:0;right:0;box-shadow:0 4px 6px -1px #0000001a,0 2px 4px -1px #0000000f}._cppay-error-tooltip-full:after{content:\"\";border:.375rem solid #0000;border-top-color:#7f1d1d;position:absolute;top:100%;left:1rem}@keyframes _cppay-fadeIn{0%{opacity:0}to{opacity:1}}@keyframes _cppay-slideUp{0%{opacity:0;transform:translateY(20px)}to{opacity:1;transform:translateY(0)}}@keyframes _cppay-scaleIn{0%{opacity:0;transform:scale(.95)translateY(10px)}to{opacity:1;transform:scale(1)translateY(0)}}@keyframes _cppay-copyPulse{0%{transform:scale(1)}50%{transform:scale(1.1)}to{transform:scale(1)}}@keyframes _cppay-pulse{0%,to{opacity:1}50%{opacity:.7}}@keyframes _cppay-tooltipFadeIn{0%{opacity:0;transform:translateY(-4px)}to{opacity:1;transform:translateY(0)}}@media (max-width:640px){._cppay-dialog{max-width:100%;margin:var(--cppay-space-lg);border-radius:var(--cppay-radius-md)}._cppay-header{padding:var(--cppay-space-lg)}._cppay-title{font-size:18px}._cppay-content{padding:var(--cppay-space-lg)}._cppay-grid{gap:var(--cppay-space-sm);grid-template-columns:repeat(auto-fit,minmax(80px,1fr))}._cppay-select-btn{padding:var(--cppay-space-md) var(--cppay-space-sm);font-size:12px}._cppay-select-btn img{width:28px;height:28px}._cppay-price-main{font-size:18px}._cppay-qr-image{width:160px;height:160px}}";
2
+ function injectStyle(e) {
3
+ if (typeof document > "u" || document.getElementById("_cppay-payment-dialog-style")) return;
4
+ let t = document.createElement("style");
5
+ t.id = "_cppay-payment-dialog-style", t.textContent = e, document.head.appendChild(t);
6
+ }
7
+ export { payment_dialog_default as n, injectStyle as t };
package/dist/react.cjs CHANGED
@@ -1 +1 @@
1
- const e=require(`./inject-style-Boo8CMsU.cjs`),t=require(`./cppay-DXZVBIDi.cjs`);let n=require(`qrcode`);n=e.r(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.r(l);let u=require(`react/jsx-runtime`);var d=({open:e,onClose:d,apikey:f,plain:p,orderId:m,amount:h,intervalDays:ee,onExpired:te,onSuccess:g,onFailed:ne,onError:_})=>{let v=(0,l.useMemo)(()=>new t.t(f),[f]),[y,b]=(0,l.useState)(`select`),[x,S]=(0,l.useState)(!1),[C,w]=(0,l.useState)(!1),[T,E]=(0,l.useState)(),[D,O]=(0,l.useState)(!1),[k,re]=(0,l.useState)([]),[A,j]=(0,l.useState)(),[M,N]=(0,l.useState)(),[P,ie]=(0,l.useState)(),[F,I]=(0,l.useState)(),[L,R]=(0,l.useState)(!1),[z,B]=(0,l.useState)(),V=(0,l.useRef)(null),H=(0,l.useRef)(null);(0,l.useEffect)(()=>{typeof window<`u`&&!V.current&&(V.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}}),I(V.current.getAddress()),B(V.current.getProvider(`eip155`)),V.current.subscribeAccount(e=>{e.isConnected?I(e.address):(I(void 0),B(void 0))}),V.current.subscribeProviders(e=>{let t=e?.eip155;B(t)}))},[]);let U=async()=>{try{R(!0),E(void 0),V.current&&await V.current.open()}catch(e){console.error(`钱包连接失败:`,e),E(e instanceof Error?e.message:`钱包连接失败`),_?.(e)}finally{R(!1)}},W=(0,l.useMemo)(()=>k.find(e=>e.chain===A),[k,A]),G=(0,l.useMemo)(()=>W?.tokens||[],[W]),K=(0,l.useMemo)(()=>G.find(e=>e.symbol===M),[G,M]),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+$/,``)},Y=(0,l.useMemo)(()=>{if(!M||!K)return`0`;let e=parseFloat(K.price);if(isNaN(e)||e===0)return`0`;let t=q(M);return J((parseFloat(h)/e).toFixed(t),t)},[h,M,K]),ae=async()=>{try{S(!0),E(void 0);let e=await v.getSupportedChains();re(e),e.length>0&&j(e[0].chain)}catch(e){E(e instanceof Error?e.message:`加载支付网络失败`),_?.(e)}finally{S(!1)}},X=async e=>{if(z)try{await z.request({method:`wallet_switchEthereumChain`,params:[{chainId:`0x${e.toString(16)}`}]})}catch(e){throw e.code===4902?Error(`请在钱包中添加该网络`):e}},oe=async()=>{if(!(!F||!z||!Z.current||!K||!W))try{S(!0);let e=Z.current;await X(W.chainId);let t=(0,a.createWalletClient)({account:F,transport:(0,a.custom)(z)});if(K.address){let n=await t.writeContract({address:K.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,K.decimals)],chain:null});console.log(`转账交易哈希:`,n)}else{let n=await t.sendTransaction({to:e.receiveAddress,value:(0,a.parseUnits)(e.paymentAmount,K.decimals),chain:null});console.log(`转账交易哈希:`,n)}S(!1),w(!0),Q(e.paymentId)}catch(e){console.error(`钱包支付失败:`,e),E(e instanceof Error?e.message:`钱包支付失败`),_?.(e),S(!1)}},se=async()=>{if(!(!F||!z||!Z.current||!K||!W))try{S(!0);let e=Z.current;await X(W.chainId);let t=(0,a.createWalletClient)({account:F,transport:(0,a.custom)(z)});if(!K.address)throw Error(`订阅支付不支持原生代币`);let n=await t.writeContract({address:K.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,K.decimals)],chain:null});console.log(`授权交易哈希:`,n),S(!1),w(!0),Q(e.subscriptionId)}catch(e){console.error(`钱包授权失败:`,e),E(e instanceof Error?e.message:`钱包授权失败`),_?.(e),S(!1)}},ce=async()=>{if(!F){let e=`请先连接钱包`;E(e),_?.(Error(e));return}p===`one-time`?await oe():p===`subscription`&&await se()},Z=(0,l.useRef)(null),le=async()=>{if(!(!A||!M))try{S(!0),E(void 0);let e=``;p===`one-time`?(Z.current=await v.createOnetimePayment({paymentChain:A,paymentToken:M,orderId:m,amount:Y}),e=`${A.toLowerCase()}:${Z.current.receiveAddress}?amount=${Z.current.paymentAmount}`):p===`subscription`&&(Z.current=await v.createSubscriptionPayment({paymentChain:A,paymentToken:M,orderId:m,amountOfUsd:Y,intervalDays:ee||30}),e=`${A.toLowerCase()}:${Z.current.spenderAddress}?amount=${Z.current.approveAmount}`),b(`payment`),ie(await n.toDataURL(e,{width:200,margin:2,errorCorrectionLevel:`H`}))}catch(e){E(e instanceof Error?e.message:`创建支付失败`),_?.(e)}finally{S(!1)}},ue=async()=>{if(Z.current)try{w(!0),E(void 0),p===`one-time`?Q(Z.current.paymentId):p===`subscription`&&Q(Z.current.subscriptionId)}catch(e){console.error(`支付状态检查错误:`,e),E(e instanceof Error?e.message:`检查支付状态失败`),_?.(e),w(!1)}},Q=e=>{let t=()=>(0,r.defer)(()=>p===`subscription`?v.checkSubscriptionPaymentStatus({subscriptionId:e}):v.checkOnetimePaymentStatus({paymentId:e})).pipe((0,i.timeout)(15e3),(0,i.retry)({count:3,delay:2e3}));H.current?.unsubscribe(),H.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===`expired`&&(w(!1),te?.(e)),e.status===`paid`&&(w(!1),b(`success`),g?.(e)),e.status===`failed`&&(w(!1),ne?.(e)),e.status===`approved`&&(w(!1),b(`success`),g?.(e))})).subscribe({error:e=>{console.error(`支付状态检查错误:`,e),E(e instanceof Error?e.message:`检查支付状态失败`),w(!1),_?.(e)}})},de=async()=>{if(!Z.current)return;let e=p===`subscription`?Z.current.spenderAddress:Z.current.receiveAddress;e&&await navigator.clipboard.writeText(e)},$=()=>{x||C||(d(),setTimeout(()=>{b(`select`),E(void 0),Z.current=null},300))};return(0,l.useEffect)(()=>{e&&k.length===0&&ae()},[e]),(0,l.useEffect)(()=>{G.length>0&&N(G[0].symbol)},[G]),(0,l.useEffect)(()=>()=>{H.current?.unsubscribe()},[]),e?(0,u.jsx)(`div`,{className:`_cppay-overlay`,onClick:e=>e.target===e.currentTarget&&!x&&!C&&$(),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:y===`select`?`选择支付方式`:`完成支付`}),(0,u.jsx)(`button`,{onClick:$,disabled:x||C,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)(`div`,{className:`_cppay-content`,children:y===`success`?(0,u.jsxs)(`div`,{style:{textAlign:`center`,padding:`2rem 0`},children:[(0,u.jsx)(`div`,{style:{fontSize:`64px`,marginBottom:`1rem`},children:`✅`}),(0,u.jsx)(`h3`,{style:{fontSize:`1.5rem`,fontWeight:600,color:`#10b981`,margin:`0 0 0.5rem 0`},children:p===`subscription`?`授权成功!`:`支付成功!`}),(0,u.jsx)(`p`,{style:{color:`#6b7280`,margin:0},children:p===`subscription`?`订阅已激活`:`交易已完成`})]}):y===`select`?(0,u.jsxs)(`div`,{children:[(0,u.jsxs)(`div`,{className:`_cppay-section`,children:[(0,u.jsx)(`label`,{className:`_cppay-label`,children:`支付网络`}),(0,u.jsx)(`div`,{className:`_cppay-grid`,children:k.map(e=>(0,u.jsxs)(`button`,{onClick:()=>j(e.chain),className:`_cppay-select-btn ${A===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:`支付代币`}),(0,u.jsx)(`div`,{className:`_cppay-grid`,children:G.map(e=>(0,u.jsxs)(`button`,{onClick:()=>N(e.symbol),className:`_cppay-select-btn ${M===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))})]}),(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:`支付金额`}),(0,u.jsxs)(`div`,{className:`_cppay-price-amount`,children:[(0,u.jsxs)(`div`,{className:`_cppay-price-main`,children:[Y??`-`,` `,M??``]}),(0,u.jsxs)(`div`,{className:`_cppay-price-sub`,children:[`≈ $`,h]})]})]})})}),(0,u.jsxs)(`div`,{className:`_cppay-section`,children:[T&&(0,u.jsxs)(`div`,{className:`_cppay-error-tooltip-wrapper`,onMouseEnter:()=>O(!0),onMouseLeave:()=>O(!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:T})]}),D&&(0,u.jsx)(`div`,{className:`_cppay-error-tooltip-full`,children:T})]}),(0,u.jsx)(`button`,{onClick:le,disabled:!A||!M||x,className:`_cppay-btn _cppay-btn-primary`,children:x?`处理中...`:`继续支付`})]})]}):(0,u.jsxs)(`div`,{children:[(0,u.jsx)(`div`,{className:`_cppay-qr-container`,children:(0,u.jsx)(`div`,{className:`_cppay-qr-code`,children:P&&(0,u.jsx)(`img`,{src:P,alt:`Payment QR Code`,style:{width:`160px`,height:`160px`,display:`block`}})})}),(0,u.jsxs)(`div`,{className:`_cppay-section`,children:[M&&(0,u.jsxs)(`div`,{className:`_cppay-info-box`,children:[(0,u.jsx)(`div`,{className:`_cppay-info-label`,children:p===`subscription`?`授权金额`:`支付金额`}),(0,u.jsx)(`div`,{className:`_cppay-info-value`,children:p===`subscription`?`${J(Z.current.approveAmount,q(M))} ${M}`:`${J(Z.current.paymentAmount,q(M))} ${M}`})]}),(0,u.jsxs)(`div`,{className:`_cppay-info-box`,children:[(0,u.jsx)(`div`,{className:`_cppay-info-label`,children:p===`subscription`?`授权合约地址`:`支付地址`}),(0,u.jsxs)(`div`,{className:`_cppay-address-row`,children:[(0,u.jsx)(`code`,{children:p===`subscription`?Z.current.spenderAddress:Z.current.receiveAddress}),(0,u.jsx)(`button`,{onClick:de,className:`_cppay-copy-btn`,title:`复制地址`,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:`M8 16H6a2 2 0 01-2-2V6a2 2 0 012-2h8a2 2 0 012 2v2m-6 12h8a2 2 0 002-2v-8a2 2 0 00-2-2h-8a2 2 0 00-2 2v8a2 2 0 002 2z`})})})]})]}),p===`subscription`&&(0,u.jsxs)(`div`,{className:`_cppay-info-box`,style:{background:`#fff3cd`,borderColor:`#ffc107`},children:[(0,u.jsx)(`div`,{className:`_cppay-info-label`,style:{color:`#856404`},children:`📌 订阅说明`}),(0,u.jsx)(`div`,{className:`_cppay-info-value`,style:{fontSize:`12px`,color:`#856404`},children:`订阅支付需要授权代币给合约地址,系统将按周期自动扣款。授权后无需每次手动支付。`})]})]}),T&&(0,u.jsxs)(`div`,{className:`_cppay-error-tooltip-wrapper`,onMouseEnter:()=>O(!0),onMouseLeave:()=>O(!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:T})]}),D&&(0,u.jsx)(`div`,{className:`_cppay-error-tooltip-full`,children:T})]}),!C&&(0,u.jsx)(`div`,{className:`_cppay-section`,children:F?(0,u.jsxs)(u.Fragment,{children:[(0,u.jsxs)(`div`,{className:`_cppay-btn-container`,children:[(0,u.jsx)(`button`,{onClick:ce,disabled:x,className:`_cppay-btn _cppay-btn-primary`,children:x?p===`subscription`?`授权中...`:`支付中...`:p===`subscription`?`💳 钱包授权`:`💳 钱包支付`}),(0,u.jsx)(`button`,{onClick:U,disabled:x,className:`_cppay-btn _cppay-btn-primary`,children:`💰钱包状态`})]}),(0,u.jsxs)(`div`,{style:{textAlign:`center`,marginTop:`8px`,fontSize:`12px`,color:`#666`},children:[`已连接: `,F.slice(0,6),`...`,F.slice(-4)]})]}):(0,u.jsx)(`button`,{onClick:U,disabled:L,className:`_cppay-btn _cppay-btn-secondary`,style:{display:`flex`,alignItems:`center`,justifyContent:`center`,gap:`0.5rem`,padding:`0.75rem 1rem`,width:`100%`},children:(0,u.jsx)(`span`,{children:L?`连接中...`:`💳 连接钱包`})})}),(0,u.jsx)(`div`,{className:`_cppay-section`,children:(0,u.jsx)(`button`,{onClick:ue,disabled:C,className:`_cppay-btn _cppay-btn-primary`,children:C?`检查中...`:`我已完成支付`})}),(0,u.jsx)(`div`,{className:`_cppay-section`,children:(0,u.jsx)(`button`,{onClick:()=>b(`select`),disabled:x||C,className:`_cppay-btn _cppay-btn-text`,children:`更改支付方式`})})]})})]})}):null},f=l.default.memo(d),p=(0,l.createContext)(null);const m=({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)(e=>{i?.onSuccess?.(e),r(!1)},[i]),d=(0,l.useCallback)(e=>{i?.onError?.(e)},[i]);return(0,u.jsxs)(p.Provider,{value:{showPayment:o},children:[t,i&&(0,u.jsx)(f,{open:n,onClose:s,apikey:e,plain:i.plain,orderId:i.orderId,amount:i.amount,intervalDays:i.intervalDays,onSuccess:c,onError:d})]})},h=()=>{let e=(0,l.useContext)(p);if(!e)throw Error(`useCppayPayment must be used within CppayProvider`);return e};e.t(e.n),exports.CppayProvider=m,exports.PaymentDialog=f,exports.useCppayPayment=h;
1
+ const e=require(`./inject-style-Cd5D3aj8.cjs`),t=require(`./cppay-BYRjTzRF.cjs`);let n=require(`qrcode`);n=e.r(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.r(l);let u=require(`react/jsx-runtime`);var d=({apikey:e,ott:d,plain:f,orderId:p,amount:m,intervalDays:h,onSuccess:g,onExpired:_,onFailed:v,onError:y,Slots:b,paymentStep:x,onPaymentStepChange:S,loading:C=!1,isCheckingPayment:w=!1,error:T,onErrorChange:E})=>{let D=(0,l.useMemo)(()=>new t.t(e,d),[e,d]),[O,ee]=(0,l.useState)([]),[k,te]=(0,l.useState)(),[A,j]=(0,l.useState)(),[ne,M]=(0,l.useState)(),[N,P]=(0,l.useState)(),[re,F]=(0,l.useState)(!1),[I,L]=(0,l.useState)(),[R,ie]=(0,l.useState)(``),[z,B]=(0,l.useState)(!1),[ae,V]=(0,l.useState)(!1),H=(0,l.useRef)(null),U=(0,l.useRef)(null),W=(0,l.useRef)(null);(0,l.useEffect)(()=>{typeof window<`u`&&!H.current&&(H.current=(0,s.createAppKit)({debug:!1,enableNetworkSwitch:!1,adapters:[new c.EthersAdapter],projectId:`8d2e1854d3f1782e45aa15fbd8938894`,allowUnsupportedChain:!0,networks:[o.mainnet,o.bsc,o.polygon,o.arbitrum,o.optimism,o.base],metadata:{name:`Cppay`,description:`Cppay Payment Gateway`,url:window.location.origin,icons:[`https://cppay.com/icon.png`]},features:{analytics:!1}}),P(H.current.getAddress()),L(H.current.getProvider(`eip155`)),H.current.subscribeAccount(e=>{e.isConnected?P(e.address):(P(void 0),L(void 0))}),H.current.subscribeProviders(e=>{let t=e?.eip155;L(t)}))},[]);let G=async()=>{try{F(!0),E?.(void 0),H.current&&await H.current.open()}catch(e){console.error(`钱包连接失败:`,e);let t=e instanceof Error?e.message:`钱包连接失败`;E?.(t),y?.(e)}finally{F(!1)}},K=(0,l.useMemo)(()=>O.find(e=>e.chain===k),[O,k]),q=(0,l.useMemo)(()=>K?.tokens||[],[K]),J=(0,l.useMemo)(()=>q.find(e=>e.symbol===A),[q,A]),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+$/,``)},oe=e=>{if(e<=0)return`已过期`;let t=Math.floor(e/3600),n=Math.floor(e%3600/60),r=e%60;return t>0?`${t}时${n}分${r}秒`:`${n}分${r}秒`},se=e=>{W.current&&clearInterval(W.current);let t=()=>{let t=e-Math.floor(Date.now()/1e3);ie(oe(t)),t<=0&&(S(`expired`),ce())};t(),W.current=setInterval(t,1e3)},ce=()=>{W.current&&=(clearInterval(W.current),null)},Z=(0,l.useMemo)(()=>{if(!A||!J)return`0`;let e=parseFloat(J.price);if(isNaN(e)||e===0)return`0`;let t=Y(A);return X((parseFloat(m)/e).toFixed(t),t)},[m,A,J]),le=async()=>{try{E?.(void 0);let e=await D.getSupportedChains();ee(e),e.length>0&&te(e[0].chain)}catch(e){let t=e instanceof Error?e.message:`加载支付网络失败`;E?.(t),y?.(e)}},ue=async e=>{if(I)try{await I.request({method:`wallet_switchEthereumChain`,params:[{chainId:`0x${e.toString(16)}`}]})}catch(e){throw e.code===4902?Error(`请在钱包中添加该网络`):e}},de=async()=>{if(!(!N||!I||!Q.current||!J||!K))try{let e=Q.current;await ue(K.chainId);let t=(0,a.createWalletClient)({account:N,transport:(0,a.custom)(I)});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}),M(void 0)}catch(e){console.error(`钱包支付失败:`,e);let t=e instanceof Error?e.message:`钱包支付失败`;E?.(t),y?.(e)}},fe=async()=>{if(!(!N||!I||!Q.current||!J||!K))try{let e=Q.current;await ue(K.chainId);let t=(0,a.createWalletClient)({account:N,transport:(0,a.custom)(I)});if(!J.address)throw Error(`订阅支付不支持原生代币`);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}),M(void 0)}catch(e){console.error(`钱包授权失败:`,e);let t=e instanceof Error?e.message:`钱包授权失败`;E?.(t),y?.(e)}},pe=async()=>{if(!N){let e=`请先连接钱包`;E?.(e),y?.(Error(e));return}f===`one-time`?await de():f===`subscription`&&await fe()},Q=(0,l.useRef)(null),me=async()=>{if(!(!k||!A))try{E?.(void 0);let e=``;f===`one-time`?(Q.current=await D.createOnetimePayment({paymentChain:k,paymentToken:A,orderId:p,amount:Z}),e=`${k.toLowerCase()}:${Q.current.receiveAddress}?amount=${Q.current.paymentAmount}`,se(Q.current.expireAt),$({paymentId:Q.current.paymentId})):f===`subscription`&&(Q.current=await D.createSubscriptionPayment({paymentChain:k,paymentToken:A,orderId:p,amountOfUsd:Z,intervalDays:h||30}),e=`${k.toLowerCase()}:${Q.current.spenderAddress}?amount=${Q.current.approveAmount}`,se(Q.current.expireAt),$({subscriptionId:Q.current.subscriptionId})),S(`payment`),M(await n.toDataURL(e,{width:200,margin:2,errorCorrectionLevel:`H`}))}catch(e){let t=e instanceof Error?e.message:`创建支付失败`;E?.(t),y?.(e)}},$=e=>{U.current?.unsubscribe();let t=()=>(0,r.defer)(()=>f===`subscription`?D.checkSubscriptionPaymentStatus(e):D.checkOnetimePaymentStatus(e)).pipe((0,i.timeout)(15e3),(0,i.retry)({delay:2e3}));U.current=t().pipe((0,i.expand)(e=>e.status===`pending`?(0,r.timer)(2e3).pipe((0,i.switchMap)(()=>t())):r.EMPTY),(0,i.tap)(e=>{(e.status===`paid`||e.status===`approved`)&&(S(`success`),g?.(e)),e.status===`expired`&&(S(`expired`),_?.(e)),e.status===`failed`&&(S(`failed`),v?.(e))})).subscribe({error:e=>{if(Q.current){let t=e instanceof Error?e.message:`检查支付状态失败`;S(`error`),E?.(t),y?.(e)}},complete:()=>{U.current?.unsubscribe()}})};return(0,l.useEffect)(()=>{O.length===0&&le()},[]),(0,l.useEffect)(()=>{q.length>0&&j(q[0].symbol)},[q]),(0,l.useEffect)(()=>(p&&$({orderId:p}),()=>{U.current?.unsubscribe(),ce()}),[p]),(0,u.jsx)(`div`,{className:`_cppay-content`,children:x===`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:f===`subscription`?`授权成功!`:`支付成功!`}),(0,u.jsx)(`p`,{className:`_cppay-state-message`,children:f===`subscription`?`订阅已激活`:`交易已完成`})]}):x===`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:`支付已过期,请重选创建支付订单`}),(0,u.jsx)(`button`,{onClick:()=>S(`select`),disabled:C||w,className:`_cppay-btn _cppay-btn-text`,children:`返回`})]}):x===`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:`检查订单支付状态失败!`})]}):x===`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:`订单支付失败!`})]}):x===`select`?(0,u.jsxs)(`div`,{children:[b?.ChooseTop,(0,u.jsxs)(`div`,{className:`_cppay-section`,children:[(0,u.jsx)(`label`,{className:`_cppay-label`,children:`支付网络`}),(0,u.jsx)(`div`,{className:`_cppay-grid`,children:O.map(e=>(0,u.jsxs)(`button`,{onClick:()=>te(e.chain),className:`_cppay-select-btn ${k===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:`支付代币`}),(0,u.jsx)(`div`,{className:`_cppay-grid`,children:q.map(e=>(0,u.jsxs)(`button`,{onClick:()=>j(e.symbol),className:`_cppay-select-btn ${A===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))})]}),b?.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:`支付金额`}),(0,u.jsxs)(`div`,{className:`_cppay-price-amount`,children:[(0,u.jsxs)(`div`,{className:`_cppay-price-main`,children:[Z??`-`,` `,A??``]}),(0,u.jsxs)(`div`,{className:`_cppay-price-sub`,children:[`≈ $`,m]})]})]})})}),(0,u.jsxs)(`div`,{className:`_cppay-section`,children:[T&&(0,u.jsxs)(`div`,{className:`_cppay-error-tooltip-wrapper`,onMouseEnter:()=>V(!0),onMouseLeave:()=>V(!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:T})]}),ae&&(0,u.jsx)(`div`,{className:`_cppay-error-tooltip-full`,children:T})]}),(0,u.jsx)(`button`,{onClick:me,disabled:!k||!A||C,className:`_cppay-btn _cppay-btn-primary`,children:C?`处理中...`:`继续支付`})]})]}):(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:f===`subscription`?`授权金额`:`支付金额`}),(0,u.jsxs)(`div`,{className:`_cppay-info-value _cppay-info-value-flex`,children:[(0,u.jsx)(`span`,{children:f===`subscription`?`${X(Q.current.approveAmount,Y(J.symbol))} ${J.symbol}`:`${X(Q.current.paymentAmount,Y(J.symbol))} ${J.symbol}`}),(0,u.jsxs)(`span`,{children:[`≈ $`,m]})]})]})})}),(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:f===`subscription`?`授权合约地址`:`支付地址`}),R&&(0,u.jsxs)(`span`,{className:`_cppay-countdown`,children:[`⏰ `,R]})]}),(0,u.jsxs)(`div`,{className:`_cppay-address-row`,children:[(0,u.jsx)(`code`,{children:f===`subscription`?Q.current.spenderAddress:Q.current.receiveAddress}),(0,u.jsx)(`button`,{onClick:async()=>{if(!Q.current)return;let e=f===`subscription`?Q.current.spenderAddress:Q.current.receiveAddress;if(e)try{await navigator.clipboard.writeText(e),B(!0),setTimeout(()=>{B(!1)},2e3)}catch(e){console.error(`复制失败:`,e)}},className:`_cppay-copy-btn ${z?`_cppay-copy-success`:``}`,title:z?`已复制!`:`复制地址`,children:z?(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`})]})})]})]})}),f===`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:`📌 订阅说明`}),(0,u.jsx)(`div`,{className:`_cppay-info-value _cppay-subscription-message`,children:`订阅支付需要授权代币给合约地址,系统将按周期自动扣款。授权后无需每次手动支付。`})]})]}),T&&(0,u.jsxs)(`div`,{className:`_cppay-error-tooltip-wrapper`,onMouseEnter:()=>V(!0),onMouseLeave:()=>V(!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:T})]}),ae&&(0,u.jsx)(`div`,{className:`_cppay-error-tooltip-full`,children:T})]}),!w&&(0,u.jsx)(`div`,{className:`_cppay-section`,children:N?(0,u.jsxs)(u.Fragment,{children:[(0,u.jsx)(`button`,{onClick:pe,disabled:C,className:`_cppay-btn _cppay-btn-primary`,children:C?f===`subscription`?`授权中...`:`支付中...`:f===`subscription`?`💳 钱包授权`:`💳 钱包支付`}),(0,u.jsxs)(`button`,{onClick:G,disabled:C,className:`_cppay-btn _cppay-wallet-address-btn`,title:`点击修改或查看钱包状态`,children:[(0,u.jsxs)(`span`,{className:`_cppay-wallet-address-text`,children:[N.slice(0,10),`...`,N.slice(-4)]}),(0,u.jsx)(`svg`,{className:`_cppay-wallet-icon`,viewBox:`0 0 24 24`,fill:`none`,stroke:`currentColor`,strokeWidth:`2`,children:(0,u.jsx)(`path`,{d:`M12 2C6.48 2 2 6.48 2 12s4.48 10 10 10 10-4.48 10-10S17.52 2 12 2zm0 18c-4.41 0-8-3.59-8-8s3.59-8 8-8 8 3.59 8 8-3.59 8-8 8zm3.5-9c.83 0 1.5-.67 1.5-1.5S16.33 8 15.5 8 14 8.67 14 9.5s.67 1.5 1.5 1.5zm-7 0c.83 0 1.5-.67 1.5-1.5S9.33 8 8.5 8 7 8.67 7 9.5 7.67 11 8.5 11zm3.5 6.5c2.33 0 4.31-1.46 5.11-3.5H6.89c.8 2.04 2.78 3.5 5.11 3.5z`})})]})]}):(0,u.jsx)(`button`,{onClick:G,disabled:re,className:`_cppay-btn _cppay-btn-secondary _cppay-connect-wallet-btn`,children:(0,u.jsx)(`span`,{children:re?`连接中...`:`💳 连接钱包`})})})]})})},f=d,p=({open:e,onClose:t,ott:n,apikey:r,plain:i,orderId:a,amount:o,intervalDays:s,onExpired:c,onSuccess:d,onFailed:p,onError:m,Slots:h})=>{let[g,_]=(0,l.useState)(`select`),[v,y]=(0,l.useState)(!1),[b,x]=(0,l.useState)(!1),[S,C]=(0,l.useState)();(0,l.useEffect)(()=>{if(g===`success`){let e=setTimeout(()=>{w()},1e3);return()=>clearTimeout(e)}},[g]),(0,l.useEffect)(()=>{e||(_(`select`),C(void 0),y(!1),x(!1))},[e]),(0,l.useEffect)(()=>{if(!e)return;let t=e=>{e.key===`Escape`&&!v&&!b&&w()};return window.addEventListener(`keydown`,t),()=>window.removeEventListener(`keydown`,t)},[e,v,b]);let w=()=>{v||b||t()};return e?(0,u.jsx)(`div`,{className:`_cppay-overlay`,onClick:e=>e.target===e.currentTarget&&!v&&!b&&w(),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(g){case`success`:return`支付结果`;case`expired`:return`支付已过期`;case`failed`:return`支付失败`;case`error`:return`出错`;case`payment`:return`完成支付`;default:return`选择支付方式`}})()}),(0,u.jsx)(`button`,{onClick:w,disabled:v||b,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:r,ott:n,plain:i,orderId:a,amount:o,intervalDays:s,onSuccess:d,onExpired:c,onFailed:p,onError:m,Slots:h,paymentStep:g,onPaymentStepChange:_,loading:v,isCheckingPayment:b,error:S,onErrorChange:C})]})}):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.t(e.n),exports.CppayProvider=g,exports.PaymentContent=f,exports.PaymentDialog=m,exports.useCppayPayment=_;
package/dist/react.d.ts CHANGED
@@ -3,13 +3,24 @@ import { ReactNode } from 'react';
3
3
 
4
4
  declare type Address = `0x${string}`;
5
5
 
6
+ /**
7
+ * CPPay 上下文值
8
+ */
6
9
  declare interface CppayContextValue {
10
+ /** 显示支付对话框 */
7
11
  showPayment: (options: PaymentOptions_2) => void;
12
+ /** 关闭支付对话框 */
13
+ closePayment: () => void;
8
14
  }
9
15
 
16
+ /**
17
+ * CPPay Provider 组件
18
+ * 提供支付功能的上下文提供者
19
+ */
10
20
  export declare const CppayProvider: default_2.FC<CppayProviderProps>;
11
21
 
12
22
  declare interface CppayProviderProps {
23
+ /** API Key */
13
24
  apikey: string;
14
25
  children: ReactNode;
15
26
  }
@@ -28,29 +39,144 @@ declare interface OnetimePaymentOrderStatus {
28
39
  status: PaymentStatus;
29
40
  }
30
41
 
31
- export declare const PaymentDialog: default_2.NamedExoticComponent<PaymentDialogProps>;
42
+ /**
43
+ * PaymentContent - 支付内容组件(纯页面样式和逻辑)
44
+ *
45
+ * 这是一个独立的内容组件,包含所有支付相关的UI和业务逻辑。
46
+ * 可以单独使用,也可以被PaymentDialog弹框包装。
47
+ *
48
+ * @example
49
+ * ```tsx
50
+ * <PaymentContent
51
+ * apikey="your-api-key"
52
+ * plain="one-time"
53
+ * orderId="order-123"
54
+ * amount="100"
55
+ * onSuccess={(order) => console.log('支付成功', order)}
56
+ * />
57
+ * ```
58
+ */
59
+ export declare const PaymentContent: default_2.FC<PaymentContentProps>;
60
+
61
+ declare interface PaymentContentProps {
62
+ /** API Key */
63
+ apikey?: string;
64
+ /** One-Time Token */
65
+ ott?: string;
66
+ /** 支付类型 */
67
+ plain: PaymentPlain;
68
+ /** 订单 ID */
69
+ orderId: string;
70
+ /** 支付金额(USD) */
71
+ amount: string;
72
+ /** 订阅间隔天数 */
73
+ intervalDays?: number;
74
+ /** 支付成功回调 */
75
+ onSuccess?: (order: SubscriptionPaymentOrderStatus | OnetimePaymentOrderStatus) => void;
76
+ /** 支付过期回调 */
77
+ onExpired?: (order: SubscriptionPaymentOrderStatus | OnetimePaymentOrderStatus) => void;
78
+ /** 支付失败回调 */
79
+ onFailed?: (order: SubscriptionPaymentOrderStatus | OnetimePaymentOrderStatus) => void;
80
+ /** 支付错误回调 */
81
+ onError?: (error: Error) => void;
82
+ /** 插槽,定义自己想要展示的内容 */
83
+ Slots?: Partial<{
84
+ ChooseTop: default_2.ReactNode;
85
+ ChooseBottom: default_2.ReactNode;
86
+ }>;
87
+ /** 支付步骤状态 */
88
+ paymentStep: "select" | "payment" | "success" | "failed" | "expired" | "error";
89
+ /** 设置支付步骤 */
90
+ onPaymentStepChange: (step: "select" | "payment" | "success" | "failed" | "expired" | "error") => void;
91
+ /** 加载状态 */
92
+ loading?: boolean;
93
+ /** 检查支付中状态 */
94
+ isCheckingPayment?: boolean;
95
+ /** 错误状态 */
96
+ error?: string;
97
+ /** 设置错误 */
98
+ onErrorChange?: (error: string | undefined) => void;
99
+ }
100
+
101
+ /**
102
+ * PaymentDialog - 支付弹框组件
103
+ *
104
+ * 这是一个纯弹框包装器,负责:
105
+ * - 管理弹框的打开/关闭状态和动画
106
+ * - 处理弹框的UI包装(背景遮罩、标题栏、关闭按钮)
107
+ * - 将 PaymentContent 内容组件嵌入弹框中
108
+ *
109
+ * 弹框关闭的自动重置逻辑:
110
+ * - 支付完成后 1000ms 自动关闭
111
+ * - 关闭后重置内部状态(支付步骤、错误等)
112
+ *
113
+ * @example
114
+ * ```tsx
115
+ * <PaymentDialog
116
+ * open={isOpen}
117
+ * onClose={() => setIsOpen(false)}
118
+ * apikey="your-api-key"
119
+ * plain="one-time"
120
+ * orderId="order-123"
121
+ * amount="100"
122
+ * onSuccess={(order) => console.log('支付成功', order)}
123
+ * />
124
+ * ```
125
+ */
126
+ export declare const PaymentDialog: default_2.FC<PaymentDialogProps>;
32
127
 
33
128
  declare interface PaymentDialogProps {
129
+ /** 是否打开支付对话框 */
34
130
  open: boolean;
131
+ /** 关闭对话框回调 */
35
132
  onClose: () => void;
36
- apikey: string;
133
+ /** API Key */
134
+ apikey?: string;
135
+ /** One-Time Token */
136
+ ott?: string;
137
+ /** 支付类型 */
37
138
  plain: PaymentPlain;
139
+ /** 订单 ID */
38
140
  orderId: string;
141
+ /** 支付金额(USD) */
39
142
  amount: string;
143
+ /** 订阅间隔天数 */
40
144
  intervalDays?: number;
145
+ /** 支付成功回调 */
41
146
  onSuccess?: (order: SubscriptionPaymentOrderStatus | OnetimePaymentOrderStatus) => void;
147
+ /** 支付过期回调 */
42
148
  onExpired?: (order: SubscriptionPaymentOrderStatus | OnetimePaymentOrderStatus) => void;
149
+ /** 支付失败回调 */
43
150
  onFailed?: (order: SubscriptionPaymentOrderStatus | OnetimePaymentOrderStatus) => void;
151
+ /** 支付错误回调 */
44
152
  onError?: (error: Error) => void;
153
+ /** 插槽,定义自己想要展示的内容 */
154
+ Slots?: Partial<{
155
+ ChooseTop: default_2.ReactNode;
156
+ ChooseBottom: default_2.ReactNode;
157
+ }>;
45
158
  }
46
159
 
160
+ /**
161
+ * 支付选项配置
162
+ */
47
163
  declare interface PaymentOptions_2 {
164
+ /** 支付类型:一次性支付或订阅支付 */
48
165
  plain: PaymentPlain;
166
+ /** 订单 ID */
49
167
  orderId: string;
168
+ /** 支付金额(USD) */
50
169
  amount: string;
170
+ /** 订阅间隔天数(仅订阅支付需要) */
51
171
  intervalDays?: number;
172
+ /** 支付成功回调 */
52
173
  onSuccess?: (order: SubscriptionPaymentOrderStatus | OnetimePaymentOrderStatus) => void;
174
+ /** 支付错误回调 */
53
175
  onError?: (error: Error) => void;
176
+ /** 支付过期回调 */
177
+ onExpired?: (order: SubscriptionPaymentOrderStatus | OnetimePaymentOrderStatus) => void;
178
+ /** 支付失败回调 */
179
+ onFailed?: (order: SubscriptionPaymentOrderStatus | OnetimePaymentOrderStatus) => void;
54
180
  }
55
181
 
56
182
  declare type PaymentPlain = "one-time" | "subscription" | "x402";
@@ -72,6 +198,10 @@ declare interface SubscriptionPaymentOrderStatus {
72
198
 
73
199
  declare type SubscriptionPaymentStatus = "pending" | "approved" | "expired" | "failed";
74
200
 
201
+ /**
202
+ * 使用 CPPay 支付钩子
203
+ * @throws {Error} 如果在 CppayProvider 外使用会抛出错误
204
+ */
75
205
  export declare const useCppayPayment: () => CppayContextValue;
76
206
 
77
207
  export { }
@@ -79,6 +209,9 @@ export { }
79
209
 
80
210
  declare module "@vue/runtime-core" {
81
211
  interface ComponentCustomProperties {
212
+ /** 显示支付对话框的全局方法 */
82
213
  $showPayment: typeof showPayment;
214
+ /** 关闭支付对话框的全局方法 */
215
+ $closePayment: typeof closePayment;
83
216
  }
84
217
  }