আসল কারণ: stripe listen শুধু লোকাল ডেভেলপমেন্টের জন্য
এতদিন আমরা টেস্ট করেছি stripe listen --forward-to 127.0.0.1:8000/stripe/webhook দিয়ে — এটা শুধু তোমার লোকাল কম্পিউটারে কাজ করে। Live সাইটে (যেটা এখন public domain-এ আছে) এই কমান্ড কোনো কাজে আসবে না, কারণ Stripe-এর সার্ভার তোমার লোকাল মেশিনে পৌঁছাতে পারে না।
তাহলে আসলে কী হচ্ছে
- কাস্টমার সাবস্ক্রাইব করলে Stripe আসলেই টাকা কেটে নিচ্ছে (এটা ঠিকই হচ্ছে, তোমার Stripe Dashboard-এ গেলে দেখবে charge সফল হয়েছে)
- কিন্তু Stripe যখন আমাদের webhook-কে জানাতে চেষ্টা করে ("পেমেন্ট সফল হয়েছে, এখন Subscription-টা আমাদের ডাটাবেজে অ্যাক্টিভ করো"), সেই খবরটা কোথাও পৌঁছাচ্ছে না — কারণ live সার্ভারে কোনো real webhook endpoint সেট করা নেই
- ফলাফল: টাকা কাটা হয়ে যাচ্ছে ঠিকই, কিন্তু আমাদের অ্যাপ সেটা জানতে পারছে না — তাই সাবস্ক্রাইবার আনলক হচ্ছে না, subscriber count বাড়ছে না — এটাকেই "later কাটবে" মনে হচ্ছে
এটা bug না — শুধু Stripe Dashboard-এ একটা real webhook বসাতে হবে।
যা করতে হবে (Live সার্ভারের জন্য)
ধাপ ১: Stripe Dashboard-এ যাও
👉 https://dashboard.stripe.com/webhooks (নিশ্চিত করো Live mode-এ আছো, উপরে ডান দিকে টগল দেখে)
ধাপ ২: "Add endpoint" ক্লিক করো
- Endpoint URL:
https://তোমার-ডোমেইন.com/stripe/webhook - Events to send: এই ৪টা সিলেক্ট করো:
checkout.session.completedinvoice.payment_succeededcustomer.subscription.deletedpayment_intent.succeeded
ধাপ ৩: Signing secret কপি করো
Endpoint তৈরি হওয়ার পর, ওখানে একটা Signing secret (whsec_... দিয়ে শুরু) দেখাবে — এটা লোকাল টেস্টিং-এর secret থেকে আলাদা।
ধাপ ৪: Live সার্ভারের .env আপডেট করো
STRIPE_KEY=pk_live_xxxxxxxxxxxx
STRIPE_SECRET=sk_live_xxxxxxxxxxxx
STRIPE_WEBHOOK_SECRET=whsec_xxxxx (ধাপ ৩ থেকে পাওয়া নতুন secret)⚠️ নিশ্চিত করো live key ব্যবহার করছ (pk_live_..., sk_live_...), test key (pk_test_...) না।
ধাপ ৫: Config cache ক্লিয়ার করো (live সার্ভারে)
php artisan config:clearএরপর কী হবে
- সাবস্ক্রাইব করলে সাথে সাথেই টাকা কাটবে ✅
- আমাদের অ্যাপও সাথে সাথেই জানবে, সাবস্ক্রাইবার আনলক হবে ✅
- পরের মাসে Stripe নিজেই সেই সেভ করা কার্ড দিয়ে আবার চার্জ করবে (এটা এমনিতেই কাজ করে, আলাদা কিছু করতে হবে না)
- Cancel করলে Stripe-এ subscription বাতিল হয়ে যাবে, পরের মাসে আর চার্জ হবে না (এটাও আগে থেকেই কোডে বানানো আছে)
Webhook বসানোর পর একটা real (ছোট amount দিয়ে) টেস্ট সাবস্ক্রিপশন করে দেখো — এবার সাথে সাথে কাজ করার কথা। কোনো সমস্যা হলে জানিও।
إرسال تعليق