Primeros pasos con los pagos en bandas
Introducción a la API de Stripe
Un flujo de pago típico con Stripe se puede dividir en dos pasos:
-
Del lado del cliente, en su código frontend (HTML + Javascript), usted recopila la información de pago del cliente utilizando el formulario Pago prediseñado de Stripe o los campos de formulario Elementos. Esto devolverá un token que luego enviará a su servidor.
-
Del lado del servidor, en su código backend (en PHP, Python, Ruby o cualquier lenguaje de programación del lado del servidor que prefiera), usa el token en una solicitud de creación de cargo para cargar realmente la tarjeta.
El objetivo de este flujo de 2 pasos es que su servidor solo funciona con fichas de tarjeta y nunca con información de tarjeta sin procesar. Esto significa que nunca tendrá acceso a los números de tarjeta, lo que alivia en gran medida la carga del cumplimiento de PCI.
La documentación de Stripe es bastante extensa e incluye muchos ejemplos y tutoriales. ¡Asegúrate de echarle un vistazo!
Hola Mundo en Python
Un ejemplo de cómo ejecutar stripe listo para usar con wsgi desde un solo archivo.
Al principio, instale la API de python stripe, es decir, con pip:
pip install --user stripe
Cree payment.py
que crea un servidor web WSGI en el puerto 8000 listo para usar
html = """
<html>
<body>
<p>%(output)s</p>
</body>
</html>
"""
form = """
<form action="" method="POST">
<script
src="https://checkout.stripe.com/checkout.js" class="stripe-button"
data-key="pk_test_6pRNASCoBOKtIshFeQd4XMUh"
data-amount="999"
data-name="Stripe.com"
data-description="Hello World"
data-locale="auto">
</script>
</form>
"""
def application(environ, start_response):
try:
request_body_size = int(environ.get('CONTENT_LENGTH', 0))
except (ValueError):
request_body_size = 0
request_body = environ['wsgi.input'].read(request_body_size)
post = parse_qs(request_body)
out = ''
if post:
print post
token = post.get('stripeToken', [''])[0]
token = escape(token)
if token:
import stripe
stripe.api_key = "sk_test_BQokikJOvBiI2HlWgH4olfQ2"
try:
charge = stripe.Charge.create(
amount="999",
currency="usd",
source=token,
description="Hello World",
)
out = '<pre>charge: %s</pre>' % (charge,)
except Exception as e:
print 'Exception %s' % (str(e),)
else:
out = 'missing in post: token'
else:
out = form
response_body = html % {
'output': out,
}
status = '200 OK'
response_headers = [('content-type', 'text/html;charset=utf-8')]
start_response(status, response_headers)
return [response_body]
from wsgiref.simple_server import make_server
from cgi import parse_qs, escape
httpd = make_server('', 8000, application)
httpd.serve_forever()
Tenga en cuenta:
- el formulario frontend contiene la clave pública
- la parte de cargo del backend contiene la clave secreta.
Ejecutar el script
python payment.py
Navega con tu navegador a
http://localhost:8000/
Después de hacer clic en el botón Pagar e ingresar el número de tarjeta de crédito (4242424242424242), el formulario se publica con el token. Entonces, el pago podría procesarse y, finalmente, el objeto “cargo” se imprimirá en el navegador, que contiene:
...
"paid": true,
"description": "Hello World",
"status": "succeeded"
Recursos y lecturas adicionales:
- Publicación de WSGI: http://wsgi.tutorial.codepoint.net/parsing-the-request-post
- Formulario de interfaz: https://stripe.com/docs/checkout/tutorial
- Cargo backend: https://stripe.com/docs/charges
Instalación o configuración
Instrucciones detalladas sobre cómo configurar o instalar los pagos de banda.
Modalidad de pago de banda integrada
Registre una cuenta de producción/sandbox en https://dashboard.stripe.com/register
Inserte el código a continuación en su página web donde desea tener un botón de pago.
<form action="/charge" method="POST">
<script
src="https://checkout.stripe.com/checkout.js" class="stripe-button"
data-key="pk_test_6pRNASCoBOKtIshFeQd4XMUh"
data-amount="2000"
data-name="Stripe.com"
data-description="2 widgets"
data-image="/img/documentation/checkout/marketplace.png"
data-locale="auto">
</script>
</form>