stripe-payments条带支付入门


备注

本节概述了条带支付的内容,以及开发人员可能希望使用它的原因。

它还应该提到条带支付中的任何大型主题,并链接到相关主题。由于条带支付的文档是新的,您可能需要创建这些相关主题的初始版本。

嵌入式条纹支付模式

通过https://dashboard.stripe.com/register注册生产/沙盒帐户

将以下代码插入您想要结帐按钮的网页。

<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>
 

结果: 在此处输入图像描述

Python中的Hello World

如何从单个文件中使用wsgi运行条带的示例。

首先,请安装python stripe API,即使用pip:

pip install --user stripe
 

创建payment.py ,它在端口8000开箱即可创建WSGI Web服务器

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()
 

请注意:

  • 前端表单包含公钥
  • 后端计费部分包含密钥

运行脚本

python payment.py
 

使用浏览器导航到

http://localhost:8000/
 

单击“付款”按钮并输入信用卡号(4242424242424242)后,将使用令牌过帐表单。因此可以处理付款,最后将charge 对象打印到浏览器中,其中包含:

...
"paid": true, 
"description": "Hello World", 
"status": "succeeded"
 

资源和进一步阅读:

安装或设置

有关设置或安装条带付款的详细说明。

Stripe的API简介

Stripe的典型付款流程可分为两个步骤:

  1. 客户端,在您的前端(HTML + Javascript)代码中,您使用Stripe的预建Checkout表单或Elements表单字段收集客户的付款信息。这将返回您随后发送到服务器的令牌。

  2. 在服务器端,在您的后端代码中(使用PHP,Python,Ruby或您喜欢的任何服务器端编程语言),您可以在计费创建请求中使用令牌来实际为卡充电。

这个两步流程的重点是,您的服务器只能使用卡令牌,而不能使用原始卡信息。这意味着您永远无法访问卡号,这极大地减轻了PCI合规性的负担。

Stripe的文档非常广泛,包含许多示例和教程 - 请务必查看它!