Stripe: ¿Cómo configurar pagos recurrentes sin plan?

3 minutos de lectura

Primera vez que trabajo con Stripe API. Implementándolo en WordPress usando PHP y JS. Trabajando en un formulario de donación. El donante debe poder elegir una cantidad sugerida (botones de opción: 25, 50, 75, 100) o pagar como desee (campo de texto después de seleccionar ‘otro’). Pude hacer que esto funcionara.

Hay una casilla de verificación para configurar el monto como un pago recurrente. Creé planes de pago recurrentes para las opciones fijas como 25, 50, 100, etc.

¿Cómo configuro un pago recurrente si el donante elige un monto personalizado? No se puede encontrar la API relevante. Por favor ayuda.

Otro enfoque que sugiere Stripe es configurar un plan con una cantidad recurrente de $ 1 (o $ 0.01 para una mayor flexibilidad) y luego variar la cantidad según sea necesario.

Por ejemplo, con el enfoque del plan de $0,01, si quisiera cobrar 12,50/mes, podría ajustar la cantidad de la siguiente manera:

$customer->subscriptions->create(array("plan" => "basic", "quantity" => "1250"));

Soporte de rayas

  • Oh, vaya. Esta es una idea loca. Nunca lo pensaría. Así que esto asegura que no necesito hacer planes personalizados para cada cantidad miscelánea. ¡Interesante!

    – elmonjedigital

    6 de enero de 2015 a las 2:33

  • ¡Una solución tan desagradable, pero gracias por compartir esto! El parámetro ‘plan’ para suscripciones debe ser opcional.

    – WooDzu

    21 de marzo de 2018 a las 13:35

avatar de usuario
nevio

Primero, necesitarás crear un nuevo cliente.

Al enviar, puede usar la cantidad personalizada para crear un nuevo plan:

$current_time = time();
$plan_name = strval( $current_time );

Stripe_Plan::create(array(
        "amount" => $_POST['custom-amount'],
        "interval" => "month",
        "name" => "Some Plan Name " . $_POST['customer-name'],
        "currency" => "usd",
        "id" => $plan_name
    )
);

Tenga en cuenta que el 'id' necesita ser único. Puede usar el nombre del cliente, una marca de tiempo o algún otro método aleatorio para asegurarse de que siempre sea así.

Entonces solo crear la suscripción en el cliente recién agregado:

$customer = Stripe_Customer::retrieve($customer_just_created);
$customer->subscriptions->create(array("plan" => $plan_name));

Probablemente podrá omitir la primera línea anterior, ya que debería tener una variable de cliente asignada desde que se creó realmente el cliente.

  • Mencionaste que la identificación debe ser única … ¿por qué no reflejas eso en tu código? Simplemente agregue el nombre del cliente como lo hizo con el nombre del plan

    – Factura

    7 de noviembre de 2014 a las 15:13

  • No hay garantía de que el nombre del cliente sea único… Pero claro, agregaré algo.

    – rnevio

    7 de noviembre de 2014 a las 15:14

  • Eso es verdad. time() es probablemente el mejor enfoque antes de consultar una base de datos. No uso stripe, así que no sé, pero es la identificación a la que pasas. subscriptions->create()? Si es así, debe almacenar la variable y usarla allí también.

    – Factura

    7 de noviembre de 2014 a las 15:19

  • Editado para eso mientras estabas escribiendo el comentario. 😉

    – rnevio

    7 de noviembre de 2014 a las 15:21

  • Obtuviste el +1;) Es una pena que el OP parezca haber desertado. ¡Espero que esta respuesta ayude a otros!

    – Factura

    8 de noviembre de 2014 a las 0:20

Esto es de baja tecnología, pero lo más fácil que encontré fue usar la menor cantidad posible de la API de Stripe. En lugar de crear planes de suscripción y productos y cosas por el estilo, simplemente:

  • Crear un cliente de banda.
  • Cárgalos con un trabajo cron.

Si ya sabe cómo cobrarle a alguien, solo tiene que descubrir cómo crear el cliente, y luego el resto está listo.

Esto significa que cambia parte de la inteligencia de Stripe a nuestra propia infraestructura, pero en realidad encontré esto más fácil de pensar/mantener que pensar en todos los documentos y características de la API de Stripe.

  • Pienso lo mismo con usted, la automatización recurrente de Stripe lo hace complejo para las empresas que requieren cargos personalizados o períodos de suscripción personalizados

    – laltín

    21 de diciembre de 2018 a las 11:19

¿Ha sido útil esta solución?