微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

如何在 React & Flask 中检测过期的 PayPal 订阅?

如何解决如何在 React & Flask 中检测过期的 PayPal 订阅?

我正在开发一个网站,用户可以购买高级订阅。我使用 React 作为 Front,Flask 作为 Back。我已经使用 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);
                                                     })
                                             });
                                         }}
                                     />

调用的 api 将我的数据库中的 premium 列更改为 true。现在我想检测订阅是否被取消或过期,将用户的付费列转回 false。

注意:我使用 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'

你有解决方案吗?谢谢?

解决方法

创建一个 webhook listener 并注册 BILLING.SUBSCRIPTION.CANCELLED 事件。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。