网站集成
本教程的源代码托管在github上。
您可以体验我们的Demo。
这是一个简陋的电商网站,只有两个商品,但有丰富的支付渠道选择。
#
添加商品到购物车单击 add cart
,将相关的商品添加到购物车中,可以添加多件。
#
提交订单单击 Checkout
,将调用支付网关API并从客户处收集付款信息。
#
通过 webhook 获取支付结果一旦客户完成了付款,支付状态将通过 webhook 返回。
#
目录#
准备Python 3.7
- 其他的Python3版本也可以,但是Python包版本可能会导致一些混淆,可能需要做一些小的更改
Ksher 沙箱账号
- 申请沙箱账号,请联系 support@ksher.com
API_URL
- 除了沙箱账号外,您还将收到一个API_URL:s[指定名称].vip.ksher.net
API_TOKEN
- 使用给定的沙箱账号登录到API_URL并获得令牌。请参见 如何获取API令牌
#
安装在本节中,我们将安装所有的依赖并准备我们的环境。
#
步骤1: 克隆仓库#
步骤2: 进入到克隆的源代码文件夹#
步骤3:创建虚拟环境并激活注意:如果你安装了多个Python环境,必须指定一个环境
#
步骤4:安装全部的依赖#
配置在我们可以运行之前,有一些参数需要进行配置。在这个演示中,我们使用了环境变量。这是一种防止将密钥暴露到源代码中并被他人观察的好方法,特别是在github中托管的开源软件。
我们已经为您提供了该模板文件:
您的 .env 文件现在应该如下所示:
关于一些配置参数的说明
FLASK_SECRET_KEY
- 随机字符串将用作
Flask
程序的密钥KSHER_API_BASE
- 请求中指定的 Ksher API_URL
KSHER_API_TOKEN
- 请求中指定的 Ksher API_TOKEN
SERVER_NAME
- 此
Flask
程序的服务器URL,用于存储缓存- 在
heroku
或生产部署中,这将与STROE_BASE_URL相匹配STORE_BASE_URL
- 此
Flask
程序的服务器URL- 在
heroku
或生产部署中,这将与SERVER_NAME相匹配。当在localhost
运行时,方便webhook
测试,我们会把它设置为ngrok
#
配置对象这里指定的配置参数将会加载到配置对象,之后将被加载到 Flask
应用的配置中。
#
运行演示程序在本节中,我们将向您展示如何在本地机器上运行此演示程序。我们还为您提供了如何在 Heroku
上运行演示程序。
在完成前面的所有部分(安装、配置)之后,现在是时候运行演示了。
要运行,只需执行以下命令
程序启动运行并监听 5000
端口,指定的服务是 App
。
#
系统概览系统概览可以在程序工厂中看到。
在app.py文件中,它位于此演示程序的根目录中。
系统分为3个模块(或3个微服务):
Store
- 管理店铺并添加商品到购物车
Checkout
- 从购物车中创建订单,并重定向用户到 Khser 支付网关上付款,并在支付完成后返回
Webhook
- 处理支付完成后从 Ksher 支付网关发送回的
webhook
通知
#
应用程序如何使用Ksher支付网关进行支付用户在订单提交页面中点击 check out
后,将执行以下方法向 Ksher 支付网关发出支付请求。
对以上代码的一些说明:
#
导入支付对象首先需要从 Ksher payment python sdk 导入支付对象
在这个演示程序中,我们已经将sdk放入根目录中。
在未来版本中,可以通过pip
的方式安装sdk
#
初始化支付对象#
创建订单我们从订单确认页和购物车中获取到必要的全部数据,并据此创建订单。
order_id
不一定要使用这种方式创建,你可以使用自己的方法生成order_id
,同时要确保order_id
的唯一性。
#
引导用户去支付如果订单创建成功。(Ksher 会返回 200
)
我们就可以使用响应回来的redirect_url
参数引导用户去Ksher支付网关页面。
#
应用程序如何知道支付已经完成当用户完成付款时,Ksher 将会根据创建订单时指定的redirect_url
返回应用程序。
redirect_url
的实现如下
根据重定向URL的配置,Ksher 会向webhook
发送相关通知,参考文档。