我在使用 Python 为 Flask 设置计费周期时遇到问题

Posted

技术标签:

【中文标题】我在使用 Python 为 Flask 设置计费周期时遇到问题【英文标题】:I am having trouble setting up billing cycles for Flask with Python 【发布时间】:2020-07-17 07:50:38 【问题描述】:

对于正常付款,我使用的是通过其余 api 设法进行的修复。我现在正在尝试创建计费周期,但无论我做什么都会出错。有人可以帮我在 Flask 上设置吗?

基本上我想做以下事情:

用户点击立即加入按钮,他们会看到一个页面(已经完成) 在那个页面上,我通常会有 2 个 PayPal 按钮 据我所知,使用订阅/计划 API 是不可能的。我怎么能那样做。 我希望用户单击 JS 中的按钮,触发对我的服务器的请求,处理付款,在数据库上注册用户,然后刷新页面,以便他们可以登录仪表板。如果这是一次性付款,我会这样做。如何通过计划做到这一点。

这是我目前所写的:

@app.route('/payment')
def payment():
    redirect(create_billing_agreement())

# HELPERS
def create_billing_agreement():
    billing_agreement = BillingAgreement(
        "name": 'Stocked Lab Subscription Agreement',
        'description': "Agreement for Stocked Lab Subscription Plan",
        'start_date': datetime.datetime.now().replace(microsecond=0).isoformat(),
        "plan": 'id': create_billing_plan())
    if billing_agreement.create():
        for link in billing_agreement.links:
            if link.method == "REDIRECT":
                redirect_url = str(link.href)
                return redirect_url
    else:
        print(billing_agreement.error)

def create_billing_plan():
    plan = BillingPlan(
        "name": 'Stocked Lab Subscription',
        'description': 'The base subscription for Stocked Lab',
        "type": 'INFINITE',
        "payment_definitions": [
            "name": "Standard Plan",
            "type": "REGULAR",
            "frequency_interval": "1",
            "frequency": "MONTH",
            "cycles": '0',
            "amount": 
                "currency": "USD",
                "value": "15"
            
        ],
        "merchant_preferences": 
            "auto_bill_amount": "yes",
            "cancel_url": "http://localhost:5000/cancel_subscription",
            "initial_fail_amount_action": "continue",
            "max_fail_attempts": "1",
            "return_url": "http://localhost:5000/",
            "currency": "USD",
            "value": '0'
        
    )
    if plan.create():
        print(f'Billing Plan [plan.id] created successfully')
        if plan.activate():
            plan = BillingPlan.find(plan.id)
            print(f"Billing Plan [plan.id] state changed to plan.state")
            return plan.id
        else:
            print(plan.error)
    else:
        print(plan.error)

感谢您的帮助!

【问题讨论】:

【参考方案1】:

此处解释了将订阅计划传递给 Smart Payment Buttons:https://developer.paypal.com/docs/subscriptions/integrate/#subscriptions-with-smart-payment-buttons

【讨论】:

以上是关于我在使用 Python 为 Flask 设置计费周期时遇到问题的主要内容,如果未能解决你的问题,请参考以下文章

一周掌握Flask框架学习笔记Flask中使用数据库(使用Flask-SQLAlchemy管理数据库)

条纹支付 - 如何暂停订阅(不取消)

在Flask中创建调查

按元数据标签对 GCP 计费数据进行排序

Python Flask,如何设置内容类型

Socket.io 与 flask-socketio python。如何设置套接字保持活动/超时