stripe STRIPE_WEBHOOK_SECRET real webhook

 

আসল কারণ: stripe listen শুধু লোকাল ডেভেলপমেন্টের জন্য

এতদিন আমরা টেস্ট করেছি stripe listen --forward-to 127.0.0.1:8000/stripe/webhook দিয়ে — এটা শুধু তোমার লোকাল কম্পিউটারে কাজ করে। Live সাইটে (যেটা এখন public domain-এ আছে) এই কমান্ড কোনো কাজে আসবে না, কারণ Stripe-এর সার্ভার তোমার লোকাল মেশিনে পৌঁছাতে পারে না।

তাহলে আসলে কী হচ্ছে

  1. কাস্টমার সাবস্ক্রাইব করলে Stripe আসলেই টাকা কেটে নিচ্ছে (এটা ঠিকই হচ্ছে, তোমার Stripe Dashboard-এ গেলে দেখবে charge সফল হয়েছে)
  2. কিন্তু Stripe যখন আমাদের webhook-কে জানাতে চেষ্টা করে ("পেমেন্ট সফল হয়েছে, এখন Subscription-টা আমাদের ডাটাবেজে অ্যাক্টিভ করো"), সেই খবরটা কোথাও পৌঁছাচ্ছে না — কারণ live সার্ভারে কোনো real webhook endpoint সেট করা নেই
  3. ফলাফল: টাকা কাটা হয়ে যাচ্ছে ঠিকই, কিন্তু আমাদের অ্যাপ সেটা জানতে পারছে না — তাই সাবস্ক্রাইবার আনলক হচ্ছে না, 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.completed
    • invoice.payment_succeeded
    • customer.subscription.deleted
    • payment_intent.succeeded

ধাপ ৩: Signing secret কপি করো

Endpoint তৈরি হওয়ার পর, ওখানে একটা Signing secret (whsec_... দিয়ে শুরু) দেখাবে — এটা লোকাল টেস্টিং-এর secret থেকে আলাদা

ধাপ ৪: Live সার্ভারের .env আপডেট করো

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 সার্ভারে)

bash
php artisan config:clear

এরপর কী হবে

  • সাবস্ক্রাইব করলে সাথে সাথেই টাকা কাটবে ✅
  • আমাদের অ্যাপও সাথে সাথেই জানবে, সাবস্ক্রাইবার আনলক হবে ✅
  • পরের মাসে Stripe নিজেই সেই সেভ করা কার্ড দিয়ে আবার চার্জ করবে (এটা এমনিতেই কাজ করে, আলাদা কিছু করতে হবে না)
  • Cancel করলে Stripe-এ subscription বাতিল হয়ে যাবে, পরের মাসে আর চার্জ হবে না (এটাও আগে থেকেই কোডে বানানো আছে)

Webhook বসানোর পর একটা real (ছোট amount দিয়ে) টেস্ট সাবস্ক্রিপশন করে দেখো — এবার সাথে সাথে কাজ করার কথা। কোনো সমস্যা হলে জানিও।

Post a Comment

أحدث أقدم