@directcryptopay/sdk 0.1.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +357 -0
- package/dist/ConstantsUtil-B-_-u8aQ.js +6 -0
- package/dist/add-KF4m4jFK.js +19 -0
- package/dist/all-wallets-D6NAjQgX.js +10 -0
- package/dist/app-store-D7TTn-EO.js +21 -0
- package/dist/apple-DjX2E2hE.js +22 -0
- package/dist/arrow-bottom-C0YrNJYB.js +12 -0
- package/dist/arrow-bottom-circle-Dlxvx_XG.js +15 -0
- package/dist/arrow-left-x8_-lUyK.js +12 -0
- package/dist/arrow-right-BTZybj80.js +12 -0
- package/dist/arrow-top-LzH7iLCp.js +12 -0
- package/dist/bank-23jp-IV_.js +18 -0
- package/dist/browser-EjoorDid.js +18 -0
- package/dist/card-DGgWwtwC.js +18 -0
- package/dist/ccip-BMANewTU.js +150 -0
- package/dist/checkmark-B1qcQhBo.js +15 -0
- package/dist/checkmark-bold-Cyc4IEEJ.js +12 -0
- package/dist/chevron-bottom-ClHs08rB.js +12 -0
- package/dist/chevron-left-O8h_551_.js +12 -0
- package/dist/chevron-right-DP3xpyIA.js +12 -0
- package/dist/chevron-top-CuwkBUs9.js +12 -0
- package/dist/chrome-store-zfT_aJ3R.js +65 -0
- package/dist/clock-DHZqivIS.js +12 -0
- package/dist/close-Cp9rNAw4.js +12 -0
- package/dist/coinPlaceholder-U7-T1KKQ.js +12 -0
- package/dist/compass-Ds5-PRSR.js +12 -0
- package/dist/copy-Jg4HdIMf.js +19 -0
- package/dist/core/api.d.ts +30 -0
- package/dist/core/config.d.ts +59 -0
- package/dist/core/logic.d.ts +2 -0
- package/dist/core/wallet.d.ts +34 -0
- package/dist/cursor-DmMevduB.js +7 -0
- package/dist/cursor-transparent-Dn9-1SV8.js +16 -0
- package/dist/dcp-sdk.umd.js +12000 -0
- package/dist/dcp.d.ts +10 -0
- package/dist/desktop-C4udXXlZ.js +13 -0
- package/dist/disconnect-wd1BYLxt.js +12 -0
- package/dist/discord-DthxuCAP.js +21 -0
- package/dist/email-B3jSnUFE.js +696 -0
- package/dist/embedded-wallet-CJHmoBI2.js +468 -0
- package/dist/etherscan-Cjp4xfMW.js +10 -0
- package/dist/exclamation-triangle-CRNR5WOy.js +8 -0
- package/dist/extension-Cydk0mZt.js +12 -0
- package/dist/external-link-CuPTAoq9.js +12 -0
- package/dist/facebook-CghqXmdf.js +30 -0
- package/dist/farcaster-BREqMX4y.js +16 -0
- package/dist/filters-Dn_Ys7ew.js +12 -0
- package/dist/github-C-A7JmIY.js +22 -0
- package/dist/google-CCdM_naE.js +22 -0
- package/dist/hashTypedData-D2Qmzscs.js +197 -0
- package/dist/help-circle-DIH4vyj3.js +16 -0
- package/dist/id-DkJ0gBuy.js +16 -0
- package/dist/if-defined-BciplFKz.js +744 -0
- package/dist/image-qMjyiXM0.js +8 -0
- package/dist/index--3Zp0jAb.js +45 -0
- package/dist/index-1adX-Fit.js +65 -0
- package/dist/index-AvC0IGDl.js +7864 -0
- package/dist/index-B2-vKLd8.js +276 -0
- package/dist/index-B2iDt0TJ.js +146 -0
- package/dist/index-B5zkXsLJ.js +320 -0
- package/dist/index-B7K86vWu.js +1742 -0
- package/dist/index-BBkcvSiY.js +511 -0
- package/dist/index-BdjxQs66.js +181 -0
- package/dist/index-Bijd4_Ns.js +294 -0
- package/dist/index-BpXOsxzU.js +387 -0
- package/dist/index-C1QEJL-2.js +572 -0
- package/dist/index-C27dwOyE.js +243 -0
- package/dist/index-C4BX3QW8.js +58 -0
- package/dist/index-CMPIqsB1.js +170 -0
- package/dist/index-CTYngdl0.js +21991 -0
- package/dist/index-CUdQyyFn.js +51 -0
- package/dist/index-CX60z_g2.js +573 -0
- package/dist/index-CppCc1n8.js +65 -0
- package/dist/index-CqVegmN4.js +559 -0
- package/dist/index-CuiyMA8F.js +78 -0
- package/dist/index-CwB_qRfM.js +305 -0
- package/dist/index-CxOF7GqE.js +265 -0
- package/dist/index-D-IzHD_8.js +54 -0
- package/dist/index-DRNiFv9I.js +218 -0
- package/dist/index-Da8oZh8H.js +838 -0
- package/dist/index-DiHImG4L.js +44236 -0
- package/dist/index-DmOMXRG1.js +181 -0
- package/dist/index-DoSYqTQg.js +199 -0
- package/dist/index-DpHXq5_E.js +603 -0
- package/dist/index-DtCsAVBg.js +78 -0
- package/dist/index-Ij6XA6_4.js +77 -0
- package/dist/index-SzyBYfzA.js +8490 -0
- package/dist/index-eW8y-mXH.js +257 -0
- package/dist/index-fxzIDZsb.js +75 -0
- package/dist/index-lbhz9evJ.js +97 -0
- package/dist/index.d.ts +3 -0
- package/dist/index.js +4 -0
- package/dist/info-DMIGgjkL.js +7 -0
- package/dist/info-circle-CJuIKZSx.js +16 -0
- package/dist/lightbulb-qFT6WEWV.js +7 -0
- package/dist/localBatchGatewayRequest-CsMVMFBc.js +91 -0
- package/dist/mail-DoYgQvOt.js +12 -0
- package/dist/mobile-URtsh7o-.js +13 -0
- package/dist/more-DoQd10TF.js +15 -0
- package/dist/network-placeholder-BBA2Ue6C.js +18 -0
- package/dist/nftPlaceholder-C9RXWz9k.js +12 -0
- package/dist/off-YcuDQczT.js +12 -0
- package/dist/onramp-BfqDIx4o.js +1279 -0
- package/dist/parseSignature-280HB24T.js +3560 -0
- package/dist/play-store-sFaloG_r.js +36 -0
- package/dist/plus-l0wekSht.js +17 -0
- package/dist/qr-code-CihrUU4G.js +10 -0
- package/dist/receive-dfY1Cu-g.js +186 -0
- package/dist/recycle-horizontal-nXu6YaPw.js +13 -0
- package/dist/ref-huAzXCX0.js +41 -0
- package/dist/refresh-D2ZbVeNC.js +12 -0
- package/dist/reown-logo-BMaTMJmc.js +16 -0
- package/dist/search-YVM9q3J-.js +12 -0
- package/dist/secp256k1-BrysY3Sv.js +1302 -0
- package/dist/secp256k1-DPQgTBwQ.js +1510 -0
- package/dist/send-BwQZPKxI.js +19 -0
- package/dist/send-GyetMVu1.js +1038 -0
- package/dist/socials-B0W91J9k.js +574 -0
- package/dist/swapHorizontal-Dy_oQEkp.js +12 -0
- package/dist/swapHorizontalBold-C4JpaMpc.js +12 -0
- package/dist/swapHorizontalMedium-D5NuVZFh.js +20 -0
- package/dist/swapHorizontalRoundedBold-Bq4P2MCj.js +12 -0
- package/dist/swapVertical-CVQ8Mg03.js +12 -0
- package/dist/swaps-CA04SSdK.js +1637 -0
- package/dist/telegram-BP4SgW_L.js +20 -0
- package/dist/three-dots-BJYGJ-dQ.js +9 -0
- package/dist/transactions-Bq-98Tsg.js +37 -0
- package/dist/twitch-DTATWo9M.js +22 -0
- package/dist/twitterIcon-D5UWPInb.js +10 -0
- package/dist/types.d.ts +128 -0
- package/dist/ui/Modal.d.ts +9 -0
- package/dist/ui/index.d.ts +6 -0
- package/dist/verify-Byvj8Wi1.js +12 -0
- package/dist/verify-filled-B40taNm0.js +12 -0
- package/dist/w3m-modal-HV6SE74G.js +1037 -0
- package/dist/wallet-Cp-6Kk88.js +12 -0
- package/dist/wallet-placeholder-C3juwA9o.js +18 -0
- package/dist/walletconnect-CRkIiLCx.js +36 -0
- package/dist/warning-circle-DtvCLwG4.js +16 -0
- package/dist/x-Cqyx5eCt.js +16 -0
- package/package.json +70 -0
package/README.md
ADDED
|
@@ -0,0 +1,357 @@
|
|
|
1
|
+
# @directcryptopay/sdk
|
|
2
|
+
|
|
3
|
+
Official TypeScript/JavaScript SDK for DirectCryptoPay. Create payment intents, verify webhooks, and manage crypto payments from Node.js, Edge Functions, or the browser.
|
|
4
|
+
|
|
5
|
+
## Features
|
|
6
|
+
|
|
7
|
+
✅ **TypeScript-first** - Full type safety with exported types
|
|
8
|
+
✅ **Web Crypto API** - Works in Node.js, Edge (Vercel, Cloudflare), and browsers
|
|
9
|
+
✅ **Webhook verification** - HMAC-SHA256 signature validation
|
|
10
|
+
✅ **Zero dependencies** - Lightweight, uses only platform APIs
|
|
11
|
+
✅ **Idempotency support** - Prevent duplicate requests
|
|
12
|
+
|
|
13
|
+
## Installation
|
|
14
|
+
|
|
15
|
+
```bash
|
|
16
|
+
npm install @directcryptopay/sdk
|
|
17
|
+
# or
|
|
18
|
+
pnpm add @directcryptopay/sdk
|
|
19
|
+
# or
|
|
20
|
+
yarn add @directcryptopay/sdk
|
|
21
|
+
```
|
|
22
|
+
|
|
23
|
+
## Quick Start
|
|
24
|
+
|
|
25
|
+
### Server-side: Create Payment Intent
|
|
26
|
+
|
|
27
|
+
```typescript
|
|
28
|
+
import { DirectCryptoPay } from '@directcryptopay/sdk';
|
|
29
|
+
|
|
30
|
+
const dcp = new DirectCryptoPay({
|
|
31
|
+
baseURL: 'https://test-api.directcryptopay.com',
|
|
32
|
+
apiKey: process.env.DCP_API_KEY!,
|
|
33
|
+
});
|
|
34
|
+
|
|
35
|
+
const intent = await dcp.createPaymentIntent({
|
|
36
|
+
amount: 49.99,
|
|
37
|
+
currency: 'USD',
|
|
38
|
+
metadata: {
|
|
39
|
+
order_id: 'ORD-123',
|
|
40
|
+
customer_email: 'customer@example.com'
|
|
41
|
+
},
|
|
42
|
+
idempotencyKey: crypto.randomUUID(), // Recommended
|
|
43
|
+
});
|
|
44
|
+
|
|
45
|
+
console.log(intent.id); // pi_abc123...
|
|
46
|
+
console.log(intent.recipient); // 0x1234...
|
|
47
|
+
console.log(intent.amount_wei); // "50000000000000000"
|
|
48
|
+
```
|
|
49
|
+
|
|
50
|
+
### Server-side: Verify Webhook
|
|
51
|
+
|
|
52
|
+
```typescript
|
|
53
|
+
import { verifyWebhookSignature } from '@directcryptopay/sdk';
|
|
54
|
+
|
|
55
|
+
export async function POST(req: Request) {
|
|
56
|
+
const rawBody = await req.text();
|
|
57
|
+
const signature = req.headers.get('x-dcp-signature') ?? '';
|
|
58
|
+
|
|
59
|
+
const isValid = await verifyWebhookSignature({
|
|
60
|
+
rawBody,
|
|
61
|
+
signatureHeader: signature,
|
|
62
|
+
secret: process.env.DCP_WEBHOOK_SECRET!,
|
|
63
|
+
});
|
|
64
|
+
|
|
65
|
+
if (!isValid) {
|
|
66
|
+
return new Response('Invalid signature', { status: 400 });
|
|
67
|
+
}
|
|
68
|
+
|
|
69
|
+
const event = JSON.parse(rawBody);
|
|
70
|
+
|
|
71
|
+
if (event.event === 'payment.succeeded') {
|
|
72
|
+
// Handle payment success
|
|
73
|
+
console.log('Payment confirmed:', event.data.id);
|
|
74
|
+
}
|
|
75
|
+
|
|
76
|
+
return new Response('OK', { status: 200 });
|
|
77
|
+
}
|
|
78
|
+
```
|
|
79
|
+
|
|
80
|
+
## API Reference
|
|
81
|
+
|
|
82
|
+
### `DirectCryptoPay`
|
|
83
|
+
|
|
84
|
+
Main SDK class for interacting with DirectCryptoPay API.
|
|
85
|
+
|
|
86
|
+
#### Constructor
|
|
87
|
+
|
|
88
|
+
```typescript
|
|
89
|
+
const dcp = new DirectCryptoPay({
|
|
90
|
+
baseURL: string; // e.g., 'https://api.directcryptopay.com'
|
|
91
|
+
apiKey: string; // Your server-side API key
|
|
92
|
+
fetch?: typeof fetch; // Optional: custom fetch (for testing)
|
|
93
|
+
});
|
|
94
|
+
```
|
|
95
|
+
|
|
96
|
+
#### Methods
|
|
97
|
+
|
|
98
|
+
##### `createPaymentIntent(input)`
|
|
99
|
+
|
|
100
|
+
Create a new payment intent.
|
|
101
|
+
|
|
102
|
+
```typescript
|
|
103
|
+
const intent = await dcp.createPaymentIntent({
|
|
104
|
+
amount: 49.99,
|
|
105
|
+
currency: 'USD',
|
|
106
|
+
metadata?: { order_id: 'ORD-123' },
|
|
107
|
+
expiry_seconds?: 900, // Default: 900 (15 min)
|
|
108
|
+
idempotencyKey?: string, // Recommended
|
|
109
|
+
});
|
|
110
|
+
```
|
|
111
|
+
|
|
112
|
+
**Returns:** `Promise<Intent>`
|
|
113
|
+
|
|
114
|
+
##### `declareTx(input)`
|
|
115
|
+
|
|
116
|
+
Declare a blockchain transaction for a payment intent.
|
|
117
|
+
|
|
118
|
+
```typescript
|
|
119
|
+
await dcp.declareTx({
|
|
120
|
+
intentId: 'pi_abc123',
|
|
121
|
+
txHash: '0x1234...',
|
|
122
|
+
idempotencyKey?: string,
|
|
123
|
+
});
|
|
124
|
+
```
|
|
125
|
+
|
|
126
|
+
**Returns:** `Promise<{ accepted: true }>`
|
|
127
|
+
|
|
128
|
+
##### `getIntentStatus(intentId)`
|
|
129
|
+
|
|
130
|
+
Get current status of a payment intent.
|
|
131
|
+
|
|
132
|
+
```typescript
|
|
133
|
+
const intent = await dcp.getIntentStatus('pi_abc123');
|
|
134
|
+
console.log(intent.status); // 'created' | 'pending' | 'paid' | 'failed' | 'expired'
|
|
135
|
+
```
|
|
136
|
+
|
|
137
|
+
**Returns:** `Promise<Intent>`
|
|
138
|
+
|
|
139
|
+
##### `waitForConfirmation(intentId, options?)`
|
|
140
|
+
|
|
141
|
+
Poll for payment confirmation with automatic retry.
|
|
142
|
+
|
|
143
|
+
```typescript
|
|
144
|
+
const confirmedIntent = await dcp.waitForConfirmation('pi_abc123', {
|
|
145
|
+
intervalMs: 2000, // Poll every 2 seconds
|
|
146
|
+
maxAttempts: 60, // Max 60 attempts (2 min total)
|
|
147
|
+
onTick: (attempt, status) => {
|
|
148
|
+
console.log(`Attempt ${attempt}: ${status}`);
|
|
149
|
+
},
|
|
150
|
+
});
|
|
151
|
+
|
|
152
|
+
console.log('Payment confirmed:', confirmedIntent.tx_hash);
|
|
153
|
+
```
|
|
154
|
+
|
|
155
|
+
**Returns:** `Promise<Intent>` (with `status: 'paid'`)
|
|
156
|
+
**Throws:** If payment fails, expires, or times out
|
|
157
|
+
|
|
158
|
+
##### `listPaymentIntents(options?)`
|
|
159
|
+
|
|
160
|
+
List payment intents with pagination.
|
|
161
|
+
|
|
162
|
+
```typescript
|
|
163
|
+
const { data, hasMore, nextCursor } = await dcp.listPaymentIntents({
|
|
164
|
+
limit: 20,
|
|
165
|
+
cursor: 'cursor_abc',
|
|
166
|
+
status: 'paid',
|
|
167
|
+
});
|
|
168
|
+
```
|
|
169
|
+
|
|
170
|
+
**Returns:** `Promise<{ data: Intent[], hasMore: boolean, nextCursor?: string }>`
|
|
171
|
+
|
|
172
|
+
### `verifyWebhookSignature(options)`
|
|
173
|
+
|
|
174
|
+
Verify HMAC-SHA256 webhook signature (timing-safe).
|
|
175
|
+
|
|
176
|
+
```typescript
|
|
177
|
+
const isValid = await verifyWebhookSignature({
|
|
178
|
+
rawBody: string, // Request body as string (exact as received)
|
|
179
|
+
signatureHeader: string, // 'X-DCP-Signature' header value
|
|
180
|
+
secret: string, // Your webhook secret
|
|
181
|
+
toleranceSec?: number, // Default: 300 (5 minutes)
|
|
182
|
+
});
|
|
183
|
+
```
|
|
184
|
+
|
|
185
|
+
**Returns:** `Promise<boolean>`
|
|
186
|
+
|
|
187
|
+
## Types
|
|
188
|
+
|
|
189
|
+
All types are exported:
|
|
190
|
+
|
|
191
|
+
```typescript
|
|
192
|
+
import type {
|
|
193
|
+
Intent,
|
|
194
|
+
PaymentStatus,
|
|
195
|
+
CreateIntentInput,
|
|
196
|
+
DeclareTxInput,
|
|
197
|
+
SdkConfig,
|
|
198
|
+
ChainId,
|
|
199
|
+
} from '@directcryptopay/sdk';
|
|
200
|
+
```
|
|
201
|
+
|
|
202
|
+
### `Intent`
|
|
203
|
+
|
|
204
|
+
```typescript
|
|
205
|
+
interface Intent {
|
|
206
|
+
id: string;
|
|
207
|
+
chain_id: ChainId;
|
|
208
|
+
recipient: `0x${string}`;
|
|
209
|
+
amount_wei: string;
|
|
210
|
+
currency: string;
|
|
211
|
+
amount: number;
|
|
212
|
+
expires_at: string;
|
|
213
|
+
status: PaymentStatus;
|
|
214
|
+
signature: string;
|
|
215
|
+
asset_type: 'native' | 'erc20';
|
|
216
|
+
token_address?: `0x${string}`;
|
|
217
|
+
tx_hash?: `0x${string}`;
|
|
218
|
+
confirmed_at?: string;
|
|
219
|
+
}
|
|
220
|
+
```
|
|
221
|
+
|
|
222
|
+
### `PaymentStatus`
|
|
223
|
+
|
|
224
|
+
```typescript
|
|
225
|
+
type PaymentStatus = 'created' | 'pending' | 'paid' | 'failed' | 'expired' | 'late_confirmed';
|
|
226
|
+
```
|
|
227
|
+
|
|
228
|
+
## Usage Examples
|
|
229
|
+
|
|
230
|
+
### Next.js API Route (App Router)
|
|
231
|
+
|
|
232
|
+
```typescript
|
|
233
|
+
// app/api/dcp/create-intent/route.ts
|
|
234
|
+
import { DirectCryptoPay } from '@directcryptopay/sdk';
|
|
235
|
+
|
|
236
|
+
const dcp = new DirectCryptoPay({
|
|
237
|
+
baseURL: process.env.DCP_API_BASE!,
|
|
238
|
+
apiKey: process.env.DCP_API_KEY!,
|
|
239
|
+
});
|
|
240
|
+
|
|
241
|
+
export async function POST(req: Request) {
|
|
242
|
+
const { amount, currency } = await req.json();
|
|
243
|
+
|
|
244
|
+
const intent = await dcp.createPaymentIntent({
|
|
245
|
+
amount,
|
|
246
|
+
currency,
|
|
247
|
+
idempotencyKey: crypto.randomUUID(),
|
|
248
|
+
});
|
|
249
|
+
|
|
250
|
+
return Response.json(intent);
|
|
251
|
+
}
|
|
252
|
+
```
|
|
253
|
+
|
|
254
|
+
### Next.js Webhook Handler
|
|
255
|
+
|
|
256
|
+
```typescript
|
|
257
|
+
// app/api/dcp/webhook/route.ts
|
|
258
|
+
import { verifyWebhookSignature } from '@directcryptopay/sdk';
|
|
259
|
+
|
|
260
|
+
export async function POST(req: Request) {
|
|
261
|
+
const rawBody = await req.text();
|
|
262
|
+
const signature = req.headers.get('x-dcp-signature') ?? '';
|
|
263
|
+
|
|
264
|
+
const isValid = await verifyWebhookSignature({
|
|
265
|
+
rawBody,
|
|
266
|
+
signatureHeader: signature,
|
|
267
|
+
secret: process.env.DCP_WEBHOOK_SECRET!,
|
|
268
|
+
});
|
|
269
|
+
|
|
270
|
+
if (!isValid) {
|
|
271
|
+
return new Response('Invalid signature', { status: 400 });
|
|
272
|
+
}
|
|
273
|
+
|
|
274
|
+
const event = JSON.parse(rawBody);
|
|
275
|
+
|
|
276
|
+
switch (event.event) {
|
|
277
|
+
case 'payment.succeeded':
|
|
278
|
+
// Handle success
|
|
279
|
+
break;
|
|
280
|
+
case 'payment.failed':
|
|
281
|
+
// Handle failure
|
|
282
|
+
break;
|
|
283
|
+
}
|
|
284
|
+
|
|
285
|
+
return new Response('OK');
|
|
286
|
+
}
|
|
287
|
+
```
|
|
288
|
+
|
|
289
|
+
### Cloudflare Workers / Edge
|
|
290
|
+
|
|
291
|
+
```typescript
|
|
292
|
+
export default {
|
|
293
|
+
async fetch(req: Request, env: Env) {
|
|
294
|
+
const dcp = new DirectCryptoPay({
|
|
295
|
+
baseURL: 'https://api.directcryptopay.com',
|
|
296
|
+
apiKey: env.DCP_API_KEY,
|
|
297
|
+
});
|
|
298
|
+
|
|
299
|
+
const intent = await dcp.createPaymentIntent({
|
|
300
|
+
amount: 99.99,
|
|
301
|
+
currency: 'USD',
|
|
302
|
+
});
|
|
303
|
+
|
|
304
|
+
return new Response(JSON.stringify(intent), {
|
|
305
|
+
headers: { 'Content-Type': 'application/json' },
|
|
306
|
+
});
|
|
307
|
+
},
|
|
308
|
+
};
|
|
309
|
+
```
|
|
310
|
+
|
|
311
|
+
## Security Best Practices
|
|
312
|
+
|
|
313
|
+
### ✅ DO:
|
|
314
|
+
|
|
315
|
+
1. **Always verify webhook signatures** using `verifyWebhookSignature`
|
|
316
|
+
2. **Use environment variables** for API keys and secrets
|
|
317
|
+
3. **Use HTTPS in production**
|
|
318
|
+
4. **Use idempotency keys** to prevent duplicate payments
|
|
319
|
+
5. **Validate payment amounts** server-side before fulfillment
|
|
320
|
+
|
|
321
|
+
### ❌ DON'T:
|
|
322
|
+
|
|
323
|
+
1. **Never expose API keys** to the client (browser)
|
|
324
|
+
2. **Never trust client-side payment amounts**
|
|
325
|
+
3. **Never skip signature verification** on webhooks
|
|
326
|
+
4. **Never hardcode secrets** in source code
|
|
327
|
+
|
|
328
|
+
## Testing
|
|
329
|
+
|
|
330
|
+
The SDK uses Web Crypto API which works in:
|
|
331
|
+
|
|
332
|
+
- Node.js 16+ (with `globalThis.crypto`)
|
|
333
|
+
- Deno
|
|
334
|
+
- Cloudflare Workers
|
|
335
|
+
- Vercel Edge Functions
|
|
336
|
+
- Modern browsers
|
|
337
|
+
|
|
338
|
+
### Test Networks
|
|
339
|
+
|
|
340
|
+
- **Sepolia** (Ethereum) - chainId: 11155111
|
|
341
|
+
- **Polygon Amoy** - chainId: 80002
|
|
342
|
+
- **BSC Testnet** - chainId: 97
|
|
343
|
+
|
|
344
|
+
### Get Test Tokens
|
|
345
|
+
|
|
346
|
+
- Sepolia ETH: https://sepoliafaucet.com
|
|
347
|
+
- Sepolia USDC: https://faucet.circle.com
|
|
348
|
+
|
|
349
|
+
## Support
|
|
350
|
+
|
|
351
|
+
- **Documentation:** https://docs.directcryptopay.com
|
|
352
|
+
- **API Reference:** https://api.directcryptopay.com/docs
|
|
353
|
+
- **Dashboard:** https://app.directcryptopay.com
|
|
354
|
+
|
|
355
|
+
## License
|
|
356
|
+
|
|
357
|
+
MIT
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
import { cy as l } from "./index-DiHImG4L.js";
|
|
2
|
+
const o = l`<svg
|
|
3
|
+
width="14"
|
|
4
|
+
height="14"
|
|
5
|
+
viewBox="0 0 14 14"
|
|
6
|
+
fill="none"
|
|
7
|
+
xmlns="http://www.w3.org/2000/svg"
|
|
8
|
+
>
|
|
9
|
+
<path
|
|
10
|
+
fill="currentColor"
|
|
11
|
+
fill-rule="evenodd"
|
|
12
|
+
clip-rule="evenodd"
|
|
13
|
+
d="M7.0023 0.875C7.48571 0.875 7.8776 1.26675 7.8776 1.75V6.125H12.2541C12.7375 6.125 13.1294 6.51675 13.1294 7C13.1294 7.48325 12.7375 7.875 12.2541 7.875H7.8776V12.25C7.8776 12.7332 7.48571 13.125 7.0023 13.125C6.51889 13.125 6.12701 12.7332 6.12701 12.25V7.875H1.75054C1.26713 7.875 0.875244 7.48325 0.875244 7C0.875244 6.51675 1.26713 6.125 1.75054 6.125H6.12701V1.75C6.12701 1.26675 6.51889 0.875 7.0023 0.875Z"
|
|
14
|
+
fill="#667dff"
|
|
15
|
+
/></svg
|
|
16
|
+
>`;
|
|
17
|
+
export {
|
|
18
|
+
o as addSvg
|
|
19
|
+
};
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import { cy as a } from "./index-DiHImG4L.js";
|
|
2
|
+
const o = a`<svg fill="none" viewBox="0 0 24 24">
|
|
3
|
+
<path
|
|
4
|
+
style="fill: var(--wui-color-accent-100);"
|
|
5
|
+
d="M10.2 6.6a3.6 3.6 0 1 1-7.2 0 3.6 3.6 0 0 1 7.2 0ZM21 6.6a3.6 3.6 0 1 1-7.2 0 3.6 3.6 0 0 1 7.2 0ZM10.2 17.4a3.6 3.6 0 1 1-7.2 0 3.6 3.6 0 0 1 7.2 0ZM21 17.4a3.6 3.6 0 1 1-7.2 0 3.6 3.6 0 0 1 7.2 0Z"
|
|
6
|
+
/>
|
|
7
|
+
</svg>`;
|
|
8
|
+
export {
|
|
9
|
+
o as allWalletsSvg
|
|
10
|
+
};
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
import { cy as a } from "./index-DiHImG4L.js";
|
|
2
|
+
const e = a`
|
|
3
|
+
<svg width="36" height="36">
|
|
4
|
+
<path
|
|
5
|
+
d="M28.724 0H7.271A7.269 7.269 0 0 0 0 7.272v21.46A7.268 7.268 0 0 0 7.271 36H28.73A7.272 7.272 0 0 0 36 28.728V7.272A7.275 7.275 0 0 0 28.724 0Z"
|
|
6
|
+
fill="url(#a)"
|
|
7
|
+
/>
|
|
8
|
+
<path
|
|
9
|
+
d="m17.845 8.271.729-1.26a1.64 1.64 0 1 1 2.843 1.638l-7.023 12.159h5.08c1.646 0 2.569 1.935 1.853 3.276H6.434a1.632 1.632 0 0 1-1.638-1.638c0-.909.73-1.638 1.638-1.638h4.176l5.345-9.265-1.67-2.898a1.642 1.642 0 0 1 2.844-1.638l.716 1.264Zm-6.317 17.5-1.575 2.732a1.64 1.64 0 1 1-2.844-1.638l1.17-2.025c1.323-.41 2.398-.095 3.249.931Zm13.56-4.954h4.262c.909 0 1.638.729 1.638 1.638 0 .909-.73 1.638-1.638 1.638h-2.367l1.597 2.772c.45.788.185 1.782-.602 2.241a1.642 1.642 0 0 1-2.241-.603c-2.69-4.666-4.711-8.159-6.052-10.485-1.372-2.367-.391-4.743.576-5.549 1.075 1.846 2.682 4.631 4.828 8.348Z"
|
|
10
|
+
fill="#fff"
|
|
11
|
+
/>
|
|
12
|
+
<defs>
|
|
13
|
+
<linearGradient id="a" x1="18" y1="0" x2="18" y2="36" gradientUnits="userSpaceOnUse">
|
|
14
|
+
<stop stop-color="#18BFFB" />
|
|
15
|
+
<stop offset="1" stop-color="#2072F3" />
|
|
16
|
+
</linearGradient>
|
|
17
|
+
</defs>
|
|
18
|
+
</svg>`;
|
|
19
|
+
export {
|
|
20
|
+
e as appStoreSvg
|
|
21
|
+
};
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
import { cy as l } from "./index-DiHImG4L.js";
|
|
2
|
+
const f = l`<svg fill="none" viewBox="0 0 40 40">
|
|
3
|
+
<g clip-path="url(#a)">
|
|
4
|
+
<g clip-path="url(#b)">
|
|
5
|
+
<circle cx="20" cy="19.89" r="20" fill="#000" />
|
|
6
|
+
<g clip-path="url(#c)">
|
|
7
|
+
<path
|
|
8
|
+
fill="#fff"
|
|
9
|
+
d="M28.77 23.3c-.69 1.99-2.75 5.52-4.87 5.56-1.4.03-1.86-.84-3.46-.84-1.61 0-2.12.81-3.45.86-2.25.1-5.72-5.1-5.72-9.62 0-4.15 2.9-6.2 5.42-6.25 1.36-.02 2.64.92 3.47.92.83 0 2.38-1.13 4.02-.97.68.03 2.6.28 3.84 2.08-3.27 2.14-2.76 6.61.75 8.25ZM24.2 7.88c-2.47.1-4.49 2.69-4.2 4.84 2.28.17 4.47-2.39 4.2-4.84Z"
|
|
10
|
+
/>
|
|
11
|
+
</g>
|
|
12
|
+
</g>
|
|
13
|
+
</g>
|
|
14
|
+
<defs>
|
|
15
|
+
<clipPath id="a"><rect width="40" height="40" fill="#fff" rx="20" /></clipPath>
|
|
16
|
+
<clipPath id="b"><path fill="#fff" d="M0 0h40v40H0z" /></clipPath>
|
|
17
|
+
<clipPath id="c"><path fill="#fff" d="M8 7.89h24v24H8z" /></clipPath>
|
|
18
|
+
</defs>
|
|
19
|
+
</svg>`;
|
|
20
|
+
export {
|
|
21
|
+
f as appleSvg
|
|
22
|
+
};
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import { cy as o } from "./index-DiHImG4L.js";
|
|
2
|
+
const e = o`<svg fill="none" viewBox="0 0 14 15">
|
|
3
|
+
<path
|
|
4
|
+
fill="currentColor"
|
|
5
|
+
fill-rule="evenodd"
|
|
6
|
+
d="M7 1.99a1 1 0 0 1 1 1v7.58l2.46-2.46a1 1 0 0 1 1.41 1.42L7.7 13.69a1 1 0 0 1-1.41 0L2.12 9.53A1 1 0 0 1 3.54 8.1L6 10.57V3a1 1 0 0 1 1-1Z"
|
|
7
|
+
clip-rule="evenodd"
|
|
8
|
+
/>
|
|
9
|
+
</svg>`;
|
|
10
|
+
export {
|
|
11
|
+
e as arrowBottomSvg
|
|
12
|
+
};
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
import { cy as C } from "./index-DiHImG4L.js";
|
|
2
|
+
const e = C`<svg
|
|
3
|
+
fill="none"
|
|
4
|
+
viewBox="0 0 21 20"
|
|
5
|
+
>
|
|
6
|
+
<path
|
|
7
|
+
fill="currentColor"
|
|
8
|
+
fill-rule="evenodd"
|
|
9
|
+
d="M10.5 2.42908C6.31875 2.42908 2.92859 5.81989 2.92859 10.0034C2.92859 14.1869 6.31875 17.5777 10.5 17.5777C14.6813 17.5777 18.0714 14.1869 18.0714 10.0034C18.0714 5.81989 14.6813 2.42908 10.5 2.42908ZM0.928589 10.0034C0.928589 4.71596 5.21355 0.429077 10.5 0.429077C15.7865 0.429077 20.0714 4.71596 20.0714 10.0034C20.0714 15.2908 15.7865 19.5777 10.5 19.5777C5.21355 19.5777 0.928589 15.2908 0.928589 10.0034ZM10.5 5.75003C11.0523 5.75003 11.5 6.19774 11.5 6.75003L11.5 10.8343L12.7929 9.54137C13.1834 9.15085 13.8166 9.15085 14.2071 9.54137C14.5976 9.9319 14.5976 10.5651 14.2071 10.9556L11.2071 13.9556C10.8166 14.3461 10.1834 14.3461 9.79291 13.9556L6.79291 10.9556C6.40239 10.5651 6.40239 9.9319 6.79291 9.54137C7.18343 9.15085 7.8166 9.15085 8.20712 9.54137L9.50002 10.8343L9.50002 6.75003C9.50002 6.19774 9.94773 5.75003 10.5 5.75003Z"
|
|
10
|
+
clip-rule="evenodd"
|
|
11
|
+
/></svg
|
|
12
|
+
>`;
|
|
13
|
+
export {
|
|
14
|
+
e as arrowBottomCircleSvg
|
|
15
|
+
};
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import { cy as e } from "./index-DiHImG4L.js";
|
|
2
|
+
const o = e`<svg fill="none" viewBox="0 0 14 15">
|
|
3
|
+
<path
|
|
4
|
+
fill="currentColor"
|
|
5
|
+
fill-rule="evenodd"
|
|
6
|
+
d="M13 7.99a1 1 0 0 1-1 1H4.4l2.46 2.46a1 1 0 1 1-1.41 1.41L1.29 8.7a1 1 0 0 1 0-1.41L5.46 3.1a1 1 0 0 1 1.41 1.42L4.41 6.99H12a1 1 0 0 1 1 1Z"
|
|
7
|
+
clip-rule="evenodd"
|
|
8
|
+
/>
|
|
9
|
+
</svg>`;
|
|
10
|
+
export {
|
|
11
|
+
o as arrowLeftSvg
|
|
12
|
+
};
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import { cy as l } from "./index-DiHImG4L.js";
|
|
2
|
+
const e = l`<svg fill="none" viewBox="0 0 14 15">
|
|
3
|
+
<path
|
|
4
|
+
fill="currentColor"
|
|
5
|
+
fill-rule="evenodd"
|
|
6
|
+
d="M1 7.99a1 1 0 0 1 1-1h7.58L7.12 4.53A1 1 0 1 1 8.54 3.1l4.16 4.17a1 1 0 0 1 0 1.41l-4.16 4.17a1 1 0 1 1-1.42-1.41l2.46-2.46H2a1 1 0 0 1-1-1Z"
|
|
7
|
+
clip-rule="evenodd"
|
|
8
|
+
/>
|
|
9
|
+
</svg>`;
|
|
10
|
+
export {
|
|
11
|
+
e as arrowRightSvg
|
|
12
|
+
};
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import { cy as o } from "./index-DiHImG4L.js";
|
|
2
|
+
const e = o`<svg fill="none" viewBox="0 0 14 15">
|
|
3
|
+
<path
|
|
4
|
+
fill="currentColor"
|
|
5
|
+
fill-rule="evenodd"
|
|
6
|
+
d="M7 13.99a1 1 0 0 1-1-1V5.4L3.54 7.86a1 1 0 0 1-1.42-1.41L6.3 2.28a1 1 0 0 1 1.41 0l4.17 4.17a1 1 0 1 1-1.41 1.41L8 5.4v7.59a1 1 0 0 1-1 1Z"
|
|
7
|
+
clip-rule="evenodd"
|
|
8
|
+
/>
|
|
9
|
+
</svg>`;
|
|
10
|
+
export {
|
|
11
|
+
e as arrowTopSvg
|
|
12
|
+
};
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
import { cy as e } from "./index-DiHImG4L.js";
|
|
2
|
+
const o = e`<svg
|
|
3
|
+
xmlns="http://www.w3.org/2000/svg"
|
|
4
|
+
width="12"
|
|
5
|
+
height="13"
|
|
6
|
+
viewBox="0 0 12 13"
|
|
7
|
+
fill="none"
|
|
8
|
+
>
|
|
9
|
+
<path
|
|
10
|
+
fill-rule="evenodd"
|
|
11
|
+
clip-rule="evenodd"
|
|
12
|
+
d="M5.61391 1.57124C5.85142 1.42873 6.14813 1.42873 6.38564 1.57124L11.0793 4.38749C11.9179 4.89067 11.5612 6.17864 10.5832 6.17864H9.96398V10.0358H10.2854C10.6996 10.0358 11.0354 10.3716 11.0354 10.7858C11.0354 11.2 10.6996 11.5358 10.2854 11.5358H1.71416C1.29995 11.5358 0.964172 11.2 0.964172 10.7858C0.964172 10.3716 1.29995 10.0358 1.71416 10.0358H2.03558L2.03558 6.17864H1.41637C0.438389 6.17864 0.0816547 4.89066 0.920263 4.38749L5.61391 1.57124ZM3.53554 6.17864V10.0358H5.24979V6.17864H3.53554ZM6.74976 6.17864V10.0358H8.46401V6.17864H6.74976ZM8.64913 4.67864H3.35043L5.99978 3.089L8.64913 4.67864Z"
|
|
13
|
+
fill="currentColor"
|
|
14
|
+
/></svg
|
|
15
|
+
>`;
|
|
16
|
+
export {
|
|
17
|
+
o as bankSvg
|
|
18
|
+
};
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
import { cy as l } from "./index-DiHImG4L.js";
|
|
2
|
+
const a = l`<svg fill="none" viewBox="0 0 20 20">
|
|
3
|
+
<path
|
|
4
|
+
fill="currentColor"
|
|
5
|
+
fill-rule="evenodd"
|
|
6
|
+
d="M4 6.4a1 1 0 0 1-.46.89 6.98 6.98 0 0 0 .38 6.18A7 7 0 0 0 16.46 7.3a1 1 0 0 1-.47-.92 7 7 0 0 0-12 .03Zm-2.02-.5a9 9 0 1 1 16.03 8.2A9 9 0 0 1 1.98 5.9Z"
|
|
7
|
+
clip-rule="evenodd"
|
|
8
|
+
/>
|
|
9
|
+
<path
|
|
10
|
+
fill="currentColor"
|
|
11
|
+
fill-rule="evenodd"
|
|
12
|
+
d="M6.03 8.63c-1.46-.3-2.72-.75-3.6-1.35l-.02-.01-.14-.11a1 1 0 0 1 1.2-1.6l.1.08c.6.4 1.52.74 2.69 1 .16-.99.39-1.88.67-2.65.3-.79.68-1.5 1.15-2.02A2.58 2.58 0 0 1 9.99 1c.8 0 1.45.44 1.92.97.47.52.84 1.23 1.14 2.02.29.77.52 1.66.68 2.64a8 8 0 0 0 2.7-1l.26-.18h.48a1 1 0 0 1 .12 2c-.86.51-2.01.91-3.34 1.18a22.24 22.24 0 0 1-.03 3.19c1.45.29 2.7.73 3.58 1.31a1 1 0 0 1-1.1 1.68c-.6-.4-1.56-.76-2.75-1-.15.8-.36 1.55-.6 2.2-.3.79-.67 1.5-1.14 2.02-.47.53-1.12.97-1.92.97-.8 0-1.45-.44-1.91-.97a6.51 6.51 0 0 1-1.15-2.02c-.24-.65-.44-1.4-.6-2.2-1.18.24-2.13.6-2.73.99a1 1 0 1 1-1.1-1.67c.88-.58 2.12-1.03 3.57-1.31a22.03 22.03 0 0 1-.04-3.2Zm2.2-1.7c.15-.86.34-1.61.58-2.24.24-.65.51-1.12.76-1.4.25-.28.4-.29.42-.29.03 0 .17.01.42.3.25.27.52.74.77 1.4.23.62.43 1.37.57 2.22a19.96 19.96 0 0 1-3.52 0Zm-.18 4.6a20.1 20.1 0 0 1-.03-2.62 21.95 21.95 0 0 0 3.94 0 20.4 20.4 0 0 1-.03 2.63 21.97 21.97 0 0 0-3.88 0Zm.27 2c.13.66.3 1.26.49 1.78.24.65.51 1.12.76 1.4.25.28.4.29.42.29.03 0 .17-.01.42-.3.25-.27.52-.74.77-1.4.19-.5.36-1.1.49-1.78a20.03 20.03 0 0 0-3.35 0Z"
|
|
13
|
+
clip-rule="evenodd"
|
|
14
|
+
/>
|
|
15
|
+
</svg>`;
|
|
16
|
+
export {
|
|
17
|
+
a as browserSvg
|
|
18
|
+
};
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
import { cy as C } from "./index-DiHImG4L.js";
|
|
2
|
+
const l = C`<svg
|
|
3
|
+
xmlns="http://www.w3.org/2000/svg"
|
|
4
|
+
width="12"
|
|
5
|
+
height="13"
|
|
6
|
+
viewBox="0 0 12 13"
|
|
7
|
+
fill="none"
|
|
8
|
+
>
|
|
9
|
+
<path
|
|
10
|
+
fill-rule="evenodd"
|
|
11
|
+
clip-rule="evenodd"
|
|
12
|
+
d="M4.16072 2C4.17367 2 4.18665 2 4.19968 2L7.83857 2C8.36772 1.99998 8.82398 1.99996 9.19518 2.04018C9.5895 2.0829 9.97577 2.17811 10.3221 2.42971C10.5131 2.56849 10.6811 2.73647 10.8198 2.92749C11.0714 3.27379 11.1666 3.66007 11.2094 4.0544C11.2496 4.42561 11.2496 4.88188 11.2495 5.41105V7.58896C11.2496 8.11812 11.2496 8.57439 11.2094 8.94561C11.1666 9.33994 11.0714 9.72621 10.8198 10.0725C10.6811 10.2635 10.5131 10.4315 10.3221 10.5703C9.97577 10.8219 9.5895 10.9171 9.19518 10.9598C8.82398 11 8.36772 11 7.83856 11H4.16073C3.63157 11 3.17531 11 2.80411 10.9598C2.40979 10.9171 2.02352 10.8219 1.67722 10.5703C1.48621 10.4315 1.31824 10.2635 1.17946 10.0725C0.927858 9.72621 0.832652 9.33994 0.78993 8.94561C0.749713 8.5744 0.749733 8.11813 0.749757 7.58896L0.749758 5.45C0.749758 5.43697 0.749758 5.42399 0.749757 5.41104C0.749733 4.88188 0.749713 4.42561 0.78993 4.0544C0.832652 3.66007 0.927858 3.27379 1.17946 2.92749C1.31824 2.73647 1.48621 2.56849 1.67722 2.42971C2.02352 2.17811 2.40979 2.0829 2.80411 2.04018C3.17531 1.99996 3.63157 1.99998 4.16072 2ZM2.96567 3.53145C2.69897 3.56034 2.60687 3.60837 2.55888 3.64324C2.49521 3.6895 2.43922 3.74549 2.39296 3.80916C2.35809 3.85715 2.31007 3.94926 2.28117 4.21597C2.26629 4.35335 2.25844 4.51311 2.25431 4.70832H9.74498C9.74085 4.51311 9.733 4.35335 9.71812 4.21597C9.68922 3.94926 9.6412 3.85715 9.60633 3.80916C9.56007 3.74549 9.50408 3.6895 9.44041 3.64324C9.39242 3.60837 9.30031 3.56034 9.03362 3.53145C8.75288 3.50103 8.37876 3.5 7.79961 3.5H4.19968C3.62053 3.5 3.24641 3.50103 2.96567 3.53145ZM9.74956 6.20832H2.24973V7.55C2.24973 8.12917 2.25076 8.5033 2.28117 8.78404C2.31007 9.05074 2.35809 9.14285 2.39296 9.19084C2.43922 9.25451 2.49521 9.31051 2.55888 9.35677C2.60687 9.39163 2.69897 9.43966 2.96567 9.46856C3.24641 9.49897 3.62053 9.5 4.19968 9.5H7.79961C8.37876 9.5 8.75288 9.49897 9.03362 9.46856C9.30032 9.43966 9.39242 9.39163 9.44041 9.35677C9.50408 9.31051 9.56007 9.25451 9.60633 9.19084C9.6412 9.14285 9.68922 9.05075 9.71812 8.78404C9.74854 8.5033 9.74956 8.12917 9.74956 7.55V6.20832ZM6.74963 8C6.74963 7.58579 7.08541 7.25 7.49961 7.25H8.2496C8.6638 7.25 8.99958 7.58579 8.99958 8C8.99958 8.41422 8.6638 8.75 8.2496 8.75H7.49961C7.08541 8.75 6.74963 8.41422 6.74963 8Z"
|
|
13
|
+
fill="currentColor"
|
|
14
|
+
/></svg
|
|
15
|
+
>`;
|
|
16
|
+
export {
|
|
17
|
+
l as cardSvg
|
|
18
|
+
};
|