Ежемесячные тарифные планы PayPal для первого дня месяца и ежемесячный ежемесячный платеж - django python

Axil спросил: 28 марта 2018 в 01:38 в: python

Я использую Django paypalrestsdk для PayPalhttps://github.com/paypal/PayPal-Python-SDK

И я хотел бы настроить ежемесячный план подписки. Каждое начало месяца, покупатель будет взиматься 100 долларов США.

Это мой код плана фактурирования, который я сделал:

billing_plan = paypalrestsdk.BillingPlan({
    "name": "Monthly Billing Plan",
    "description": "Monthly Plan",
    "merchant_preferences": {
        "auto_bill_amount": "yes",
        "cancel_url": "http://localhost:8000/payment_billing_agreement_cancel",
        "initial_fail_amount_action": "continue",
        "max_fail_attempts": "0",
        "return_url": "http://localhost:8000/payment_billing_agreement_execute",
        "setup_fee": {
            "currency": "USD",
            "value": "100"
        }
    },
    "payment_definitions": [
        {
            "amount": {
                "currency": "USD",
                "value": "100"
            },
            "cycles": "0",
            "frequency": "MONTH",
            "frequency_interval": "1",
            "name": "Monthly Payment",
            "type": "REGULAR"
        }
    ],
    "type": "INFINITE"
})

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

Я вижу это в песочнице покупателя: предоплаченный платеж USD100. Что это значит, он уже заплатил 100 долларов США или был предварительно одобрен и начислен на в последний день месяца?

Исходя из этого, кажется, что он заряжен сразу. то есть он должен показать USD200 право? (настройка + ежемесячно, но показывается только 100 долларов США) https://developer.paypal.com/docs/classic/paypal-payments-standard/integration-guide/subscription_billing_cycles/

Я использовал этот поток, поэтому far:

create billing plan
activate billing plan
create billing agreement 
execute billing agreement

(это правильно? оно показывает предварительно одобренное, но действительно ли оно заряжено, если не нужно делать другие шаги, чтобы правильно его заряжать)

Чтобы уточнить, главный вопрос заключается в том, как вы настраиваете ежемесячную оплату с помощью PayPal (и устанавливать цикл зарядки, будь то начало месяца или конец)? (в этом примере его использование django python)

ОБНОВЛЕНИЕ:

По рекомендации @ john-moutafis, у меня теперь установлена ​​настройка 100 долларов США, а повторяющаяся дата начала устанавливается 1 месяц позже за USD111

    billing_agreement = paypalrestsdk.BillingAgreement({
        "name": "Monthly Billing Agreement",
        "description": "Monthly Payment Agreement",
        "start_date": arrow.utcnow().shift(months=+1).datetime.strftime('%Y-%m-%dT%H:%M:%SZ'),
        "plan": {
            "id": billing_plan.id
        },
        "payer": {
            "payment_method": "paypal"
        }
    })

Вот скриншоты в PayPal, почему нет информации о количестве и почему она предварительно одобрена без повторяющейся информации? https://imgur.com/a/Sp7JdVC


1 ответ

John Moutafis ответил: 16 апреля 2018 в 06:15

Paypal будет автоматически пытаться сохранять дату выставления счета одинаковой для каждого месяца (где это применимо, как указано в связанном ресурсе).

Вы можете указать дату начала соглашения о выставлении счета, как указано в этом Например, указав поле start_date.
Здесь я использую модуль стрелки, чтобы удобно рассчитать первый день следующего месяца:

import arrowbilling_plan = paypalrestsdk.BillingPlan({
    "name": "Monthly Billing Plan",
    "description": "Monthly Plan",
    "start_date": arrow.utcnow().shift(months=+1).replace(day=1).isoformat(),
    "merchant_preferences": {
        ...
        "setup_fee": {
            "currency": "USD",
            "value": "100"
        }
    }
    ...
})

Первоначальная плата за подписку должна обрабатываться setup_fee поле!


РЕДАКТИРОВАТЬ после обновления вопроса:

В поле merchant_preferences вашего плана вы настраиваете to auto_bill_amount.
Взглянув на документацию по yes, мы увидим, что:

merchant_preferences enum

Указывает, будет ли PayPal автоматически выставлять непогашенный остаток в следующем цикле выставления счетов. Непогашенный остаток представляет собой общую сумму любых ранее не выполненных запланированных платежей. Значение:

auto_bill_amount. PayPal автоматически не выставляет счет клиенту за непогашенный остаток >.
NO. PayPal автоматически выставляет счет клиенту за непогашенный остаток.

Возможные значения: YES, YES.

По умолчанию: NO.

Axil ответил: 01 апреля 2018 в 08:52
Спасибо! проверим это
John Moutafis ответил: 02 апреля 2018 в 01:31
SO @Axil, как это выглядело как решение?
Axil ответил: 05 апреля 2018 в 09:59
есть некоторые опечатки:"start_date": arrow.utcnow (). shift (месяцы = + 1) .replace (день = 1),
Axil ответил: 05 апреля 2018 в 09:59
я получаю эту ошибку: TypeError: Объект типа 'Arrow' не сериализуем в формате JSON, необходимо преобразовать объект стрелки в дату ISO
Axil ответил: 05 апреля 2018 в 10:05
исправить с помощью"start_date": arrow.utcnow (). shift (месяцы = + 1) .replace (день = 1) .isoformat (),