मेरे पास एक रजिस्टर एंडपॉइंट है जहां मैं एक नया उपयोगकर्ता बनाता हूं और उन्हें एक सामान्य परीक्षण अवधि पर सेट करता हूं (बिना क्रेडिट कार्ड की जानकारी दर्ज करने की आवश्यकता होती है):

public function register(Request $request) {
    //... other not important things for this

    $user = new User([
        'name' => $request->get('name'),
        'email' => $request->get('email'),
        // other fields not important...
        'trial_ends_at' => now()->addDays(1),
    ]);

    $user->createAsStripeCustomer(); // not sure if needed
    $user->save();
    return response()->json($user, 201);
}

डेटाबेस में मैं देख सकता हूं कि मुझे निम्न फ़ील्ड और मान के साथ बनाया गया उपयोगकर्ता मिलता है: trial_ends_at: 2020-09-21 05:20:47। साथ ही, "ग्राहकों" के अंतर्गत मैं नया पंजीकृत उपयोगकर्ता ईमेल देख सकता हूं:

enter image description here

हालाँकि, स्ट्राइप डैशबोर्ड में, यह कहता है कि शून्य नए परीक्षण हैं:

enter image description here

मेरे पास एक customer.subscription.updated वेबहुक भी है जो तब नहीं चल रहा है जब मैं इसकी अपेक्षा कर रहा हूं (जब परीक्षण समाप्त हो जाता है), इसलिए मैं सोच रहा हूं कि जो कुछ भी स्ट्राइप को एक नए परीक्षण का पता नहीं लगा रहा है वह भी वेबहुक का कारण बनता है आग लगाने के लिए नहीं।

स्ट्राइप नए परीक्षण के बारे में "पिक अप"/जानता क्यों नहीं है?

चीजों के Laravel पक्ष पर उपयोगकर्ता एक परीक्षण पर प्रतीत होता है ($user->onTrial() सत्य लौटाता है), लेकिन स्ट्राइप डैशबोर्ड पर वही उपयोगकर्ता परीक्षण पर नहीं दिखता है (कोई नया परीक्षण नहीं दिखाता है, ऊपर स्क्रीनशॉट देखें) .

1
Chris 20 सितंबर 2020, 18:56

1 उत्तर

सबसे बढ़िया उत्तर

स्ट्राइप में "सामान्य परीक्षण" की अवधारणा नहीं है (परीक्षण एक विशिष्ट सदस्यता योजना से जुड़े नहीं हैं), केवल लारवेल कैशियर के पास इसकी अवधारणा है (trial_ends_at फ़ील्ड का उपयोग करके)।

एक सामान्य परीक्षण के बजाय मैं एक योजना की सदस्यता बनाता हूं, जिसमें भुगतान विधि के लिए null पास होता है, और इसमें trial_period_days विकल्प भी शामिल होता है। यह हमें उस उपयोगकर्ता के लिए फ़ाइल पर पहले भुगतान विधि के बिना एक परीक्षण बनाने की अनुमति देता है।

ऐसा करने के लिए कोड यहां दिया गया है:

$trialDays = 30;
$planId = "<your stripe price id>";
$user->createAsStripeCustomer();
$user->newSubscription('<name of subscription>', $planId)
    ->create(null, [
        'email' => $user->email
    ], ['trial_period_days' => $trialDays]);

साथ ही उपयोगकर्ता बनाते समय, trial_ends_at फ़ील्ड को शामिल करना याद रखें ताकि हमारे डीबी में हमारे पास स्ट्राइप के साथ मेल खाता हो:

$trialEndsAt = now()->addDays($trialDays);
$user = new User([
    //...
    'trial_ends_at' => $trialEndsAt
]);
$user->save();

उपयोगकर्ता अब स्ट्राइप डैशबोर्ड में परीक्षण अवधि पर होगा, और $user->onTrial() का उपयोग करना सही होगा क्योंकि trial_ends_at फ़ील्ड में डेटाटाइम वर्तमान डेटाटाइम से अधिक है।

3
ChristianF 23 सितंबर 2020, 19:49