Как реализовать регулярные платежи в Django с помощью QuickBooks Payments (card-on-file vs vault token)?

Я создаю систему подписки на основе Django и интегрирую ее с платежами QuickBooks.

Моя цель:
  • Разрешите клиенту ввести данные своей кредитной/дебетовой карты один раз.
  • Храните свою карту в надежном месте.
  • Начисляйте их автоматически каждый месяц (например, подписку на Stripe).
Что я пробовал до сих пор:
  • Я могу успешно создать токен хранилища, используя API платежей QuickBooks, когда клиент вводит свою карту.
  • Я могу произвести разовую оплату с помощью этого токена.
Проблема:

Токен хранилища, по-видимому, является одноразовым (его нельзя использовать повторно для будущих платежей).
Я хочу знать, как правильно хранить карточку в файле для повторного выставления счетов.
Нужно ли мне использовать клиентский API QuickBooks для постоянного подключения карты?
Или есть способ повторно использовать токен хранилища для оплаты текущих платежей?

Django 5.2
Celery для планирования ежемесячных задач
QuickBooks Payments API (sandbox)

В данный момент я храню: qb_customer_id, vault_token, last4, срок годностиyour text

def charge_recurring_payment(access_token, realm_id, user, amount):
    url = "https://sandbox.api.intuit.com/quickbooks/v4/payments/charges"
    headers = {
        "Authorization": f"Bearer {access_token}",
        "Accept": "application/json",
        "Content-Type": "application/json"
    }
    payload = {
        "amount": str(amount),
        "currency": "USD",
        "cardOnFile": {
            "value": user.qb_vault_token,  # <--- works once, fails later
            "type": "TOKEN"
        }
    }
    resp = requests.post(url, json=payload, headers=headers)
    return resp.json()

Как мне правильно сохранить карту клиента в QuickBooks, чтобы я мог повторно использовать ее для оплаты ежемесячных платежей?
Должен ли я хранить идентификатор клиента + идентификатор карты вместо токена хранилища?
Существует ли официальный шаблон платежей QuickBooks для регулярного выставления счетов в Django/Python?

Согласно их документации , у токена есть определенный срок службы.
проверьте, когда вы снова создаете токен заново, при списании средств
https://developer.intuit.com/app/developer/qbpayments/docs/workflows/create-tokens#:~:text=Tokens%20have%20a%2015%20min%20lifespan

Вернуться на верх