Configuración del plan de suscripción mensual de PayPal para el primer día del mes y para realizar pagos mensuales recurrentes-Django Python
(1)
Estoy usando Django paypalrestsdk para PayPal https://github.com/paypal/PayPal-Python-SDK
Y me gustaría configurar un plan de suscripción mensual. Cada comienzo del mes, se cobrará al comprador USD100.
Este es el código de mi plan de facturación que he hecho:
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"
})
¿No me queda claro si se está cargando el primer día del mes o el último día del mes? ¿Debo tener la configuración para que se cargue de inmediato? Mi intención es que la carga se realice el primer día del mes.
Estoy viendo esto en la caja de arena del comprador: Preaprobado pago USD100 ¿Qué significa esto, se le cobra ya USD100 o se preaprobó y cobró el último día del mes?
Basado en esto, parece que está cargado de inmediato. lo que significa que debería mostrar USD200 ¿verdad? (configuración + mensual, pero muestra solo USD100) https://developer.paypal.com/docs/classic/paypal-payments-standard/integration-guide/subscription_billing_cycles/
He usado este flujo hasta ahora:
create billing plan
activate billing plan
create billing agreement
execute billing agreement
(¿es correcto? se muestra con aprobación previa, pero está realmente cargado, si no es así, ¿qué otros pasos se deben tomar para cargarlo correctamente?)
Para aclarar, la pregunta principal es ¿cómo configura la facturación mensual con PayPal (y para establecer el ciclo de carga, ya sea al principio del mes o al final)? (en este ejemplo, su uso de Django Python)
ACTUALIZAR:
En una recomendación @ john-moutafis, ahora tenía la configuración de USD100, y la fecha de inicio recurrente se establece 1 mes más tarde para 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"
}
})
Aquí están las capturas de pantalla de PayPal, ¿por qué no hay información sobre la cantidad y por qué se preaprobó sin información recurrente? https://imgur.com/a/Sp7JdVC
Paypal intentará automáticamente mantener la fecha de facturación igual a cada mes (cuando corresponda, como se indica en el recurso vinculado ).
Puede indicar la fecha de inicio de un acuerdo de facturación como se indica en este ejemplo , especificando un campo de fecha de inicio.
Aquí utilizo el módulo de arrow , para calcular convenientemente el primer día del próximo mes:
import arrow
billing_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"
}
}
...
})
La cuota de suscripción inicial debe ser manejada por el campo setup_fee
!
EDITAR después de la actualización de la pregunta:
En el campo merchant_preferences
de su plan, está configurando auto_bill_amount
en yes
.
Al echar un vistazo a la documentación en merchant_preferences
podemos ver que:
auto_bill_amount
enumIndica si PayPal factura automáticamente el saldo pendiente en el próximo ciclo de facturación. El saldo pendiente es el monto total de cualquier pago programado fallido anteriormente. El valor es:
NO
PayPal no factura automáticamente al cliente el saldo pendiente.
YES
PayPal factura automáticamente al cliente el saldo pendiente.Valores posibles:
YES
,NO
.Predeterminado:
NO
.