Reputation: 67
I'm working on a website and users have the possibility to buy a premium subscription. I use React for Front and Flask for Back. I already succeeded to create subscription button by using react-paypal-button-v2. https://www.npmjs.com/package/react-paypal-button-v2
<PayPalButton
options={{
vault: true,
clientId: "ID OF SELLOR",
currency: "EUR"
}}
createSubscription={(data, actions) => {
return actions.subscription.create({
plan_id: 'ID OF MY PLAN'
});
}}
onApprove={(data, actions) => {
return actions.subscription.get().then(function(details) {
return axios.post('/api/payment', {
user_id: localStorage.getItem('id');,
order_id: data.orderID,
subscription_id: data.subscriptionID
})
.then(function (){
document.location.href="/";
console.log(data);
})
});
}}
/>
The called api changes the premium column to true in my db. Now I want to detect if subscription is canceled or expired, turn back the premium column of the user to false.
NB: I use postgreSQL
@payment.route('', methods=['POST'])
def paypal_payement():
if request.method == 'POST':
req = request.get_json(force=True)
today = datetime.now()
id_user = req.get('user_id')
id_order = req.get('order_id')
id_subscription = req.get('subscription_id')
user = models.Utilisateur.query.filter_by(id=id_user).first()
order = models.Commandes(id_order, id_user, id_subscription, today)
db.session.add(order)
user.premium = True
db.session.commit()
return 'SUCCESS'
Do you have a solution for me ? thx 😁
Upvotes: 0
Views: 315
Reputation: 30392
Create a webhook listener and register for the BILLING.SUBSCRIPTION.CANCELLED
event.
Upvotes: 1