پرداخت دورهای با ارز دیجیتال: اشتراک کریپتو در ۲۰۲۶ چطور کار میکند
پرداخت دورهای با ارز دیجیتال به مشتری اجازه میدهد حق اشتراک را هر هفته، ماه یا سال با USDC، تتر (USDT) یا توکن دیگری بپردازد. مشکل اینجاست: در کریپتو «کارت ذخیرهشده» وجود ندارد. کیف پول هرگز کلیدهایش را به فروشنده نمیدهد، پس نمیتوانید ماه بعد همینطور دوباره از آن برداشت کنید.
این راهنما سه روش دریافت حق اشتراک کریپتو، هزینه هر کدام برای شما و مشتری، و راهاندازی آنها با OrcaRail را توضیح میدهد.
چرا پرداخت دورهای با ارز دیجیتال سخت است
با کارت، مشتری یک بار شماره کارت را میدهد و شما هر ماه از آن برداشت میکنید. کریپتو برعکس کار میکند. هر انتقال یک ارسال (push) است که صاحب کیف پول امضا میکند. تا صاحب کیف پول امضا نکند، چیزی از آن خارج نمیشود.
پس اشتراک کریپتو یکی از این دو را لازم دارد:
- مشتری در هر دوره یک پرداخت امضا کند، یا
- مشتری یک بار مجوزی امضا کند که به یک آدرس مشخص اجازه میدهد بعداً مبلغ محدودی برداشت کند.
همه محصولات پرداخت دورهای کریپتو نسخهای از یکی از این دو هستند.
سه روش دریافت حق اشتراک با ارز دیجیتال
| روش | چطور کار میکند | زحمت مشتری | روی کدام شبکهها |
|---|---|---|---|
| لینک پرداخت برای هر دوره | هر دوره یک فاکتور یا لینک پرداخت جدید میفرستید و مشتری آن را میپردازد | یک پرداخت در هر دوره | همه زنجیرهها، از جمله بیتکوین |
| برداشت با allowance (پرداخت خودکار) | مشتری یک بار allowance سقفدار تأیید میکند و شما هر دوره برداشت میکنید | یک تأیید، و دیگر هیچ | EVM (ERC-20) و سولانا (واگذاری SPL) |
| پیشپرداخت / اسکرو | مشتری مبلغ چند دوره را از قبل در یک قرارداد یا موجودی واریز میکند | یک واریز بزرگ | بسته به محصول |
لینک پرداخت سادهترین روش است و همهجا کار میکند، اما مشتریها فراموش میکنند و ریزش بیشتر میشود. برداشت با allowance شبیه اشتراک با کارت است: مشتری یک بار تأیید میکند و طبق برنامه از او کسر میشود. اسکرو پول مشتری را قفل میکند و بیشتر آدمها آن را دوست ندارند. دلیل انتخاب برداشت با allowance را در چرا اشتراک allowance-pull توضیح دادهایم.
اشتراک با برداشت allowance چطور کار میکند
روی زنجیرههای EVM، توکنهای ERC-20 مثل USDC تابع approve(spender, amount) دارند. مشتری برای یک آدرس (spender) سقفی کلی تأیید میکند، مثلاً ۱۲۰ USDC برای ۱۲ برداشت ماهانه. هر ماه spender تابع transferFrom را برای ۱۰ USDC صدا میزند. روی سولانا همین ایده با واگذاری (delegation) توکن SPL انجام میشود.
چه چیزی آن را برای مشتری امن میکند:
- سقف روی زنجیره است. spender هرگز نمیتواند بیشتر از مبلغ تأییدشده برداشت کند.
- مشتری هر وقت بخواهد میتواند لغو کند؛ با
approve(spender, 0)روی EVM یا لغو واگذاری روی سولانا. کیف پولها و ابزارهای revoke این تأییدها را نشان میدهند. - کلید خصوصی به اشتراک گذاشته نمیشود. کنترل کامل کیف پول دست مشتری میماند.
معنیاش برای شما: اگر در تاریخ صورتحساب موجودی کیف پول کافی نباشد، برداشت ناموفق میشود. سیستم صورتحساب شما باید این را مدیریت کند (پایینتر).
پرداخت دورهای ارز دیجیتال با OrcaRail
اشتراکهای OrcaRail از هر دو روش اصلی پشتیبانی میکنند. برای هر اشتراک یکی را با collection_method انتخاب میکنید:
send_payment_link(پیشفرض): در هر دوره، OrcaRail یک لینک پرداخت برای آن دوره میسازد و میتواند آن را برای پرداختکننده ایمیل کند. روی همه شبکههای پشتیبانیشده کار میکند.auto_charge: پرداختکننده یک بار تأیید میکند (allowance ERC-20 روی EVM، واگذاری SPL روی سولانا) و OrcaRail مبلغ هر دوره را برداشت میکند. پرداخت خودکار روی بیتکوین کار نمیکند.
پرداختکنندهها میتوانند از صفحه میزبانیشده بین این دو جابهجا شوند. اگر پرداختکننده پرداخت خودکار را لغو کند، اشتراک به لینک پرداخت برمیگردد.
امکانات دیگری که از یک سیستم صورتحساب انتظار دارید:
- دورهها: روز، هفته، ماه یا سال، با
interval_countوtotal_cyclesاختیاری. - دوره آزمایشی:
trial_period_daysیاtrial_end، بهعلاوه webhooksubscription.trial_will_endحدود ۳ روز پیش از پایان دوره آزمایشی (دوره آزمایشی). - وضعیتها:
trialing،active،past_due،paused،canceled،completed. - Webhook برای هر مرحله، از جمله
subscription.payment_link.paid(دوره پرداخت شد، با لینک یا پرداخت خودکار) وsubscription.payment_link.payment_failed(برداشت خودکار ناموفق بود) (Webhookهای اشتراک). - SDK: Node.js، PHP و Laravel Cashier (SDKهای اشتراک).
OrcaRail همچنین در حال انتقال spender پرداخت خودکار از کیف پول داغ OrcaRail به یک قرارداد عمومی روی زنجیره (EVM) و یک برنامه (سولانا) است. روند پرداختکننده تغییری نمیکند: یک بار تأیید، هر زمان لغو. نمای کلی non-custodial را ببینید.
ساخت اشتراک کریپتو
یک پلن ماهانه ۱۰ دلاری، پرداخت با استیبل کوین، با ۱۴ روز دوره آزمایشی:
POST /api/v1/subscriptions
{
"description": "Pro Plan",
"amount": "10.00",
"currency": "usd",
"token_id": "<USDC token id>",
"network_id": "<Base network id>",
"interval": "month",
"trial_period_days": 14,
}
اشتراک با وضعیت trialing شروع میشود. شناسه توکن و شبکه را از GET /payments/networks و GET /payments/networks/:id/tokens بگیرید. مراحل کامل: ساخت اشتراک.
سپس webhookها را در بکاند پردازش کنید:
subscription.payment_link.paid: دسترسی این دوره را بدهید یا تمدید کنید.subscription.payment_link.payment_failedوsubscription.past_due: به مشتری خبر دهید و دسترسی را برای مدت کوتاهی نگه دارید یا پلن را پایین بیاورید.subscription.trial_will_end: به مشتری یادآوری کنید پرداخت خودکار را تأیید کند یا اولین لینک را بپردازد.subscription.canceledوsubscription.completed: دسترسی را در زمان درست قطع کنید.
همه اینها را پیش از راهاندازی در یک سازمان sandbox رایگان با USDC آزمایشی از فاستهای تستنت بسازید و تست کنید.
لینک پرداخت یا پرداخت خودکار: کدام را انتخاب کنید؟
| چه میفروشید… | استفاده کنید |
|---|---|
| SaaS، عضویت، پلنهای API (ماهانه) | auto_charge، با لینک پرداخت بهعنوان جایگزین |
| پلن سالانه یا فاکتورهای مبلغ بالا | send_payment_link: یک پرداخت آگاهانه در هر دوره |
| مشتریهایی که با BTC پرداخت میکنند | send_payment_link (پرداخت خودکار روی بیتکوین نیست) |
| مشتریهایی که نمیخواهند تأیید بدهند | send_payment_link |
بسیاری از تیمها هر دو را ارائه میدهند و انتخاب را در صفحه میزبانیشده به مشتری میسپارند.
نکاتی برای کم کردن برداشتهای ناموفق
- سقفی متناسب با پلن تأیید بگیرید.
مبلغ × تعداد دورهبخواهید (مثلاً ۱۲ ماه)، نه allowance نامحدود. عدد روشن اعتماد بیشتری میسازد. - شبکه ارزان انتخاب کنید. Base، Arbitrum، Optimism، Polygon و سولانا کارمزد هر برداشت را پایین نگه میدارند.
- پیش از تاریخ صورتحساب یادآوری کنید. از
subscription.trial_will_endو یادآوری خودتان پیش از هر دوره استفاده کنید تا مشتری کیف پولش را شارژ کند. - برنامه را نشان دهید. در صفحه اشتراک، مبلغ، دوره، تاریخ اولین برداشت و روش لغو را نشان دهید.
- جایگزین داشته باشید. وقتی برداشت ناموفق شد، لینک پرداخت همان دوره را بفرستید تا مشتری بتواند پرداخت کند.
پرسشهای متداول
میشود با ارز دیجیتال پرداخت دورهای راه انداخت؟
بله. یا مشتری در هر دوره یک لینک پرداخت جدید میپردازد، یا یک بار allowance سقفدار تأیید میکند و فروشنده هر دوره برداشت میکند. OrcaRail از هر دو پشتیبانی میکند.
پرداخت خودکار برای مشتری امن است؟
مشتری یک سقف ثابت را روی زنجیره تأیید میکند، کلیدهای خصوصیاش را نگه میدارد و هر زمان بخواهد میتواند تأیید را از کیف پولش لغو کند. spender نمیتواند بیشتر از مبلغ تأییدشده برداشت کند.
کدام توکنها و شبکهها از پرداخت خودکار کریپتو پشتیبانی میکنند؟
توکنهای استاندارد allowance ERC-20 روی زنجیرههای EVM (USDC، تتر و غیره) و توکنهای SPL روی سولانا. بیتکوین allowance توکن ندارد، پس اشتراکهای بیتکوینی با لینک پرداخت انجام میشوند.
اگر کیف پول مشتری در تاریخ صورتحساب خالی باشد چه میشود؟
برداشت ناموفق میشود، subscription.payment_link.payment_failed دریافت میکنید و اشتراک ممکن است به past_due برود. مشتری میتواند آن دوره را با لینک پرداخت بپردازد یا کیف پولش را شارژ کند.
اشتراک کریپتو با OrcaRail چقدر هزینه دارد؟
کارمزد نسخه میزبانیشده پس از ۱۰۰۰ تراکنش رایگان اول، ۰٫۵٪ برای هر تراکنش تکمیلشده است و نسخه خودمیزبان کارمزدی از OrcaRail ندارد. قیمتها را ببینید.
