facinet 2.1.0 → 2.1.2

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
- {"version":3,"file":"Facinet.d.ts","sourceRoot":"","sources":["../../src/sdk/Facinet.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAIH,OAAO,KAAK,EACV,aAAa,EACb,aAAa,EACb,aAAa,EACb,WAAW,EAEZ,MAAM,SAAS,CAAC;AA6BjB,qBAAa,OAAO;IAClB,OAAO,CAAC,MAAM,CAA0B;IACxC,OAAO,CAAC,KAAK,CAAc;IAC3B,OAAO,CAAC,MAAM,CAAC,CAAS;gBAEZ,MAAM,GAAE,aAAkB;IAsBtC;;;;;;;;;;;;;OAaG;IACG,GAAG,CAAC,MAAM,EAAE,aAAa,GAAG,OAAO,CAAC,aAAa,CAAC;IA4JxD;;OAEG;IACG,eAAe,IAAI,OAAO,CAAC,WAAW,EAAE,CAAC;IAc/C;;OAEG;IACG,uBAAuB,IAAI,OAAO,CAAC,WAAW,CAAC;IAWrD;;;;;;;;;;;OAWG;WACU,QAAQ,CACnB,MAAM,EAAE,aAAa,GAAG;QAAE,UAAU,CAAC,EAAE,MAAM,CAAA;KAAE,GAC9C,OAAO,CAAC,aAAa,CAAC;CAW1B"}
1
+ {"version":3,"file":"Facinet.d.ts","sourceRoot":"","sources":["../../src/sdk/Facinet.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAIH,OAAO,KAAK,EACV,aAAa,EACb,aAAa,EACb,aAAa,EACb,WAAW,EAEZ,MAAM,SAAS,CAAC;AA6BjB,qBAAa,OAAO;IAClB,OAAO,CAAC,MAAM,CAA0B;IACxC,OAAO,CAAC,KAAK,CAAc;IAC3B,OAAO,CAAC,MAAM,CAAC,CAAS;gBAEZ,MAAM,GAAE,aAAkB;IAyBtC;;;;;;;;;;;;;OAaG;IACG,GAAG,CAAC,MAAM,EAAE,aAAa,GAAG,OAAO,CAAC,aAAa,CAAC;IAgLxD;;OAEG;IACG,eAAe,IAAI,OAAO,CAAC,WAAW,EAAE,CAAC;IAc/C;;OAEG;IACG,uBAAuB,IAAI,OAAO,CAAC,WAAW,CAAC;IAWrD;;;;;;;;;;;OAWG;WACU,QAAQ,CACnB,MAAM,EAAE,aAAa,GAAG;QAAE,UAAU,CAAC,EAAE,MAAM,CAAA;KAAE,GAC9C,OAAO,CAAC,aAAa,CAAC;CAW1B"}
@@ -39,8 +39,10 @@ const CHAINS = {
39
39
  };
40
40
  class Facinet {
41
41
  constructor(config = {}) {
42
+ // Normalize API URL - remove trailing slash
43
+ const apiUrl = (config.apiUrl || 'https://x402-avalanche-chi.vercel.app').replace(/\/$/, '');
42
44
  this.config = {
43
- apiUrl: config.apiUrl || 'https://x402-avalanche-chi.vercel.app',
45
+ apiUrl: apiUrl,
44
46
  privateKey: config.privateKey || '',
45
47
  network: config.network || 'avalanche',
46
48
  rpcUrl: config.rpcUrl || '',
@@ -94,6 +96,9 @@ class Facinet {
94
96
  throw new Error('No payer address provided and no wallet available. Provide payerAddress or privateKey in config.');
95
97
  }
96
98
  }
99
+ // CRITICAL: Checksum addresses for EIP-712 compatibility
100
+ payerAddress = (0, ethers_1.getAddress)(payerAddress);
101
+ const recipientAddress = (0, ethers_1.getAddress)(params.recipient);
97
102
  // Select random facilitator
98
103
  const facilitator = await this.selectRandomFacilitator();
99
104
  // Create ERC-3009 authorization
@@ -120,8 +125,8 @@ class Facinet {
120
125
  ],
121
126
  };
122
127
  const value = {
123
- from: payerAddress,
124
- to: params.recipient, // Payment goes to merchant's address!
128
+ from: payerAddress, // Checksummed
129
+ to: recipientAddress, // Checksummed - Payment goes to merchant's address!
125
130
  value: amount,
126
131
  validAfter: validAfter,
127
132
  validBefore: validBefore,
@@ -141,8 +146,8 @@ class Facinet {
141
146
  types,
142
147
  primaryType: 'TransferWithAuthorization',
143
148
  message: {
144
- from: payerAddress,
145
- to: params.recipient,
149
+ from: payerAddress, // Checksummed
150
+ to: recipientAddress, // Checksummed
146
151
  value: amount.toString(), // BigInt to decimal string
147
152
  validAfter: validAfter.toString(),
148
153
  validBefore: validBefore.toString(),
@@ -155,16 +160,30 @@ class Facinet {
155
160
  method: 'eth_signTypedData_v4',
156
161
  params: [payerAddress, jsonMessage],
157
162
  });
163
+ console.log('🔐 Browser signature created:', {
164
+ signature: signature,
165
+ signatureLength: signature.length,
166
+ payerAddress: payerAddress,
167
+ });
158
168
  }
159
169
  else {
160
170
  throw new Error('No signing method available');
161
171
  }
172
+ console.log('📝 Final authorization:', {
173
+ from: payerAddress, // Checksummed
174
+ to: recipientAddress, // Checksummed
175
+ value: amount.toString(),
176
+ validAfter: validAfter.toString(),
177
+ validBefore: validBefore.toString(),
178
+ nonce: nonce,
179
+ signature: signature?.slice(0, 20) + '...',
180
+ });
162
181
  // Submit to facilitator
163
182
  const paymentPayload = {
164
183
  signature,
165
184
  authorization: {
166
- from: payerAddress,
167
- to: params.recipient,
185
+ from: payerAddress, // Checksummed
186
+ to: recipientAddress, // Checksummed
168
187
  value: amount.toString(),
169
188
  validAfter: validAfter.toString(),
170
189
  validBefore: validBefore.toString(),
@@ -188,8 +207,8 @@ class Facinet {
188
207
  wallet: facilitator.facilitatorWallet,
189
208
  },
190
209
  payment: {
191
- from: payerAddress,
192
- to: params.recipient,
210
+ from: payerAddress, // Checksummed
211
+ to: recipientAddress, // Checksummed
193
212
  amount: params.amount,
194
213
  network: this.config.network,
195
214
  },
@@ -1 +1 @@
1
- {"version":3,"file":"Facinet.js","sourceRoot":"","sources":["../../src/sdk/Facinet.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"Facinet.js","sourceRoot":"","sources":["../../src/sdk/Facinet.ts"],"names":[],"mappings":"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"}
package/dist/sdk.mjs CHANGED
@@ -1,6 +1,6 @@
1
1
  // src/sdk/Facinet.ts
2
2
  import axios from "axios";
3
- import { Wallet, JsonRpcProvider } from "ethers";
3
+ import { Wallet, JsonRpcProvider, getAddress } from "ethers";
4
4
  var CHAINS = {
5
5
  avalanche: {
6
6
  name: "Avalanche Fuji",
@@ -29,8 +29,9 @@ var CHAINS = {
29
29
  };
30
30
  var Facinet = class _Facinet {
31
31
  constructor(config = {}) {
32
+ const apiUrl = (config.apiUrl || "https://x402-avalanche-chi.vercel.app").replace(/\/$/, "");
32
33
  this.config = {
33
- apiUrl: config.apiUrl || "https://x402-avalanche-chi.vercel.app",
34
+ apiUrl,
34
35
  privateKey: config.privateKey || "",
35
36
  network: config.network || "avalanche",
36
37
  rpcUrl: config.rpcUrl || ""
@@ -82,6 +83,8 @@ var Facinet = class _Facinet {
82
83
  );
83
84
  }
84
85
  }
86
+ payerAddress = getAddress(payerAddress);
87
+ const recipientAddress = getAddress(params.recipient);
85
88
  const facilitator = await this.selectRandomFacilitator();
86
89
  const amount = BigInt(parseFloat(params.amount) * 1e6);
87
90
  const validAfter = Math.floor(Date.now() / 1e3) - 60;
@@ -108,8 +111,9 @@ var Facinet = class _Facinet {
108
111
  };
109
112
  const value = {
110
113
  from: payerAddress,
111
- to: params.recipient,
112
- // Payment goes to merchant's address!
114
+ // Checksummed
115
+ to: recipientAddress,
116
+ // Checksummed - Payment goes to merchant's address!
113
117
  value: amount,
114
118
  validAfter,
115
119
  validBefore,
@@ -125,7 +129,9 @@ var Facinet = class _Facinet {
125
129
  primaryType: "TransferWithAuthorization",
126
130
  message: {
127
131
  from: payerAddress,
128
- to: params.recipient,
132
+ // Checksummed
133
+ to: recipientAddress,
134
+ // Checksummed
129
135
  value: amount.toString(),
130
136
  // BigInt to decimal string
131
137
  validAfter: validAfter.toString(),
@@ -141,14 +147,32 @@ var Facinet = class _Facinet {
141
147
  method: "eth_signTypedData_v4",
142
148
  params: [payerAddress, jsonMessage]
143
149
  });
150
+ console.log("\u{1F510} Browser signature created:", {
151
+ signature,
152
+ signatureLength: signature.length,
153
+ payerAddress
154
+ });
144
155
  } else {
145
156
  throw new Error("No signing method available");
146
157
  }
158
+ console.log("\u{1F4DD} Final authorization:", {
159
+ from: payerAddress,
160
+ // Checksummed
161
+ to: recipientAddress,
162
+ // Checksummed
163
+ value: amount.toString(),
164
+ validAfter: validAfter.toString(),
165
+ validBefore: validBefore.toString(),
166
+ nonce,
167
+ signature: signature?.slice(0, 20) + "..."
168
+ });
147
169
  const paymentPayload = {
148
170
  signature,
149
171
  authorization: {
150
172
  from: payerAddress,
151
- to: params.recipient,
173
+ // Checksummed
174
+ to: recipientAddress,
175
+ // Checksummed
152
176
  value: amount.toString(),
153
177
  validAfter: validAfter.toString(),
154
178
  validBefore: validBefore.toString(),
@@ -176,7 +200,9 @@ var Facinet = class _Facinet {
176
200
  },
177
201
  payment: {
178
202
  from: payerAddress,
179
- to: params.recipient,
203
+ // Checksummed
204
+ to: recipientAddress,
205
+ // Checksummed
180
206
  amount: params.amount,
181
207
  network: this.config.network
182
208
  }
package/dist/sdk.mjs.map CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../src/sdk/Facinet.ts"],
4
- "sourcesContent": ["/**\n * Facinet SDK - Main Class\n *\n * JavaScript/TypeScript SDK for integrating x402 payments\n */\n\nimport axios from 'axios';\nimport { Wallet, JsonRpcProvider } from 'ethers';\nimport type {\n FacinetConfig,\n PaymentParams,\n PaymentResult,\n Facilitator,\n ChainConfig,\n} from './types';\n\nconst CHAINS: Record<string, ChainConfig> = {\n avalanche: {\n name: 'Avalanche Fuji',\n chainId: 43113,\n rpcUrl: 'https://api.avax-test.network/ext/bc/C/rpc',\n usdcAddress: '0x5425890298aed601595a70AB815c96711a31Bc65',\n gasToken: 'AVAX',\n blockExplorer: 'https://testnet.snowtrace.io',\n },\n ethereum: {\n name: 'Ethereum Sepolia',\n chainId: 11155111,\n rpcUrl: 'https://rpc.sepolia.org',\n usdcAddress: '0x1c7D4B196Cb0C7B01d743Fbc6116a902379C7238',\n gasToken: 'ETH',\n blockExplorer: 'https://sepolia.etherscan.io',\n },\n polygon: {\n name: 'Polygon Mumbai',\n chainId: 80001,\n rpcUrl: 'https://rpc-mumbai.maticvigil.com',\n usdcAddress: '0x9999f7Fea5938fD3b1E26A12c3f2fb024e194f97',\n gasToken: 'MATIC',\n blockExplorer: 'https://mumbai.polygonscan.com',\n },\n};\n\nexport class Facinet {\n private config: Required<FacinetConfig>;\n private chain: ChainConfig;\n private wallet?: Wallet;\n\n constructor(config: FacinetConfig = {}) {\n this.config = {\n apiUrl: config.apiUrl || 'https://x402-avalanche-chi.vercel.app',\n privateKey: config.privateKey || '',\n network: config.network || 'avalanche',\n rpcUrl: config.rpcUrl || '',\n };\n\n this.chain = CHAINS[this.config.network];\n if (!this.chain) {\n throw new Error(`Unsupported network: ${this.config.network}`);\n }\n\n // Initialize wallet if private key provided (Node.js)\n if (this.config.privateKey) {\n const provider = new JsonRpcProvider(\n this.config.rpcUrl || this.chain.rpcUrl\n );\n this.wallet = new Wallet(this.config.privateKey, provider);\n }\n }\n\n /**\n * Make a payment via x402 facilitator network\n *\n * @example\n * ```typescript\n * const facinet = new Facinet();\n * const result = await facinet.pay({\n * amount: '1',\n * recipient: '0xMerchantAddress',\n * payerAddress: '0xCustomerAddress'\n * });\n * console.log('Payment successful!', result.txHash);\n * ```\n */\n async pay(params: PaymentParams): Promise<PaymentResult> {\n // Validate parameters\n if (!params.amount || parseFloat(params.amount) <= 0) {\n throw new Error('Invalid amount');\n }\n\n if (!params.recipient.match(/^0x[a-fA-F0-9]{40}$/)) {\n throw new Error('Invalid recipient address');\n }\n\n // Get payer address\n let payerAddress: string = params.payerAddress || '';\n if (!payerAddress) {\n if (this.wallet) {\n payerAddress = this.wallet.address;\n } else if (typeof window !== 'undefined' && (window as any).ethereum) {\n // Browser - get from MetaMask\n const accounts = await (window as any).ethereum.request({\n method: 'eth_requestAccounts',\n });\n payerAddress = accounts[0];\n } else {\n throw new Error(\n 'No payer address provided and no wallet available. Provide payerAddress or privateKey in config.'\n );\n }\n }\n\n // Select random facilitator\n const facilitator = await this.selectRandomFacilitator();\n\n // Create ERC-3009 authorization\n const amount = BigInt(parseFloat(params.amount) * 1_000_000); // 6 decimals\n const validAfter = Math.floor(Date.now() / 1000) - 60;\n const validBefore = validAfter + 3600; // 1 hour\n const nonce =\n '0x' +\n Array.from({ length: 64 }, () =>\n Math.floor(Math.random() * 16).toString(16)\n ).join('');\n\n // EIP-712 Domain\n const domain = {\n name: 'USD Coin',\n version: '2',\n chainId: this.chain.chainId,\n verifyingContract: this.chain.usdcAddress,\n };\n\n const types = {\n TransferWithAuthorization: [\n { name: 'from', type: 'address' },\n { name: 'to', type: 'address' },\n { name: 'value', type: 'uint256' },\n { name: 'validAfter', type: 'uint256' },\n { name: 'validBefore', type: 'uint256' },\n { name: 'nonce', type: 'bytes32' },\n ],\n };\n\n const value = {\n from: payerAddress,\n to: params.recipient, // Payment goes to merchant's address!\n value: amount,\n validAfter: validAfter,\n validBefore: validBefore,\n nonce: nonce,\n };\n\n // Sign authorization\n let signature: string;\n\n if (this.wallet) {\n // Node.js - sign with wallet (ethers handles BigInt)\n signature = await this.wallet.signTypedData(domain, types, value);\n } else if (typeof window !== 'undefined' && (window as any).ethereum) {\n // Browser - sign with MetaMask\n // MetaMask eth_signTypedData_v4 requires all values as strings (decimal format for uint256)\n const typedData = {\n domain,\n types,\n primaryType: 'TransferWithAuthorization',\n message: {\n from: payerAddress,\n to: params.recipient,\n value: amount.toString(), // BigInt to decimal string\n validAfter: validAfter.toString(),\n validBefore: validBefore.toString(),\n nonce: nonce,\n },\n };\n\n // Use custom replacer to handle any remaining BigInt values\n const jsonMessage = JSON.stringify(typedData, (_key, value) =>\n typeof value === 'bigint' ? value.toString() : value\n );\n\n signature = await (window as any).ethereum.request({\n method: 'eth_signTypedData_v4',\n params: [payerAddress, jsonMessage],\n });\n } else {\n throw new Error('No signing method available');\n }\n\n // Submit to facilitator\n const paymentPayload = {\n signature,\n authorization: {\n from: payerAddress,\n to: params.recipient,\n value: amount.toString(),\n validAfter: validAfter.toString(),\n validBefore: validBefore.toString(),\n nonce: nonce,\n },\n };\n\n try {\n const response = await axios.post(\n `${this.config.apiUrl}/api/x402/settle-custom`,\n {\n facilitatorId: facilitator.id,\n paymentPayload: paymentPayload,\n }\n );\n\n if (!response.data.success) {\n throw new Error(response.data.error || response.data.message || 'Payment failed');\n }\n\n return {\n success: true,\n txHash: response.data.txHash,\n facilitator: {\n id: facilitator.id,\n name: facilitator.name,\n wallet: facilitator.facilitatorWallet,\n },\n payment: {\n from: payerAddress,\n to: params.recipient,\n amount: params.amount,\n network: this.config.network,\n },\n };\n } catch (error: any) {\n // Enhanced error handling with backend error details\n if (error.response?.data) {\n const backendError = error.response.data.message || error.response.data.error;\n throw new Error(`Payment failed: ${backendError}`);\n }\n throw error;\n }\n }\n\n /**\n * Get all active facilitators\n */\n async getFacilitators(): Promise<Facilitator[]> {\n const response = await axios.get(\n `${this.config.apiUrl}/api/facilitator/list`\n );\n\n if (response.data.success) {\n return response.data.facilitators.filter(\n (f: Facilitator) => f.status === 'active'\n );\n }\n\n return [];\n }\n\n /**\n * Select a random active facilitator\n */\n async selectRandomFacilitator(): Promise<Facilitator> {\n const facilitators = await this.getFacilitators();\n\n if (facilitators.length === 0) {\n throw new Error('No active facilitators available');\n }\n\n const randomIndex = Math.floor(Math.random() * facilitators.length);\n return facilitators[randomIndex];\n }\n\n /**\n * Quick payment helper (static method)\n *\n * @example\n * ```typescript\n * await Facinet.quickPay({\n * amount: '1',\n * recipient: '0xMerchantAddress',\n * privateKey: process.env.PRIVATE_KEY\n * });\n * ```\n */\n static async quickPay(\n params: PaymentParams & { privateKey?: string }\n ): Promise<PaymentResult> {\n const facinet = new Facinet({\n privateKey: params.privateKey,\n });\n\n return facinet.pay({\n amount: params.amount,\n recipient: params.recipient,\n payerAddress: params.payerAddress,\n });\n }\n}\n"],
5
- "mappings": "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",
4
+ "sourcesContent": ["/**\n * Facinet SDK - Main Class\n *\n * JavaScript/TypeScript SDK for integrating x402 payments\n */\n\nimport axios from 'axios';\nimport { Wallet, JsonRpcProvider, getAddress } from 'ethers';\nimport type {\n FacinetConfig,\n PaymentParams,\n PaymentResult,\n Facilitator,\n ChainConfig,\n} from './types';\n\nconst CHAINS: Record<string, ChainConfig> = {\n avalanche: {\n name: 'Avalanche Fuji',\n chainId: 43113,\n rpcUrl: 'https://api.avax-test.network/ext/bc/C/rpc',\n usdcAddress: '0x5425890298aed601595a70AB815c96711a31Bc65',\n gasToken: 'AVAX',\n blockExplorer: 'https://testnet.snowtrace.io',\n },\n ethereum: {\n name: 'Ethereum Sepolia',\n chainId: 11155111,\n rpcUrl: 'https://rpc.sepolia.org',\n usdcAddress: '0x1c7D4B196Cb0C7B01d743Fbc6116a902379C7238',\n gasToken: 'ETH',\n blockExplorer: 'https://sepolia.etherscan.io',\n },\n polygon: {\n name: 'Polygon Mumbai',\n chainId: 80001,\n rpcUrl: 'https://rpc-mumbai.maticvigil.com',\n usdcAddress: '0x9999f7Fea5938fD3b1E26A12c3f2fb024e194f97',\n gasToken: 'MATIC',\n blockExplorer: 'https://mumbai.polygonscan.com',\n },\n};\n\nexport class Facinet {\n private config: Required<FacinetConfig>;\n private chain: ChainConfig;\n private wallet?: Wallet;\n\n constructor(config: FacinetConfig = {}) {\n // Normalize API URL - remove trailing slash\n const apiUrl = (config.apiUrl || 'https://x402-avalanche-chi.vercel.app').replace(/\\/$/, '');\n\n this.config = {\n apiUrl: apiUrl,\n privateKey: config.privateKey || '',\n network: config.network || 'avalanche',\n rpcUrl: config.rpcUrl || '',\n };\n\n this.chain = CHAINS[this.config.network];\n if (!this.chain) {\n throw new Error(`Unsupported network: ${this.config.network}`);\n }\n\n // Initialize wallet if private key provided (Node.js)\n if (this.config.privateKey) {\n const provider = new JsonRpcProvider(\n this.config.rpcUrl || this.chain.rpcUrl\n );\n this.wallet = new Wallet(this.config.privateKey, provider);\n }\n }\n\n /**\n * Make a payment via x402 facilitator network\n *\n * @example\n * ```typescript\n * const facinet = new Facinet();\n * const result = await facinet.pay({\n * amount: '1',\n * recipient: '0xMerchantAddress',\n * payerAddress: '0xCustomerAddress'\n * });\n * console.log('Payment successful!', result.txHash);\n * ```\n */\n async pay(params: PaymentParams): Promise<PaymentResult> {\n // Validate parameters\n if (!params.amount || parseFloat(params.amount) <= 0) {\n throw new Error('Invalid amount');\n }\n\n if (!params.recipient.match(/^0x[a-fA-F0-9]{40}$/)) {\n throw new Error('Invalid recipient address');\n }\n\n // Get payer address\n let payerAddress: string = params.payerAddress || '';\n if (!payerAddress) {\n if (this.wallet) {\n payerAddress = this.wallet.address;\n } else if (typeof window !== 'undefined' && (window as any).ethereum) {\n // Browser - get from MetaMask\n const accounts = await (window as any).ethereum.request({\n method: 'eth_requestAccounts',\n });\n payerAddress = accounts[0];\n } else {\n throw new Error(\n 'No payer address provided and no wallet available. Provide payerAddress or privateKey in config.'\n );\n }\n }\n\n // CRITICAL: Checksum addresses for EIP-712 compatibility\n payerAddress = getAddress(payerAddress);\n const recipientAddress = getAddress(params.recipient);\n\n // Select random facilitator\n const facilitator = await this.selectRandomFacilitator();\n\n // Create ERC-3009 authorization\n const amount = BigInt(parseFloat(params.amount) * 1_000_000); // 6 decimals\n const validAfter = Math.floor(Date.now() / 1000) - 60;\n const validBefore = validAfter + 3600; // 1 hour\n const nonce =\n '0x' +\n Array.from({ length: 64 }, () =>\n Math.floor(Math.random() * 16).toString(16)\n ).join('');\n\n // EIP-712 Domain\n const domain = {\n name: 'USD Coin',\n version: '2',\n chainId: this.chain.chainId,\n verifyingContract: this.chain.usdcAddress,\n };\n\n const types = {\n TransferWithAuthorization: [\n { name: 'from', type: 'address' },\n { name: 'to', type: 'address' },\n { name: 'value', type: 'uint256' },\n { name: 'validAfter', type: 'uint256' },\n { name: 'validBefore', type: 'uint256' },\n { name: 'nonce', type: 'bytes32' },\n ],\n };\n\n const value = {\n from: payerAddress, // Checksummed\n to: recipientAddress, // Checksummed - Payment goes to merchant's address!\n value: amount,\n validAfter: validAfter,\n validBefore: validBefore,\n nonce: nonce,\n };\n\n // Sign authorization\n let signature: string;\n\n if (this.wallet) {\n // Node.js - sign with wallet (ethers handles BigInt)\n signature = await this.wallet.signTypedData(domain, types, value);\n } else if (typeof window !== 'undefined' && (window as any).ethereum) {\n // Browser - sign with MetaMask\n // MetaMask eth_signTypedData_v4 requires all values as strings (decimal format for uint256)\n const typedData = {\n domain,\n types,\n primaryType: 'TransferWithAuthorization',\n message: {\n from: payerAddress, // Checksummed\n to: recipientAddress, // Checksummed\n value: amount.toString(), // BigInt to decimal string\n validAfter: validAfter.toString(),\n validBefore: validBefore.toString(),\n nonce: nonce,\n },\n };\n\n // Use custom replacer to handle any remaining BigInt values\n const jsonMessage = JSON.stringify(typedData, (_key, value) =>\n typeof value === 'bigint' ? value.toString() : value\n );\n\n signature = await (window as any).ethereum.request({\n method: 'eth_signTypedData_v4',\n params: [payerAddress, jsonMessage],\n });\n\n console.log('\uD83D\uDD10 Browser signature created:', {\n signature: signature,\n signatureLength: signature.length,\n payerAddress: payerAddress,\n });\n } else {\n throw new Error('No signing method available');\n }\n\n console.log('\uD83D\uDCDD Final authorization:', {\n from: payerAddress, // Checksummed\n to: recipientAddress, // Checksummed\n value: amount.toString(),\n validAfter: validAfter.toString(),\n validBefore: validBefore.toString(),\n nonce: nonce,\n signature: signature?.slice(0, 20) + '...',\n });\n\n // Submit to facilitator\n const paymentPayload = {\n signature,\n authorization: {\n from: payerAddress, // Checksummed\n to: recipientAddress, // Checksummed\n value: amount.toString(),\n validAfter: validAfter.toString(),\n validBefore: validBefore.toString(),\n nonce: nonce,\n },\n };\n\n try {\n const response = await axios.post(\n `${this.config.apiUrl}/api/x402/settle-custom`,\n {\n facilitatorId: facilitator.id,\n paymentPayload: paymentPayload,\n }\n );\n\n if (!response.data.success) {\n throw new Error(response.data.error || response.data.message || 'Payment failed');\n }\n\n return {\n success: true,\n txHash: response.data.txHash,\n facilitator: {\n id: facilitator.id,\n name: facilitator.name,\n wallet: facilitator.facilitatorWallet,\n },\n payment: {\n from: payerAddress, // Checksummed\n to: recipientAddress, // Checksummed\n amount: params.amount,\n network: this.config.network,\n },\n };\n } catch (error: any) {\n // Enhanced error handling with backend error details\n if (error.response?.data) {\n const backendError = error.response.data.message || error.response.data.error;\n throw new Error(`Payment failed: ${backendError}`);\n }\n throw error;\n }\n }\n\n /**\n * Get all active facilitators\n */\n async getFacilitators(): Promise<Facilitator[]> {\n const response = await axios.get(\n `${this.config.apiUrl}/api/facilitator/list`\n );\n\n if (response.data.success) {\n return response.data.facilitators.filter(\n (f: Facilitator) => f.status === 'active'\n );\n }\n\n return [];\n }\n\n /**\n * Select a random active facilitator\n */\n async selectRandomFacilitator(): Promise<Facilitator> {\n const facilitators = await this.getFacilitators();\n\n if (facilitators.length === 0) {\n throw new Error('No active facilitators available');\n }\n\n const randomIndex = Math.floor(Math.random() * facilitators.length);\n return facilitators[randomIndex];\n }\n\n /**\n * Quick payment helper (static method)\n *\n * @example\n * ```typescript\n * await Facinet.quickPay({\n * amount: '1',\n * recipient: '0xMerchantAddress',\n * privateKey: process.env.PRIVATE_KEY\n * });\n * ```\n */\n static async quickPay(\n params: PaymentParams & { privateKey?: string }\n ): Promise<PaymentResult> {\n const facinet = new Facinet({\n privateKey: params.privateKey,\n });\n\n return facinet.pay({\n amount: params.amount,\n recipient: params.recipient,\n payerAddress: params.payerAddress,\n });\n }\n}\n"],
5
+ "mappings": "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",
6
6
  "names": ["value"]
7
7
  }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "facinet",
3
- "version": "2.1.0",
3
+ "version": "2.1.2",
4
4
  "description": "JavaScript SDK and CLI tool for x402 Facilitator Network - Make gasless USDC payments",
5
5
  "main": "dist/sdk.js",
6
6
  "module": "dist/sdk.mjs",