2015-10-24 6 views
6

मैं node.js में सदस्यता योजना बना रहा हूं, मैंने दस्तावेज़ को किसी सदस्य को सब्सक्राइब करने के बारे में दस्तावेज़ पढ़ा है, और यह सफल रहा।मैं पट्टी वेबहूक का उपयोग कर उपयोगकर्ता की सदस्यता तिथि कैसे अपडेट करूं?

स्ट्रिप के डॉक्टर ने कहा कि मुझे डेटाबेस में active_until फ़ील्ड स्टोर करना है। यह कहता है कि जब कुछ बदलाव वेबहूक का उपयोग करते हैं, तो मुझे पता है कि वेबहूक एक घटना की तरह है।

असली सवाल कर रहे हैं

1) कैसे मैं एक दोहराने बिल हर महीने active_until का उपयोग कर क्या करते हो? 2) मैं वेबहूक का उपयोग कैसे करूं, मैं वास्तव में समझ में नहीं आता।

यहां तक ​​कि कोड अभी तक है। वर उपयोगकर्ता = नए mongoose.Schema ({ ईमेल: स्ट्रिंग, पट्टी: { ग्राहक आईडी: स्ट्रिंग, योजना: स्ट्रिंग }

}); 

//payment route 
router.post('/billing/:plan_name', function(req, res, next) { 
    var plan = req.params.plan_name; 
    var stripeToken = req.body.stripeToken; 
    console.log(stripeToken); 

    if (!stripeToken) { 
    req.flash('errors', { msg: 'Please provide a valid card.' }); 
    return res.redirect('/awesome'); 
    } 

    User.findById({ _id: req.user._id}, function(err, user) { 
    if (err) return next(err); 

    stripe.customers.create({ 
     source: stripeToken, // obtained with Stripe.js 
     plan: plan, 
     email: user.email 
    }).then(function(customer) { 
     user.stripe.plan = customer.plan; 
     user.stripe.customerId = customer.id; 
     console.log(customer); 
     user.save(function(err) { 
     console.log("Success"); 
     if (err) return next(err); 
     return next(null); 
     }); 
    }).catch(function(err) { 
     // Deal with an error 
    }); 

    return res.redirect('/'); 

    }); 
}); 

मैं कैसे active_until timestamps और webhook घटना को लागू करते

उत्तर

1

आप अपनी योजना बनाने के लिए अपने उपयोगकर्ता द्वारा सदस्यता हर महीने बिल को दोहराने की जरूरत नहीं है। धारी यह तुम्हारे लिए क्या करेंगे। , धारी उसे चार्ज होगा तक दिए जा चुके अवधि में है।

प्रत्येक बार पट्टी एक ग्राहक को चार्ज करती है, यह एक वेबहूक उत्पन्न करेगी, यह आपके सर्वर पर कुछ निर्दिष्ट यूआरएल पर एक अनुरोध है। पट्टी अलग-अलग कारणों से अलग-अलग वेब्हू उत्पन्न कर सकती है।

उदाहरण के लिए जब ग्राहक सदस्यता द्वारा चार्ज किया जाता है, तो स्ट्रिप आपको भुगतान के बारे में जानकारी भेज देगा।

router.post('/billing/catch_paid_invoice', function(req, res) { 
    // Here you parse JSON data from Stripe 
}): 

मुझे अभी स्ट्रिप सेटिंग्स तक पहुंच नहीं है, लेकिन मैन्युअल रूप से वेबहुक के लिए यूआरएल सेट करना याद रखें। > आपका खाता नाम> खाता सेटिंग का चयन करें Webhooks

active_until सिर्फ़ एक रिमाइंडर है कि ग्राहक अभी भी सक्रिय है और अपने प्रणाली में सेवाओं का भुगतान किया है। Webhooks प्राप्त करते समय इसे अद्यतन करने की जरूरत है। स्ट्रिप दस्तावेज़ वास्तव में अच्छे हैं, इसलिए एक बार उनके माध्यम से जाएं। https://stripe.com/docs/guides/subscriptions

+1

आपके विस्तृत स्पष्टीकरण के लिए धन्यवाद, मैंने पहले से ही पट्टी वेबसाइट पर सभी कार्यक्रमों को जोड़ा है, लेकिन मैं वास्तव में उलझन में हूं, क्या मुझे वेब हुक के लिए router.post की आवश्यकता है? –

+0

और क्या यह संभव है यदि आप कोड जोड़ सकें कि मैं सक्रिय_until कैसे जोड़ूं? क्या यह टाइमस्टैम्प या बुलियन की आवश्यकता है? –

+0

और एक और बात मैं वेबहूक का परीक्षण कैसे करूं? –

1

active_until सिर्फ एक डेटाबेस स्तंभ टाइमस्टैम्प का प्रतिनिधित्व जब उपयोगकर्ता के खाते को समाप्त हो रहा स्टोर करने के लिए अपने उपयोगकर्ताओं को मेज पर बना सकते हैं का नाम है। कॉलम का नाम कोई फर्क नहीं पड़ता। आप जो भी नाम चाहते हैं उसका उपयोग कर सकते हैं।

आदेश अगर एक उपयोगकर्ता की सदस्यता वर्तमान है सत्यापित करने के लिए, धारी है कि आप इस तरह के तर्क का उपयोग का सुझाव दे रहा है:

If today's date <= user.active_until 
    allow them access 

Else 
    show them an account expired message 

webhook एक अनुरोध है कि धारी के सर्वर अपने सर्वर पर बनाने में बताने के लिए है कि कुछ है हो गई। इस मामले में, जिस कार्यक्रम में आप सबसे अधिक रुचि रखते हैं वह invoice.payment_succeeded है। आदि

if event type is "invoice.payment_succeeded" 
    then update user.active_until to be equal to today's date + 1 month 

तुम भी मामले में अन्य घटनाओं का जवाब चाहते हैं भुगतान असफल रहता है,:

आपका webhook इस तरह तर्क शामिल होंगे

संबंधित मुद्दे