Я работаю над веб-сайтом, и у пользователей есть возможность купить премиум-подписку. Я использую React для Front и Flask для Back. Мне уже удалось создать кнопку подписки с помощью response-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);
                                                     })
                                             });
                                         }}
                                     />

Вызываемый api изменяет столбец премиум-класса на true в моем db. Теперь я хочу определить, отменена ли подписка или истек срок ее действия, вернуть столбец премиум-класса пользователя в значение false.

NB: я использую 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'

У вас есть решение для меня? спасибо 😁

0
Mathis 9 Май 2021 в 18:55

1 ответ

Лучший ответ

Создайте прослушиватель веб-перехватчиков и зарегистрируйтесь для событие BILLING.SUBSCRIPTION.CANCELLED.

1
Preston PHX 9 Май 2021 в 22:49