这是在 Python 中使用 API 创建 Braintree 订阅的正确方法吗
Is this the right way to create a subscription for Braintree in Python using the API
为了澄清一些问题,我在这里问这个问题并分享我到目前为止学到的知识。
首先,如果你想要一个简单、易于开发的交易系统,Braintree 就是它。非常简单,并且与 Django 配合得很好。
但是,订阅方面的事情还不是很清楚。所以,我分享了一些代码以获得反馈并帮助简化。
首先..一些假设。
工作流程
使用API创建订阅的过程如下:
(请不要向我发送有关如何在控制面板中执行此操作的文档。可以在此处找到订阅工作流程的非常广泛的描述:https://developers.braintreepayments.com/guides/recurring-billing/create/python)
- 使用
braintree.ClientToken.generate()
创建一个客户端令牌
- 使用
braintree.Customer.create()
创建一个添加付款方式的客户
- 从
Customer.create()
响应中获取客户 ID
- 创建订阅
braintree.Subscription.create()
传递新客户和新客户的令牌 payment_method_token
如果你想知道,这是 Django,我正试图在一个视图中完成所有这些。
示例代码
custy_result = braintree.Customer.create({
"first_name": self.request.POST.get('first_name'),
"last_name": self.request.POST.get('last_name'),
"company": self.request.POST.get('company_name'),
"email": self.request.POST.get('office_email'),
"phone": self.request.POST.get('office_phone'),
'payment_method_nonce': 'fake-valid-nonce', # for testing
"credit_card": {
"billing_address": {
"street_address": self.request.POST.get('address'),
"locality": self.request.POST.get('city'),
"region": self.request.POST.get('state'),
"postal_code": self.request.POST.get('postal'),
}
}
})
if custy_result.is_success:
print("Customer Success!")
else:
for error in custy_result.errors.deep_errors:
print(error.code)
print(error.message)
# Create the subscription in braintree
sub_result = braintree.Subscription.create({
"payment_method_token": "the_token", # <-- How do I get this token?
"plan_id": "the_plan_id_in_braintree"
})
if sub_result.is_success:
print("Subscription Success!")
else:
for error in sub_result.errors.deep_errors:
print(error.code)
print(error.message)
问题?
我如何获得该令牌?什么是 "the_token"?它来自哪里?
我看不到它是如何创建的,也看不到它是从哪里提取的。我想做类似 custy_result.customer.token
的事情,但这显然是错误的。
作为参考,以下是我在文档中查看的内容:
您的 custy_result
应具有 payment_methods
属性:
result = braintree.Subscription.create({
"payment_method_token": custy_result.payment_methods[0].token,
"plan_id": "planID"
})
为了澄清一些问题,我在这里问这个问题并分享我到目前为止学到的知识。
首先,如果你想要一个简单、易于开发的交易系统,Braintree 就是它。非常简单,并且与 Django 配合得很好。
但是,订阅方面的事情还不是很清楚。所以,我分享了一些代码以获得反馈并帮助简化。
首先..一些假设。
工作流程
使用API创建订阅的过程如下:
(请不要向我发送有关如何在控制面板中执行此操作的文档。可以在此处找到订阅工作流程的非常广泛的描述:https://developers.braintreepayments.com/guides/recurring-billing/create/python)
- 使用
braintree.ClientToken.generate()
创建一个客户端令牌
- 使用
braintree.Customer.create()
创建一个添加付款方式的客户 - 从
Customer.create()
响应中获取客户 ID - 创建订阅
braintree.Subscription.create()
传递新客户和新客户的令牌payment_method_token
如果你想知道,这是 Django,我正试图在一个视图中完成所有这些。
示例代码
custy_result = braintree.Customer.create({
"first_name": self.request.POST.get('first_name'),
"last_name": self.request.POST.get('last_name'),
"company": self.request.POST.get('company_name'),
"email": self.request.POST.get('office_email'),
"phone": self.request.POST.get('office_phone'),
'payment_method_nonce': 'fake-valid-nonce', # for testing
"credit_card": {
"billing_address": {
"street_address": self.request.POST.get('address'),
"locality": self.request.POST.get('city'),
"region": self.request.POST.get('state'),
"postal_code": self.request.POST.get('postal'),
}
}
})
if custy_result.is_success:
print("Customer Success!")
else:
for error in custy_result.errors.deep_errors:
print(error.code)
print(error.message)
# Create the subscription in braintree
sub_result = braintree.Subscription.create({
"payment_method_token": "the_token", # <-- How do I get this token?
"plan_id": "the_plan_id_in_braintree"
})
if sub_result.is_success:
print("Subscription Success!")
else:
for error in sub_result.errors.deep_errors:
print(error.code)
print(error.message)
问题?
我如何获得该令牌?什么是 "the_token"?它来自哪里?
我看不到它是如何创建的,也看不到它是从哪里提取的。我想做类似 custy_result.customer.token
的事情,但这显然是错误的。
作为参考,以下是我在文档中查看的内容:
您的 custy_result
应具有 payment_methods
属性:
result = braintree.Subscription.create({
"payment_method_token": custy_result.payment_methods[0].token,
"plan_id": "planID"
})