@diviswap/sdk 1.7.16 → 1.7.18
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/cli/index.js +3 -3
- package/dist/cli/templates/nextjs-app/actions.ts.hbs +45 -38
- package/dist/cli/templates/nextjs-app/api-hooks.ts.hbs +10 -10
- package/dist/cli/templates/nextjs-app/api-route.ts.hbs +65 -65
- package/dist/cli/templates/nextjs-app/auth-context.tsx.hbs +1 -1
- package/dist/cli/templates/nextjs-app/client.ts.hbs +4 -4
- package/dist/cli/templates/nextjs-app/dashboard-hooks.ts.hbs +7 -7
- package/dist/cli/templates/nextjs-app/example-page.tsx.hbs +9 -9
- package/dist/cli/templates/nextjs-app/hooks.ts.hbs +7 -7
- package/dist/cli/templates/nextjs-app/kyc-hooks.ts.hbs +2 -2
- package/dist/cli/templates/nextjs-app/kyc-wizard.css.hbs +16 -16
- package/dist/cli/templates/nextjs-app/kyc-wizard.tsx.hbs +71 -38
- package/dist/cli/templates/nextjs-app/layout-wrapper.tsx.hbs +4 -4
- package/dist/cli/templates/nextjs-app/layout.tsx.hbs +4 -4
- package/dist/cli/templates/nextjs-app/middleware.ts.hbs +15 -15
- package/dist/cli/templates/nextjs-app/provider-wrapper.tsx.hbs +4 -4
- package/dist/cli/templates/nextjs-app/provider.tsx.hbs +15 -15
- package/dist/cli/templates/nextjs-app/setup-provider.tsx.hbs +4 -4
- package/dist/cli/templates/react/api-client-wrapper.ts.hbs +11 -11
- package/dist/cli/templates/react/example.tsx.hbs +6 -6
- package/dist/cli/templates/react/tanstack-hooks.ts.hbs +14 -14
- package/dist/cli/templates/webhooks/nextjs.hbs +3 -3
- package/dist/index.js +3 -2
- package/dist/index.js.map +1 -1
- package/dist/index.mjs +3 -2
- package/dist/index.mjs.map +1 -1
- package/package.json +1 -1
- package/src/cli/templates/nextjs-app/actions.ts.hbs +45 -38
- package/src/cli/templates/nextjs-app/api-hooks.ts.hbs +10 -10
- package/src/cli/templates/nextjs-app/api-route.ts.hbs +65 -65
- package/src/cli/templates/nextjs-app/auth-context.tsx.hbs +1 -1
- package/src/cli/templates/nextjs-app/client.ts.hbs +4 -4
- package/src/cli/templates/nextjs-app/dashboard-hooks.ts.hbs +7 -7
- package/src/cli/templates/nextjs-app/example-page.tsx.hbs +9 -9
- package/src/cli/templates/nextjs-app/hooks.ts.hbs +7 -7
- package/src/cli/templates/nextjs-app/kyc-hooks.ts.hbs +2 -2
- package/src/cli/templates/nextjs-app/kyc-wizard.css.hbs +16 -16
- package/src/cli/templates/nextjs-app/kyc-wizard.tsx.hbs +71 -38
- package/src/cli/templates/nextjs-app/layout-wrapper.tsx.hbs +4 -4
- package/src/cli/templates/nextjs-app/layout.tsx.hbs +4 -4
- package/src/cli/templates/nextjs-app/middleware.ts.hbs +15 -15
- package/src/cli/templates/nextjs-app/provider-wrapper.tsx.hbs +4 -4
- package/src/cli/templates/nextjs-app/provider.tsx.hbs +15 -15
- package/src/cli/templates/nextjs-app/setup-provider.tsx.hbs +4 -4
- package/src/cli/templates/react/api-client-wrapper.ts.hbs +11 -11
- package/src/cli/templates/react/example.tsx.hbs +6 -6
- package/src/cli/templates/react/tanstack-hooks.ts.hbs +14 -14
- package/src/cli/templates/webhooks/nextjs.hbs +3 -3
package/package.json
CHANGED
|
@@ -1,16 +1,16 @@
|
|
|
1
1
|
'use server';
|
|
2
2
|
|
|
3
|
-
import {
|
|
3
|
+
import { Diviswap } from '@diviswap/sdk';
|
|
4
4
|
import type { Transaction, Payee } from '@diviswap/sdk';
|
|
5
5
|
import { revalidatePath } from 'next/cache';
|
|
6
6
|
import { cookies } from 'next/headers';
|
|
7
7
|
|
|
8
|
-
// Initialize
|
|
9
|
-
function
|
|
10
|
-
return
|
|
11
|
-
apiKey: process.env.
|
|
12
|
-
clientId: process.env.
|
|
13
|
-
environment: (process.env.
|
|
8
|
+
// Initialize Diviswap SDK
|
|
9
|
+
function getDiviswap() {
|
|
10
|
+
return Diviswap.init({
|
|
11
|
+
apiKey: process.env.DIVISWAP_API_KEY!,
|
|
12
|
+
clientId: process.env.DIVISWAP_CLIENT_ID!,
|
|
13
|
+
environment: (process.env.NEXT_PUBLIC_DIVISWAP_ENV as 'production' | 'sandbox') || 'production',
|
|
14
14
|
debug: true // Enable debug logging
|
|
15
15
|
});
|
|
16
16
|
}
|
|
@@ -18,7 +18,7 @@ function getLiberEx() {
|
|
|
18
18
|
// Helper to get session token from cookies
|
|
19
19
|
async function getSessionToken() {
|
|
20
20
|
const cookieStore = await cookies();
|
|
21
|
-
const session = cookieStore.get('
|
|
21
|
+
const session = cookieStore.get('diviswap_session');
|
|
22
22
|
return session?.value;
|
|
23
23
|
}
|
|
24
24
|
|
|
@@ -32,6 +32,7 @@ export async function createTransactionAction(data: {
|
|
|
32
32
|
// Required for offramp
|
|
33
33
|
fromAddress?: string;
|
|
34
34
|
chain?: string;
|
|
35
|
+
txHash?: string; // Required for offramp - transaction hash from blockchain
|
|
35
36
|
}) {
|
|
36
37
|
try {
|
|
37
38
|
const sessionToken = await getSessionToken();
|
|
@@ -39,29 +40,35 @@ export async function createTransactionAction(data: {
|
|
|
39
40
|
return { success: false, error: 'Not authenticated' };
|
|
40
41
|
}
|
|
41
42
|
|
|
42
|
-
const
|
|
43
|
-
|
|
43
|
+
const diviswap = getDiviswap();
|
|
44
|
+
|
|
44
45
|
// Use the appropriate method based on transaction type
|
|
45
46
|
let transaction;
|
|
46
47
|
if (data.type === 'onramp') {
|
|
47
48
|
// Note: Onramp is not yet available in v1 API
|
|
48
49
|
return { success: false, error: 'Onramp transactions are not yet available' };
|
|
49
50
|
} else {
|
|
50
|
-
|
|
51
|
+
// Offramp requires txHash - must send crypto transaction first
|
|
52
|
+
if (!data.txHash) {
|
|
53
|
+
return { success: false, error: 'txHash is required for offramp transactions. Send the crypto transaction first.' };
|
|
54
|
+
}
|
|
55
|
+
|
|
56
|
+
transaction = await diviswap.transactions.offramp({
|
|
51
57
|
amount: data.amount,
|
|
52
58
|
currency: data.currency || 'USD',
|
|
53
59
|
payeeId: data.payeeId!,
|
|
54
|
-
fromAddress: data.fromAddress!,
|
|
55
|
-
chain: data.chain || 'ethereum'
|
|
60
|
+
fromAddress: data.fromAddress!,
|
|
61
|
+
chain: data.chain || 'ethereum',
|
|
62
|
+
txHash: data.txHash
|
|
56
63
|
});
|
|
57
64
|
}
|
|
58
|
-
|
|
59
|
-
revalidatePath('/
|
|
65
|
+
|
|
66
|
+
revalidatePath('/diviswap');
|
|
60
67
|
return { success: true, transaction };
|
|
61
68
|
} catch (error) {
|
|
62
|
-
return {
|
|
63
|
-
success: false,
|
|
64
|
-
error: error instanceof Error ? error.message : 'Transaction creation failed'
|
|
69
|
+
return {
|
|
70
|
+
success: false,
|
|
71
|
+
error: error instanceof Error ? error.message : 'Transaction creation failed'
|
|
65
72
|
};
|
|
66
73
|
}
|
|
67
74
|
}
|
|
@@ -78,8 +85,8 @@ export async function getTransactionsAction(filters?: {
|
|
|
78
85
|
return { success: false, error: 'Not authenticated' };
|
|
79
86
|
}
|
|
80
87
|
|
|
81
|
-
const
|
|
82
|
-
const transactions = await
|
|
88
|
+
const diviswap = getDiviswap();
|
|
89
|
+
const transactions = await diviswap.transactions.list(filters);
|
|
83
90
|
|
|
84
91
|
return { success: true, transactions };
|
|
85
92
|
} catch (error) {
|
|
@@ -98,8 +105,8 @@ export async function getPayeesAction() {
|
|
|
98
105
|
return { success: false, error: 'Not authenticated' };
|
|
99
106
|
}
|
|
100
107
|
|
|
101
|
-
const
|
|
102
|
-
const payees = await
|
|
108
|
+
const diviswap = getDiviswap();
|
|
109
|
+
const payees = await diviswap.payees.list();
|
|
103
110
|
|
|
104
111
|
return { success: true, payees };
|
|
105
112
|
} catch (error) {
|
|
@@ -122,8 +129,8 @@ export async function createPayeeAction(data: {
|
|
|
122
129
|
return { success: false, error: 'Not authenticated' };
|
|
123
130
|
}
|
|
124
131
|
|
|
125
|
-
const
|
|
126
|
-
const payee = await
|
|
132
|
+
const diviswap = getDiviswap();
|
|
133
|
+
const payee = await diviswap.payees.create({
|
|
127
134
|
nickname: data.nickname,
|
|
128
135
|
accountNumber: data.accountNumber,
|
|
129
136
|
routingNumber: data.routingNumber,
|
|
@@ -131,7 +138,7 @@ export async function createPayeeAction(data: {
|
|
|
131
138
|
setAsDefault: false
|
|
132
139
|
});
|
|
133
140
|
|
|
134
|
-
revalidatePath('/
|
|
141
|
+
revalidatePath('/diviswap');
|
|
135
142
|
return { success: true, payee };
|
|
136
143
|
} catch (error) {
|
|
137
144
|
return {
|
|
@@ -148,10 +155,10 @@ export async function deletePayeeAction(payeeId: string) {
|
|
|
148
155
|
return { success: false, error: 'Not authenticated' };
|
|
149
156
|
}
|
|
150
157
|
|
|
151
|
-
const
|
|
152
|
-
await
|
|
158
|
+
const diviswap = getDiviswap();
|
|
159
|
+
await diviswap.payees.delete(payeeId);
|
|
153
160
|
|
|
154
|
-
revalidatePath('/
|
|
161
|
+
revalidatePath('/diviswap');
|
|
155
162
|
return { success: true };
|
|
156
163
|
} catch (error) {
|
|
157
164
|
return {
|
|
@@ -169,8 +176,8 @@ export async function calculateFeesAction(data: {
|
|
|
169
176
|
currency?: string;
|
|
170
177
|
}) {
|
|
171
178
|
try {
|
|
172
|
-
const
|
|
173
|
-
const fees = await
|
|
179
|
+
const diviswap = getDiviswap();
|
|
180
|
+
const fees = await diviswap.fees.calculateFees({
|
|
174
181
|
amount: data.amount,
|
|
175
182
|
userId: undefined // Optional: for per-user fees
|
|
176
183
|
});
|
|
@@ -191,8 +198,8 @@ export async function getIntegratorFeesAction() {
|
|
|
191
198
|
return { success: false, error: 'Not authenticated' };
|
|
192
199
|
}
|
|
193
200
|
|
|
194
|
-
const
|
|
195
|
-
const fees = await
|
|
201
|
+
const diviswap = getDiviswap();
|
|
202
|
+
const fees = await diviswap.fees.getFees();
|
|
196
203
|
|
|
197
204
|
return { success: true, fees };
|
|
198
205
|
} catch (error) {
|
|
@@ -213,10 +220,10 @@ export async function updateIntegratorFeeAction(data: {
|
|
|
213
220
|
return { success: false, error: 'Not authenticated' };
|
|
214
221
|
}
|
|
215
222
|
|
|
216
|
-
const
|
|
217
|
-
const fee = await
|
|
223
|
+
const diviswap = getDiviswap();
|
|
224
|
+
const fee = await diviswap.fees.setFee(data);
|
|
218
225
|
|
|
219
|
-
revalidatePath('/
|
|
226
|
+
revalidatePath('/diviswap');
|
|
220
227
|
return { success: true, fee };
|
|
221
228
|
} catch (error) {
|
|
222
229
|
return {
|
|
@@ -235,8 +242,8 @@ export async function getCurrentUserAction() {
|
|
|
235
242
|
return { success: false, user: null };
|
|
236
243
|
}
|
|
237
244
|
|
|
238
|
-
const
|
|
239
|
-
const user = await
|
|
245
|
+
const diviswap = getDiviswap();
|
|
246
|
+
const user = await diviswap.auth.getProfile();
|
|
240
247
|
|
|
241
248
|
return { success: true, user };
|
|
242
249
|
} catch (error) {
|
|
@@ -247,7 +254,7 @@ export async function getCurrentUserAction() {
|
|
|
247
254
|
// Utility action for checking API status
|
|
248
255
|
export async function checkApiStatusAction() {
|
|
249
256
|
try {
|
|
250
|
-
const
|
|
257
|
+
const diviswap = getDiviswap();
|
|
251
258
|
// Note: Health check endpoint not available in SDK
|
|
252
259
|
return { success: true, status: 'OK' };
|
|
253
260
|
} catch (error) {
|
|
@@ -34,7 +34,7 @@ export function useAuth() {
|
|
|
34
34
|
|
|
35
35
|
const setCustomer = useCallback(async (customerId: string, customerEmail: string) => {
|
|
36
36
|
try {
|
|
37
|
-
const response = await fetch('/api/
|
|
37
|
+
const response = await fetch('/api/diviswap', {
|
|
38
38
|
method: 'POST',
|
|
39
39
|
headers: { 'Content-Type': 'application/json' },
|
|
40
40
|
body: JSON.stringify({
|
|
@@ -56,7 +56,7 @@ export function useAuth() {
|
|
|
56
56
|
|
|
57
57
|
const clearCustomer = useCallback(async () => {
|
|
58
58
|
try {
|
|
59
|
-
await fetch('/api/
|
|
59
|
+
await fetch('/api/diviswap', {
|
|
60
60
|
method: 'POST',
|
|
61
61
|
headers: { 'Content-Type': 'application/json' },
|
|
62
62
|
body: JSON.stringify({ action: 'clearCustomer' })
|
|
@@ -106,7 +106,7 @@ export function useTransactions() {
|
|
|
106
106
|
...filters
|
|
107
107
|
});
|
|
108
108
|
|
|
109
|
-
const response = await fetch(`/api/
|
|
109
|
+
const response = await fetch(`/api/diviswap?${queryParams}`);
|
|
110
110
|
if (!response.ok) throw new Error('Failed to fetch transactions');
|
|
111
111
|
|
|
112
112
|
const data = await response.json();
|
|
@@ -129,7 +129,7 @@ export function useTransactions() {
|
|
|
129
129
|
setError(null);
|
|
130
130
|
|
|
131
131
|
try {
|
|
132
|
-
const response = await fetch('/api/
|
|
132
|
+
const response = await fetch('/api/diviswap', {
|
|
133
133
|
method: 'POST',
|
|
134
134
|
headers: { 'Content-Type': 'application/json' },
|
|
135
135
|
body: JSON.stringify({
|
|
@@ -180,7 +180,7 @@ export function usePayees() {
|
|
|
180
180
|
setError(null);
|
|
181
181
|
|
|
182
182
|
try {
|
|
183
|
-
const response = await fetch(`/api/
|
|
183
|
+
const response = await fetch(`/api/diviswap?resource=payees&customerId=${customerId}&customerEmail=${customerEmail}`);
|
|
184
184
|
if (!response.ok) throw new Error('Failed to fetch payees');
|
|
185
185
|
|
|
186
186
|
const data = await response.json();
|
|
@@ -203,7 +203,7 @@ export function usePayees() {
|
|
|
203
203
|
setError(null);
|
|
204
204
|
|
|
205
205
|
try {
|
|
206
|
-
const response = await fetch('/api/
|
|
206
|
+
const response = await fetch('/api/diviswap', {
|
|
207
207
|
method: 'POST',
|
|
208
208
|
headers: { 'Content-Type': 'application/json' },
|
|
209
209
|
body: JSON.stringify({
|
|
@@ -237,7 +237,7 @@ export function usePayees() {
|
|
|
237
237
|
setError(null);
|
|
238
238
|
|
|
239
239
|
try {
|
|
240
|
-
const response = await fetch(`/api/
|
|
240
|
+
const response = await fetch(`/api/diviswap?resource=payee&id=${id}&customerId=${customerId}&customerEmail=${customerEmail}`, {
|
|
241
241
|
method: 'DELETE'
|
|
242
242
|
});
|
|
243
243
|
|
|
@@ -286,7 +286,7 @@ export function useKYC() {
|
|
|
286
286
|
setError(null);
|
|
287
287
|
|
|
288
288
|
try {
|
|
289
|
-
const response = await fetch(`/api/
|
|
289
|
+
const response = await fetch(`/api/diviswap?resource=kycStatus&customerId=${customerId}&customerEmail=${customerEmail}`);
|
|
290
290
|
if (!response.ok) throw new Error('Failed to fetch KYC status');
|
|
291
291
|
|
|
292
292
|
const data = await response.json();
|
|
@@ -309,7 +309,7 @@ export function useKYC() {
|
|
|
309
309
|
setError(null);
|
|
310
310
|
|
|
311
311
|
try {
|
|
312
|
-
const response = await fetch('/api/
|
|
312
|
+
const response = await fetch('/api/diviswap', {
|
|
313
313
|
method: 'POST',
|
|
314
314
|
headers: { 'Content-Type': 'application/json' },
|
|
315
315
|
body: JSON.stringify({
|
|
@@ -372,7 +372,7 @@ export function useFeeCalculator() {
|
|
|
372
372
|
setError(null);
|
|
373
373
|
|
|
374
374
|
try {
|
|
375
|
-
const response = await fetch('/api/
|
|
375
|
+
const response = await fetch('/api/diviswap', {
|
|
376
376
|
method: 'POST',
|
|
377
377
|
headers: { 'Content-Type': 'application/json' },
|
|
378
378
|
body: JSON.stringify({
|
|
@@ -1,24 +1,24 @@
|
|
|
1
1
|
import { NextRequest, NextResponse } from 'next/server';
|
|
2
|
-
import {
|
|
2
|
+
import { Diviswap } from '@diviswap/sdk';
|
|
3
3
|
import { cookies } from 'next/headers';
|
|
4
|
-
import type {
|
|
4
|
+
import type { Diviswap as DiviswapType } from '@diviswap/sdk';
|
|
5
5
|
|
|
6
|
-
// Initialize
|
|
7
|
-
function
|
|
6
|
+
// Initialize Diviswap SDK with partner authentication
|
|
7
|
+
function getDiviswap() {
|
|
8
8
|
const config = {
|
|
9
9
|
mode: 'partner' as const,
|
|
10
|
-
keyId: process.env.
|
|
11
|
-
secretKey: process.env.
|
|
10
|
+
keyId: process.env.DIVISWAP_PARTNER_KEY_ID!,
|
|
11
|
+
secretKey: process.env.DIVISWAP_PARTNER_SECRET_KEY!,
|
|
12
12
|
authMethod: 'hmac' as const,
|
|
13
|
-
environment: (process.env.
|
|
13
|
+
environment: (process.env.NEXT_PUBLIC_DIVISWAP_ENV as 'production' | 'sandbox') || 'sandbox'
|
|
14
14
|
};
|
|
15
15
|
|
|
16
|
-
return
|
|
16
|
+
return Diviswap.init(config);
|
|
17
17
|
}
|
|
18
18
|
|
|
19
19
|
// Helper function to handle errors
|
|
20
20
|
function handleError(error: unknown) {
|
|
21
|
-
console.error('
|
|
21
|
+
console.error('Diviswap API error:', error);
|
|
22
22
|
|
|
23
23
|
if (error instanceof Error) {
|
|
24
24
|
return NextResponse.json(
|
|
@@ -35,7 +35,7 @@ function handleError(error: unknown) {
|
|
|
35
35
|
|
|
36
36
|
// Type definitions for handlers
|
|
37
37
|
type HandlerContext = {
|
|
38
|
-
|
|
38
|
+
diviswap: DiviswapType;
|
|
39
39
|
cookieStore: Awaited<ReturnType<typeof cookies>>;
|
|
40
40
|
};
|
|
41
41
|
|
|
@@ -43,7 +43,7 @@ type ActionHandler = (params: any, context: HandlerContext) => Promise<NextRespo
|
|
|
43
43
|
type ResourceHandler = (searchParams: URLSearchParams, context: HandlerContext) => Promise<NextResponse>;
|
|
44
44
|
|
|
45
45
|
// Helper function to set customer context from request
|
|
46
|
-
function setCustomerContext(
|
|
46
|
+
function setCustomerContext(diviswap: DiviswapType, params: any) {
|
|
47
47
|
// In partner authentication, you need to identify your user from your session/auth
|
|
48
48
|
// For this example, we'll expect customerId and customerEmail in the request
|
|
49
49
|
// In production, you'd get this from your own authentication system
|
|
@@ -51,14 +51,14 @@ function setCustomerContext(liberex: LiberExType, params: any) {
|
|
|
51
51
|
const customerId = params.customerId || 'demo-customer-123';
|
|
52
52
|
const customerEmail = params.customerEmail || 'demo@yourapp.com';
|
|
53
53
|
|
|
54
|
-
|
|
54
|
+
diviswap.setCustomer(customerId, customerEmail);
|
|
55
55
|
}
|
|
56
56
|
|
|
57
57
|
// POST action handlers
|
|
58
58
|
const postHandlers: Record<string, ActionHandler> = {
|
|
59
|
-
setCustomer: async (params, {
|
|
59
|
+
setCustomer: async (params, { diviswap }) => {
|
|
60
60
|
try {
|
|
61
|
-
|
|
61
|
+
diviswap.setCustomer(params.customerId, params.customerEmail);
|
|
62
62
|
return NextResponse.json({
|
|
63
63
|
success: true,
|
|
64
64
|
customerId: params.customerId,
|
|
@@ -70,9 +70,9 @@ const postHandlers: Record<string, ActionHandler> = {
|
|
|
70
70
|
}
|
|
71
71
|
},
|
|
72
72
|
|
|
73
|
-
clearCustomer: async (_, {
|
|
73
|
+
clearCustomer: async (_, { diviswap }) => {
|
|
74
74
|
try {
|
|
75
|
-
|
|
75
|
+
diviswap.clearCustomer();
|
|
76
76
|
return NextResponse.json({ success: true });
|
|
77
77
|
} catch (error: any) {
|
|
78
78
|
console.error('Clear customer error:', error);
|
|
@@ -80,9 +80,9 @@ const postHandlers: Record<string, ActionHandler> = {
|
|
|
80
80
|
}
|
|
81
81
|
},
|
|
82
82
|
|
|
83
|
-
createTransaction: async (params, {
|
|
83
|
+
createTransaction: async (params, { diviswap }) => {
|
|
84
84
|
// Set customer context before API calls
|
|
85
|
-
setCustomerContext(
|
|
85
|
+
setCustomerContext(diviswap, params);
|
|
86
86
|
|
|
87
87
|
// Use the appropriate method based on transaction type
|
|
88
88
|
let transaction;
|
|
@@ -121,17 +121,17 @@ const postHandlers: Record<string, ActionHandler> = {
|
|
|
121
121
|
// Use environment-appropriate method
|
|
122
122
|
// Production: uses regular offramp (creates completed transaction)
|
|
123
123
|
// Sandbox/Development: uses offrampTest (creates pending transaction)
|
|
124
|
-
const isProduction = process.env.
|
|
124
|
+
const isProduction = process.env.NEXT_PUBLIC_DIVISWAP_ENV === 'production';
|
|
125
125
|
transaction = isProduction
|
|
126
|
-
? await
|
|
127
|
-
: await
|
|
126
|
+
? await diviswap.transactions.offramp(sdkParams)
|
|
127
|
+
: await diviswap.transactions.offrampTest(sdkParams);
|
|
128
128
|
}
|
|
129
129
|
return NextResponse.json(transaction);
|
|
130
130
|
},
|
|
131
131
|
|
|
132
|
-
createPayee: async (params, {
|
|
132
|
+
createPayee: async (params, { diviswap }) => {
|
|
133
133
|
// Set customer context before API calls
|
|
134
|
-
setCustomerContext(
|
|
134
|
+
setCustomerContext(diviswap, params);
|
|
135
135
|
|
|
136
136
|
|
|
137
137
|
// Check if the SDK is sending structured debit card data
|
|
@@ -144,7 +144,7 @@ const postHandlers: Record<string, ActionHandler> = {
|
|
|
144
144
|
setAsDefault: params.setAsDefault || false
|
|
145
145
|
};
|
|
146
146
|
|
|
147
|
-
const payee = await
|
|
147
|
+
const payee = await diviswap.payees.create(debitCardPayload);
|
|
148
148
|
return NextResponse.json(payee);
|
|
149
149
|
}
|
|
150
150
|
// Handle legacy flat structure for debit cards
|
|
@@ -172,11 +172,11 @@ const postHandlers: Record<string, ActionHandler> = {
|
|
|
172
172
|
setAsDefault: params.setAsDefault || false
|
|
173
173
|
};
|
|
174
174
|
|
|
175
|
-
const payee = await
|
|
175
|
+
const payee = await diviswap.payees.create(debitCardPayload);
|
|
176
176
|
return NextResponse.json(payee);
|
|
177
177
|
} else {
|
|
178
178
|
// Bank account structure
|
|
179
|
-
const payee = await
|
|
179
|
+
const payee = await diviswap.payees.create({
|
|
180
180
|
nickname: params.nickname,
|
|
181
181
|
accountNumber: params.accountNumber,
|
|
182
182
|
routingNumber: params.routingNumber,
|
|
@@ -188,23 +188,23 @@ const postHandlers: Record<string, ActionHandler> = {
|
|
|
188
188
|
},
|
|
189
189
|
|
|
190
190
|
{{#if (includes features "fees")}}
|
|
191
|
-
calculateFees: async (params, {
|
|
192
|
-
const fees = await
|
|
191
|
+
calculateFees: async (params, { diviswap }) => {
|
|
192
|
+
const fees = await diviswap.fees.calculateFees({
|
|
193
193
|
amount: params.amount,
|
|
194
194
|
userId: undefined
|
|
195
195
|
});
|
|
196
196
|
return NextResponse.json(fees);
|
|
197
197
|
},
|
|
198
198
|
|
|
199
|
-
getIntegratorFees: async (_, {
|
|
200
|
-
const fees = await
|
|
199
|
+
getIntegratorFees: async (_, { diviswap }) => {
|
|
200
|
+
const fees = await diviswap.fees.getFees();
|
|
201
201
|
return NextResponse.json(fees);
|
|
202
202
|
},
|
|
203
203
|
{{/if}}
|
|
204
204
|
|
|
205
|
-
submitKYC: async (params, {
|
|
205
|
+
submitKYC: async (params, { diviswap }) => {
|
|
206
206
|
// Set customer context before KYC submission
|
|
207
|
-
setCustomerContext(
|
|
207
|
+
setCustomerContext(diviswap, params);
|
|
208
208
|
|
|
209
209
|
try {
|
|
210
210
|
|
|
@@ -248,7 +248,7 @@ const postHandlers: Record<string, ActionHandler> = {
|
|
|
248
248
|
};
|
|
249
249
|
|
|
250
250
|
|
|
251
|
-
const result = await
|
|
251
|
+
const result = await diviswap.kyc.submitPersonalInfo(kycPayload);
|
|
252
252
|
|
|
253
253
|
return NextResponse.json(result);
|
|
254
254
|
} catch (error: any) {
|
|
@@ -260,12 +260,12 @@ const postHandlers: Record<string, ActionHandler> = {
|
|
|
260
260
|
}
|
|
261
261
|
},
|
|
262
262
|
|
|
263
|
-
createAddress: async (params, {
|
|
263
|
+
createAddress: async (params, { diviswap }) => {
|
|
264
264
|
// Set customer context before API call
|
|
265
|
-
setCustomerContext(
|
|
265
|
+
setCustomerContext(diviswap, params);
|
|
266
266
|
|
|
267
267
|
try {
|
|
268
|
-
const address = await
|
|
268
|
+
const address = await diviswap.addresses.create({
|
|
269
269
|
chain_id: params.chain_id,
|
|
270
270
|
address: params.address,
|
|
271
271
|
is_default: params.is_default
|
|
@@ -278,12 +278,12 @@ const postHandlers: Record<string, ActionHandler> = {
|
|
|
278
278
|
}
|
|
279
279
|
},
|
|
280
280
|
|
|
281
|
-
setDefaultAddress: async (params, {
|
|
281
|
+
setDefaultAddress: async (params, { diviswap }) => {
|
|
282
282
|
// Set customer context before API call
|
|
283
|
-
setCustomerContext(
|
|
283
|
+
setCustomerContext(diviswap, params);
|
|
284
284
|
|
|
285
285
|
try {
|
|
286
|
-
await
|
|
286
|
+
await diviswap.addresses.setDefault({
|
|
287
287
|
chain_id: params.chain_id,
|
|
288
288
|
address: params.address
|
|
289
289
|
});
|
|
@@ -295,12 +295,12 @@ const postHandlers: Record<string, ActionHandler> = {
|
|
|
295
295
|
}
|
|
296
296
|
},
|
|
297
297
|
|
|
298
|
-
deleteAddress: async (params, {
|
|
298
|
+
deleteAddress: async (params, { diviswap }) => {
|
|
299
299
|
// Set customer context before API call
|
|
300
|
-
setCustomerContext(
|
|
300
|
+
setCustomerContext(diviswap, params);
|
|
301
301
|
|
|
302
302
|
try {
|
|
303
|
-
await
|
|
303
|
+
await diviswap.addresses.delete({
|
|
304
304
|
chain_id: params.chain_id,
|
|
305
305
|
address: params.address
|
|
306
306
|
});
|
|
@@ -330,8 +330,8 @@ export async function POST(request: NextRequest) {
|
|
|
330
330
|
);
|
|
331
331
|
}
|
|
332
332
|
|
|
333
|
-
const
|
|
334
|
-
return await handler(params, {
|
|
333
|
+
const diviswap = getDiviswap();
|
|
334
|
+
return await handler(params, { diviswap, cookieStore });
|
|
335
335
|
} catch (error) {
|
|
336
336
|
return handleError(error);
|
|
337
337
|
}
|
|
@@ -339,12 +339,12 @@ export async function POST(request: NextRequest) {
|
|
|
339
339
|
|
|
340
340
|
// GET resource handlers
|
|
341
341
|
const getHandlers: Record<string, ResourceHandler> = {
|
|
342
|
-
customerStatus: async (searchParams, {
|
|
342
|
+
customerStatus: async (searchParams, { diviswap }) => {
|
|
343
343
|
const customerId = searchParams.get('customerId') || 'demo-customer-123';
|
|
344
344
|
const customerEmail = searchParams.get('customerEmail') || 'demo@yourapp.com';
|
|
345
345
|
|
|
346
346
|
// Set customer context
|
|
347
|
-
|
|
347
|
+
diviswap.setCustomer(customerId, customerEmail);
|
|
348
348
|
|
|
349
349
|
return NextResponse.json({
|
|
350
350
|
customerId,
|
|
@@ -354,30 +354,30 @@ const getHandlers: Record<string, ResourceHandler> = {
|
|
|
354
354
|
});
|
|
355
355
|
},
|
|
356
356
|
|
|
357
|
-
payees: async (searchParams, {
|
|
357
|
+
payees: async (searchParams, { diviswap }) => {
|
|
358
358
|
const customerId = searchParams.get('customerId') || 'demo-customer-123';
|
|
359
359
|
const customerEmail = searchParams.get('customerEmail') || 'demo@yourapp.com';
|
|
360
360
|
|
|
361
361
|
// Set customer context before API call
|
|
362
|
-
|
|
362
|
+
diviswap.setCustomer(customerId, customerEmail);
|
|
363
363
|
|
|
364
|
-
const payees = await
|
|
364
|
+
const payees = await diviswap.payees.list();
|
|
365
365
|
return NextResponse.json(payees);
|
|
366
366
|
},
|
|
367
367
|
|
|
368
|
-
transactions: async (searchParams, {
|
|
368
|
+
transactions: async (searchParams, { diviswap }) => {
|
|
369
369
|
const customerId = searchParams.get('customerId') || 'demo-customer-123';
|
|
370
370
|
const customerEmail = searchParams.get('customerEmail') || 'demo@yourapp.com';
|
|
371
371
|
|
|
372
372
|
// Set customer context before API call
|
|
373
|
-
|
|
373
|
+
diviswap.setCustomer(customerId, customerEmail);
|
|
374
374
|
|
|
375
375
|
const limit = searchParams.get('limit');
|
|
376
376
|
const offset = searchParams.get('offset');
|
|
377
377
|
const status = searchParams.get('status');
|
|
378
378
|
const type = searchParams.get('type');
|
|
379
379
|
|
|
380
|
-
const transactions = await
|
|
380
|
+
const transactions = await diviswap.transactions.list({
|
|
381
381
|
limit: limit ? Number(limit) : 10,
|
|
382
382
|
offset: offset ? Number(offset) : 0,
|
|
383
383
|
status: status as 'pending' | 'processing' | 'completed' | 'failed' | undefined,
|
|
@@ -387,16 +387,16 @@ const getHandlers: Record<string, ResourceHandler> = {
|
|
|
387
387
|
return NextResponse.json(transactions);
|
|
388
388
|
},
|
|
389
389
|
|
|
390
|
-
kycStatus: async (searchParams, {
|
|
390
|
+
kycStatus: async (searchParams, { diviswap }) => {
|
|
391
391
|
const customerId = searchParams.get('customerId') || 'demo-customer-123';
|
|
392
392
|
const customerEmail = searchParams.get('customerEmail') || 'demo@yourapp.com';
|
|
393
393
|
|
|
394
394
|
// Set customer context before API call
|
|
395
|
-
|
|
395
|
+
diviswap.setCustomer(customerId, customerEmail);
|
|
396
396
|
|
|
397
397
|
try {
|
|
398
398
|
|
|
399
|
-
const status = await
|
|
399
|
+
const status = await diviswap.kyc.getComplianceStatus();
|
|
400
400
|
return NextResponse.json(status);
|
|
401
401
|
} catch (error: any) {
|
|
402
402
|
console.error('Failed to get KYC status:', error);
|
|
@@ -412,17 +412,17 @@ const getHandlers: Record<string, ResourceHandler> = {
|
|
|
412
412
|
}
|
|
413
413
|
},
|
|
414
414
|
|
|
415
|
-
addresses: async (searchParams, {
|
|
415
|
+
addresses: async (searchParams, { diviswap }) => {
|
|
416
416
|
const customerId = searchParams.get('customerId') || 'demo-customer-123';
|
|
417
417
|
const customerEmail = searchParams.get('customerEmail') || 'demo@yourapp.com';
|
|
418
418
|
|
|
419
419
|
// Set customer context before API call
|
|
420
|
-
|
|
420
|
+
diviswap.setCustomer(customerId, customerEmail);
|
|
421
421
|
|
|
422
422
|
const chain_id = searchParams.get('chain_id');
|
|
423
423
|
const is_default = searchParams.get('is_default');
|
|
424
424
|
|
|
425
|
-
let addresses = await
|
|
425
|
+
let addresses = await diviswap.addresses.list();
|
|
426
426
|
|
|
427
427
|
// Filter client-side if params provided
|
|
428
428
|
if (chain_id) {
|
|
@@ -452,8 +452,8 @@ export async function GET(request: NextRequest) {
|
|
|
452
452
|
);
|
|
453
453
|
}
|
|
454
454
|
|
|
455
|
-
const
|
|
456
|
-
return await handler(searchParams, {
|
|
455
|
+
const diviswap = getDiviswap();
|
|
456
|
+
return await handler(searchParams, { diviswap, cookieStore });
|
|
457
457
|
} catch (error) {
|
|
458
458
|
return handleError(error);
|
|
459
459
|
}
|
|
@@ -462,7 +462,7 @@ export async function GET(request: NextRequest) {
|
|
|
462
462
|
{{#if (includes features "webhooks")}}
|
|
463
463
|
// DELETE resource handlers
|
|
464
464
|
const deleteHandlers: Record<string, ResourceHandler> = {
|
|
465
|
-
payee: async (searchParams, {
|
|
465
|
+
payee: async (searchParams, { diviswap }) => {
|
|
466
466
|
const customerId = searchParams.get('customerId') || 'demo-customer-123';
|
|
467
467
|
const customerEmail = searchParams.get('customerEmail') || 'demo@yourapp.com';
|
|
468
468
|
const id = searchParams.get('id');
|
|
@@ -475,9 +475,9 @@ const deleteHandlers: Record<string, ResourceHandler> = {
|
|
|
475
475
|
}
|
|
476
476
|
|
|
477
477
|
// Set customer context before API call
|
|
478
|
-
|
|
478
|
+
diviswap.setCustomer(customerId, customerEmail);
|
|
479
479
|
|
|
480
|
-
await
|
|
480
|
+
await diviswap.payees.delete(id);
|
|
481
481
|
return NextResponse.json({ success: true });
|
|
482
482
|
},
|
|
483
483
|
};
|
|
@@ -498,8 +498,8 @@ export async function DELETE(request: NextRequest) {
|
|
|
498
498
|
);
|
|
499
499
|
}
|
|
500
500
|
|
|
501
|
-
const
|
|
502
|
-
return await handler(searchParams, {
|
|
501
|
+
const diviswap = getDiviswap();
|
|
502
|
+
return await handler(searchParams, { diviswap, cookieStore });
|
|
503
503
|
} catch (error) {
|
|
504
504
|
return handleError(error);
|
|
505
505
|
}
|
|
@@ -26,7 +26,7 @@ interface {{prefix}}AuthProviderProps {
|
|
|
26
26
|
clearCustomer: () => Promise<void>;
|
|
27
27
|
}
|
|
28
28
|
|
|
29
|
-
// This provider receives props instead of using
|
|
29
|
+
// This provider receives props instead of using useDiviswap directly
|
|
30
30
|
// to avoid circular dependencies
|
|
31
31
|
export function {{prefix}}AuthProvider({
|
|
32
32
|
children,
|