У меня проблемы с настройкой циклов выставления счетов для Flask с Python - PullRequest
1 голос
/ 05 апреля 2020

Для обычных платежей я использую исправление, которое мне удалось сделать через остальные API. Я пытаюсь создать циклы выставления счетов сейчас, но что бы я ни делал, я получаю ошибки. Может кто-нибудь помочь мне настроить его на Flask?

В основном я хочу сделать следующее:

  • Пользователь нажимает кнопку JOIN NOW , и он отображается страница (уже сделали это)
  • На этой странице у меня обычно есть 2 кнопки PayPal
  • Используя API подписок / планов, я понимаю, что это не так возможный. Как я мог это сделать. Я хочу, чтобы пользователь нажимал кнопки в JS, инициировал запрос к моему серверу, обрабатывал платеж, регистрировал пользователя в БД и затем обновлял sh страницу, чтобы они могли войти в панель управления. Это то, что я бы сделал, если бы это был разовый платеж. Как я могу сделать это с планами.

Это то, что я написал до сих пор:

@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 Ответ

0 голосов
/ 05 апреля 2020

Передача плана подписки на кнопки Smart Payment описана здесь: https://developer.paypal.com/docs/subscriptions/integrate/#subscriptions -with-smart-payment-buttons

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...