adrianalonso.es
web developer
La parte frontend es altamente customizable, pero Stripe proporciona una librería checkout.js que nos proporciona un modal para introducir nuestra tarjeta de crédito, la cual contiene todo tipo de validaciones. Además podemos Checkout (https://stripe.com/docs/checkout#integration-simple)
<form action="{{path('checkout_charge')}}" method="post">
<script class="stripe-button" data-allow-remember-me="false"
data-amount="990" data-currency="EUR" data-description="Description"
data-email="{{app.user.email}}" data-image="imagen.jpg" data-key=
"{{publisheableKey}}" data-label="Label" data-name="Nombre compañía"
data-panel-label="Subscripción" src=
"https://checkout.stripe.com/checkout.js">
</script>
</form>
Cuando el usuario rellena dicho formulario, Stripe automáticamente genera un token para dicho pago. A nivel interno para cada usuario de la aplicación almaceno el CustomerId que Stripe nos proporciona. Por ello es tan fácil como proporcionarle a Stripe el email y el token asociado para verificar si el primer cargo contra la plataforma ha podido realizarse. De esta manera si la transacción ha sido exitosa se asocia al usuario este customerId para futuras transacciones y en caso contrario, devolver una página donde informar al usuario del fracaso de la transacción.
public function chargeAction(Request $request)
{
$stripe=$this->get('stripe');
$token= $request->request->get('stripeToken');
$user = $this->get('security.context')->getToken()->getUser();
// get customer
if($user->getStripeCustomerId()== null){
$customer=$stripe->createStripeCustomer($user->getEmail(),$token);
if(!$customer)
return $this->render('EjemploBundle:Checkout:charge_ko.html.twig', array());
$user->setStripeCustomerId($customer->id);
}
//subscribe
$subscription=$stripe->subscribePlanCustomer($customer->id);
if(!$subscription)
return $this->render('EjemploBundle:Checkout:charge_ko.html.twig', array());
$user->setSubscriptionId($subscription->id);
$em->persist($user);
$em->flush();
return $this->render('EjemploBundle:Checkout:charge.html.twig', array(
'subscription' => $subscription,
));
}
Este código se apoya en un servicio el cual se comunica con stripe a través de dos tokens que nos proporciona la propia herramienta (secretkey y publisheable key) para verificar que eres tu el que realiza las transaccciones. Empleando la librería de php (https://github.com/stripe/stripe-php) es tan sencilla la coomunicación con la API como el código que veréis a continuación.
La gran ventaja que tiene esta herramienta es que tiene librerías para todo tipo de lenguajes además de integrarse con android y iphone. Puedes tener tu plataforma de pagos integrada en cualquiera de tus aplicaciones en cualquier lenguaje y plataforma. Aquí tenéis la url donde proporciona toda la información de estas librerías (https://stripe.com/docs/libraries)
http://adrianalonso.es/2014/08/stripe-pagos-online-desde-web-y-movil/