๐Ÿช™ Crypto Payments Widget - ์‚ฌ์šฉ ์˜ˆ์‹œ

์œ„์ ฏ์„ ์‚ฌ์šฉํ•˜๊ธฐ ์ „์— ํŒŒํŠธ๋„ˆ ํ† ํฐ์„ ์„ค์ •ํ•˜์„ธ์š”.

โš™๏ธ ์„ค์ •

๐Ÿš€ ๊ธฐ๋ณธ ์‚ฌ์šฉ๋ฒ•

๊ฐ€์žฅ ๊ฐ„๋‹จํ•œ ๋ฐฉ๋ฒ•์œผ๋กœ ์œ„์ ฏ์„ ์‚ฌ์šฉํ•ด๋ณด์„ธ์š”.

// ๊ธฐ๋ณธ ์‚ฌ์šฉ๋ฒ• const widget = new CryptoPaymentsWidget({ mode: 'window', // ๋˜๋Š” 'modal' debug: true }); // ์ž…๊ธˆ ์œ„์ ฏ ์—ด๊ธฐ await widget.openDeposit('user123'); // ์ถœ๊ธˆ ์œ„์ ฏ ์—ด๊ธฐ (์ƒˆ๋กœ์šด ํ•จ์ˆ˜ ์ธํ„ฐํŽ˜์ด์Šค) await widget.openWithdrawal('user123', { minAmount: 10, maxAmount: 10000, showBalance: true, reqWithdraw: async (withdrawalData) => { // ํŒŒํŠธ๋„ˆ ์„œ๋ฒ„์—์„œ ์ถœ๊ธˆ ์ฒ˜๋ฆฌ const response = await fetch('/api/process-withdrawal', { method: 'POST', body: JSON.stringify({ withdrawalData }) }); return response.ok; // ์„ฑ๊ณต ์‹œ true ๋ฐ˜ํ™˜ } });

๐ŸŽฏ ํŒฉํ† ๋ฆฌ ํ•จ์ˆ˜ ์‚ฌ์šฉ๋ฒ•

ํŽธ์˜ ํ•จ์ˆ˜๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ๋” ๊ฐ„๋‹จํ•˜๊ฒŒ ์œ„์ ฏ์„ ์ƒ์„ฑํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

// ์ƒˆ์ฐฝ ๋ชจ๋“œ ์œ„์ ฏ const windowWidget = createCryptoPaymentsWidget.window({ theme: 'light', debug: true }); // ๋ชจ๋‹ฌ ๋ชจ๋“œ ์œ„์ ฏ const modalWidget = createCryptoPaymentsWidget.modal({ modalAnimation: true, modalZIndex: 10000 }); // ์ž…๊ธˆ ์ „์šฉ ์œ„์ ฏ const depositWidget = createCryptoPaymentsWidget.deposit({ mode: 'modal' });

๐ŸŽจ ๊ณ ๊ธ‰ ์„ค์ •

์ƒ์„ธํ•œ ์ฝœ๋ฐฑ๊ณผ ์„ค์ •์„ ํฌํ•จํ•œ ์œ„์ ฏ ์‚ฌ์šฉ๋ฒ•์ž…๋‹ˆ๋‹ค.

const advancedWidget = new CryptoPaymentsWidget({ mode: 'modal', theme: 'dark', width: 500, height: 700, // ์ฝœ๋ฐฑ ํ•จ์ˆ˜๋“ค onSuccess: (result) => { console.log('์„ฑ๊ณต:', result); if (result.type === 'deposit') { alert(`์ž…๊ธˆ ์ฃผ์†Œ ์ƒ์„ฑ: ${result.address}`); } else if (result.type === 'withdrawal') { alert(`์ถœ๊ธˆ ์š”์ฒญ ์™„๋ฃŒ: ${result.transactionId}`); } }, onError: (error) => { console.error('์˜ค๋ฅ˜:', error); alert(`์˜ค๋ฅ˜ ๋ฐœ์ƒ: ${error.message}`); }, onClose: () => { console.log('์œ„์ ฏ์ด ๋‹ซํ˜”์Šต๋‹ˆ๋‹ค'); } });

๐Ÿ”ง ์ฒด์ธ/ํ† ํฐ ๋ฏธ๋ฆฌ ์„ ํƒ

ํŠน์ • ์ฒด์ธ์ด๋‚˜ ํ† ํฐ์„ ๋ฏธ๋ฆฌ ์„ ํƒํ•œ ์ƒํƒœ๋กœ ์œ„์ ฏ์„ ์—ด ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

๐ŸŽฏ ํ†ตํ™” ์ œํ•œ (allowedCurrencies)

ํŠน์ • ํ†ตํ™”๋งŒ ์„ ํƒํ•  ์ˆ˜ ์žˆ๋„๋ก ์ œํ•œํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

// ํŠน์ • ํ†ตํ™”๋งŒ ํ—ˆ์šฉํ•˜๋Š” ์˜ˆ์‹œ // 1๏ธโƒฃ USDT๋งŒ ํ—ˆ์šฉ await widget.openDeposit('user123', { allowedCurrencies: ['USDT'] }); // 2๏ธโƒฃ USDC๋งŒ ํ—ˆ์šฉ await widget.openDeposit('user123', { allowedCurrencies: ['USDC'] }); // 3๏ธโƒฃ ์Šคํ…Œ์ด๋ธ”์ฝ”์ธ๋งŒ ํ—ˆ์šฉ await widget.openDeposit('user123', { allowedCurrencies: ['USDT', 'USDC'] }); // 4๏ธโƒฃ ๋ชจ๋“  ํ†ตํ™” ํ—ˆ์šฉ (๊ธฐ๋ณธ๊ฐ’) await widget.openDeposit('user123', { allowedCurrencies: null // ๋˜๋Š” ์ƒ๋žต });

๐Ÿ’ฐ ๊ธˆ์•ก ๋ฏธ๋ฆฌ ์„ค์ • ์ถœ๊ธˆ

KRW๋‚˜ USD ๊ธˆ์•ก์„ ๋ฏธ๋ฆฌ ์„ค์ •ํ•˜์—ฌ ์ถœ๊ธˆ ์œ„์ ฏ์„ ์—ด ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
์ž”์•ก ์ƒ๊ด€์—†์ด ์„ค์ •๋œ ๊ธˆ์•ก์œผ๋กœ ์ถœ๊ธˆ์ด ๊ฐ€๋Šฅํ•˜๋ฉฐ, ํ™˜์œจ์€ ์ž๋™์œผ๋กœ ๋ณ€ํ™˜๋ฉ๋‹ˆ๋‹ค.

๐Ÿ”ง ์‚ฌ์šฉ์ž ์ •์˜ ๊ธˆ์•ก ์„ค์ •

๐Ÿ’ก ํŒ: ํ™˜์œจ์€ ์‹ค์‹œ๊ฐ„์œผ๋กœ ์ ์šฉ๋˜๋ฉฐ, ํŒŒํŠธ๋„ˆ๋ณ„๋กœ ๋‹ค๋ฅธ ํ™˜์œจ ์ •์ฑ…์„ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
// ๐Ÿ’ฐ ๊ธˆ์•ก ๋ฏธ๋ฆฌ ์„ค์ • ์ถœ๊ธˆ ์˜ˆ์‹œ (์ƒˆ๋กœ์šด ํ•จ์ˆ˜ ์ธํ„ฐํŽ˜์ด์Šค) // 1๏ธโƒฃ 10,000 KRW โ†’ USDT ์ถœ๊ธˆ (๋ฏธ๋ฆฌ ์„ค์ •๋œ ๊ธˆ์•ก) await widget.openWithdrawal('user123', { presetAmount: 10000, presetAmountCurrency: 'KRW', targetCurrency: 'USDT', minAmount: 1000, maxAmount: 100000, dailyLimit: 500000, showBalance: true, showFeeInfo: true, reqWithdraw: async (withdrawalData) => { // ํŒŒํŠธ๋„ˆ ์„œ๋ฒ„์—์„œ ์ถœ๊ธˆ ์ฒ˜๋ฆฌ const response = await fetch('/api/process-withdrawal', { method: 'POST', body: JSON.stringify({ withdrawalData }) }); return response.ok; } }); // 2๏ธโƒฃ 100 USD โ†’ USDC ์ถœ๊ธˆ await widget.openWithdrawal('user123', { presetAmount: 100, presetAmountCurrency: 'USD', targetCurrency: 'USDC', minAmount: 10, maxAmount: 10000, dailyLimit: 50000, reqWithdraw: async (withdrawalData) => { // ํŒŒํŠธ๋„ˆ ์„œ๋ฒ„์—์„œ ์ถœ๊ธˆ ์ฒ˜๋ฆฌ return true; // ์„ฑ๊ณต ์‹œ true ๋ฐ˜ํ™˜ } }); // 3๏ธโƒฃ ์ž๋™ ํ†ตํ™” ์„ ํƒ (์‚ฌ์šฉ์ž๊ฐ€ UI์—์„œ ์„ ํƒ) await widget.openWithdrawal('user123', { presetAmount: 50000, presetAmountCurrency: 'KRW', // targetCurrency ์ƒ๋žต ์‹œ ์‚ฌ์šฉ์ž๊ฐ€ ์„ ํƒ reqWithdraw: async (withdrawalData) => { return true; // ์„ฑ๊ณต ์‹œ true ๋ฐ˜ํ™˜ } });

๐ŸŽฏ ์‹ค์ œ ์‚ฌ์šฉ ์‹œ๋‚˜๋ฆฌ์˜ค

ํŒŒํŠธ๋„ˆ ์‹œ์Šคํ…œ์—์„œ ์ด ๊ธฐ๋Šฅ์„ ์–ด๋–ป๊ฒŒ ํ™œ์šฉํ•  ์ˆ˜ ์žˆ๋Š”์ง€ ๋ณด์—ฌ์ฃผ๋Š” ์˜ˆ์‹œ์ž…๋‹ˆ๋‹ค.

๐Ÿ“ฑ ๋ชจ๋ฐ”์ผ ์•ฑ ์‹œ๋‚˜๋ฆฌ์˜ค

์‚ฌ์šฉ์ž๊ฐ€ ์•ฑ์—์„œ "10,000์› ์ถœ๊ธˆ" ๋ฒ„ํŠผ์„ ๋ˆŒ๋ €์„ ๋•Œ:

โœ… ๊ฐœ์„ ๋œ ๋ฐฉ์‹ (๊ธˆ์•ก ๋ฏธ๋ฆฌ ์„ค์ •)

1๋‹จ๊ณ„: ์•ฑ์—์„œ 10,000 KRW ์„ค์ •
2๋‹จ๊ณ„: ์ถœ๊ธˆ ์œ„์ ฏ ์—ด๊ธฐ
3๋‹จ๊ณ„: ๋„คํŠธ์›Œํฌ ์„ ํƒ (TRON/BSC/ETH ๋“ฑ)
4๋‹จ๊ณ„: ์ˆ˜์‹  ์ฃผ์†Œ ์ž…๋ ฅ
5๋‹จ๊ณ„: ์ถœ๊ธˆ ์™„๋ฃŒ

๐Ÿ‘ ์ž”์•ก ๋ถ€์กฑํ•ด๋„ ์ถœ๊ธˆ ๊ฐ€๋Šฅ!
๐Ÿ‘ ๊ธˆ์•ก ๊ณ„์‚ฐ ๋ถˆํ•„์š”!

โŒ ๊ธฐ์กด ๋ฐฉ์‹

1๋‹จ๊ณ„: ์ถœ๊ธˆ ์œ„์ ฏ ์—ด๊ธฐ
2๋‹จ๊ณ„: ํ†ตํ™” ์„ ํƒ (USDT/USDC)
3๋‹จ๊ณ„: ๋„คํŠธ์›Œํฌ ์„ ํƒ
4๋‹จ๊ณ„: ๊ธˆ์•ก ๊ณ„์‚ฐ ๋ฐ ์ž…๋ ฅ
5๋‹จ๊ณ„: ์ž”์•ก ํ™•์ธ
6๋‹จ๊ณ„: ์ˆ˜์‹  ์ฃผ์†Œ ์ž…๋ ฅ
7๋‹จ๊ณ„: ์ถœ๊ธˆ ์™„๋ฃŒ

๐Ÿ‘Ž ์ž”์•ก ๋ถ€์กฑ์‹œ ์ถœ๊ธˆ ๋ถˆ๊ฐ€
๐Ÿ‘Ž ํ™˜์œจ ๊ณ„์‚ฐ ํ•„์š”

๐ŸŽฎ ์œ„์ ฏ ์ƒํƒœ ๋ฐ ์ œ์–ด

์œ„์ ฏ ์ƒํƒœ๋ฅผ ํ™•์ธํ•˜๋ ค๋ฉด '์œ„์ ฏ ์ƒํƒœ ํ™•์ธ' ๋ฒ„ํŠผ์„ ํด๋ฆญํ•˜์„ธ์š”.

๐Ÿ“‹ ์‹ค์‹œ๊ฐ„ ์ด๋ฒคํŠธ ๋กœ๊ทธ

[์‹œ์Šคํ…œ] ์ด๋ฒคํŠธ ๋กœ๊ทธ๊ฐ€ ์—ฌ๊ธฐ์— ํ‘œ์‹œ๋ฉ๋‹ˆ๋‹ค...