django订阅
如果您熟悉Stripe,就会知道他们在在线支付处理领域中有多大的球员。 他们的API不仅使程序员可以轻松地为诸如电子商务商店之类的网站创建一次性付款,而且还为每月订阅和路由付款提供了快速集成。 如果对Django和Stripe不熟悉,请查看我们最近的有关一次性付款集成的文章 。 否则,让我们开始使用Django和Stripe设置每月付款。
为什么要按月订阅?
每月订阅是在网络上常见的一种惯例,特别是在那些推广软件即服务(SAAS)作为其交付模型的公司中。 例如,诸如Hubspot(市场营销),Dropbox(数据存储)和Mailchimp(电子邮件市场营销)之类的SAAS公司都为其潜在客户提供了分层定价选项。 考虑到一旦计算出基本指标(客户获取成本,生命周期价值,客户流失率)就更容易预测收入,许多人认为此模型是有利的。 当然,可预测的收入可以创造稳定并产生更准确的财务预测。
Mailchimp定价页面

Django设定
首先设置虚拟环境并创建一个基本的Django项目。 我们将创建一个名为saas
的新虚拟环境。
注意:在Mac上,对所有命令使用python3
而不是py
C:\Users\Owner\Desktop\code>py -m venv saas
接下来,将目录更改为虚拟环境,安装Django,然后设置您的项目和应用程序。
C:\Users\Owner\Desktop\code>cd saas
C:\Users\Owner\Desktop\code\saas>Scripts\activate
(saas) C:\Users\Owner\Desktop\code\saas>pip install Django
(saas) C:\Users\Owner\Desktop\code\saas>django-admin startproject mysite
(saas) C:\Users\Owner\Desktop\code\saas\mysite>py manage.py startapp main
将主应用程序添加到mysite中的settings.py中。
settings.py
INSTALLED_APPS = ['main.apps.MainConfig' , #add this
'django.contrib.admin' ,
'django.contrib.auth' ,
'django.contrib.contenttypes' ,
'django.contrib.sessions' ,
'django.contrib.messages' ,
'django.contrib.staticfiles' ,
]
在主文件夹中创建urls.py ,并将其包含在mysite> urls.py中 。
mysite> urls.py
from django.contrib import admin
from django.urls import path, include #add include
urlpatterns = [
path( '' , include( 'main.urls' )), #add path
path( 'admin/' , admin.site.urls),
]
条纹整合
首先安装用于连接Stripe API的官方库。
pip install --upgrade stripe
接下来,创建一个Stripe帐户,并在其仪表板中创建产品。 尽管可以使用Stripe CLI来执行此操作,但由于我们已经在创建帐户页面上,因此我们将使用仪表板。 确保您处于测试模式,并且只能查看测试数据。 默认情况下,创建帐户后,您应该处于测试模式。 单击左侧导航菜单中的产品。 创建两个新产品:
- 将产品命名为高级计划
- 添加描述“高级功能的付费计划”
- 使用标准定价
- 输入$ 15.00并确保选择“重复”
- 保持结算期为“每月”
- 命名产品企业计划
- 添加描述“高级功能的企业计划”
- 使用标准定价
- 输入$ 30.00并确保选择“重复”
- 保持结算期为“每月”
-
现在,让我们在Stripe仪表板中同步产品。 虽然我们可以创建模型并存储相关产品信息(例如产品ID)作为模型字段,但更简单的解决方案是仅安装dj-stripe程序包并使用sync命令。 我们还需要在settings.py中添加我们的API密钥。 请注意,您的活动密钥应始终受到保护,并且永远不会在设置中列出。 有关保护环境变量的更多信息,请查看Python保护。
pip install dj-stripe
mysite / settings.py
STRIPE_TEST_PUBLIC_KEY ='pk_test_E52Nh0gTCRpJ7h4JhuEX7BIO006LVew6GG' STRIPE_TEST_SECRET_KEY = 'sk_test_L87kx7GQNbz9tajOluDts7da00mSbze3dW' STRIPE_LIVE_MODE = False # Change to True in production DJSTRIPE_WEBHOOK_SECRET = "whsec_xxx"
最后迁移数据库。 注意:如果数据库是sqlite,则迁移所需的时间比平时长。
py manage.py migrate
使用以下命令将产品自动添加到数据库:
py manage.py djstripe_sync_plans_from_stripe