在GetPaid网站上支持多个支付处理器
项目描述
目的
此包提供通用的支付处理器注册方法。尽管代码本身不依赖Plone,但此文档也涵盖了Plone。
前言
GetPaid为两种不同类型的支付处理器提供支持
同步:您的Web服务器通过远程过程调用支付处理器服务器进行支付授权。您需要覆盖支付处理器结账-审查-支付向导步骤,以添加支付提交所需的自定义表单字段。默认的Products.PloneGetPaid.browser.checkout.CheckoutReviewAndPay提供了简单信用卡支付的字段。
异步:买家将离开您的网站进行支付,并在支付完成后返回您的网站。
安装
从源代码安装GetPaid。
使用以下开发分支。请注意,PayPal更改在源代码中
cd src rm -rf Products.PloneGetPaid rm -rf getpaid.nullpayment rm -rf getpaid.paypal svn co https://getpaid.googlecode.com/svn/Products.PloneGetPaid/branches/multiplepaymentprocessors Products.PloneGetPaid svn co https://getpaid.googlecode.com/svn/getpaid.nullpayment/branches/multiplepaymentprocessors getpaid.nullpayment svn co https://getpaid.googlecode.com/svn/getpaid.paypal/trunk getpaid.paypal
将getpaid.paymentprocessers添加到您的316.cfg eggs和develop-eggs部分。
管理
必须在站点设置 -> GetPaid -> 支付处理器设置中启用活动支付处理器。
您可以从同一屏幕管理单个支付处理器设置。
结账向导步骤
结账向导包含一个名为“结账-支付方式”的步骤,允许用户选择所需的支付方式。此步骤仅在网站有多个活动支付处理器时才可用。
创建自己的支付处理器
支付处理器指令
支付处理器使用ZCML指令进行注册
<!-- Register logic class dealing with the actual payment --> <adapter for="getpaid.core.interfaces.IStore" provides="getpaid.core.interfaces.IPaymentProcessor" factory=".null.NullPaymentAdapter" name="Testing Processor" /> <!-- Register payment processor specific user interface parts --> <paymentprocessors:registerProcessor name="Testing Processor" i18n_name="Test Payment" selection_view="null_payment_button" review_pay_view="null_payment_pay_page" thank_you_view="null_payment_thank_you_page" settings_view="null_payment_settings_page" />
建议将支付处理器指令放入一个单独的ZCML文件中,以保持向后兼容性。您可以使用zcml条件来实现
<include zcml:condition="installed getpaid.paymentprocessors" file="paymentprocessors.zcml" />
您还可以使用未安装指令来维护向后兼容性覆盖
<include zcml:condition="not-installed getpaid.paymentprocessors" package=".browser" file="overrides.zcml" />
paymentprocessors:registerProcessor属性
以下是关于registerProcessor属性的说明。
name:这必须匹配getpaid.core.interfaces.IPaymentProcessor适配器名称
- i18_name:这是支付处理器的用户可见名称。它可能出现在摘要和列表中。
建议在这里使用“支付方式”这个术语,以便更易于用户理解。
selection_view:这是一个 selection_view 模板应渲染一个 <td> 包含 <input type=”radio”> 单选按钮,具有可访问性 <label> <td> 包含支付方式名称/标志图像 <td> 包含描述。您可以覆盖此模板以包含类似“使用 PayPal 将额外收取 2 美元”的条款 例如,请参阅 getpaid.nullpayment/templates/button.pt review_pay_view:此视图在 checkout 向导中渲染支付处理器特定的“查看和支付”视图。该属性持有已注册的 <browser:page> 名称。此视图应该是 Products.PloneGetPaid.browser.checkout.CheckoutReviewAndPay 的子类。要更改查看和支付页面的模板,请覆盖类的模板属性。 通常,查看和支付页面有两个目的 因为 review_pay_view 基于 BaseCheckoutForm 类,您需要显式地子类化它并覆盖 template 类属性以使用您自己的模板。使用 <browser:page template=”…”> 不起作用。 settings_view:此视图渲染支付处理器的设置。它应该是 Products.PloneGetPaid.admin.PaymentProcessor 的子类。 thank_you_view:此应指向在支付处理器完成后的 <browser:page>。目前未使用。支付处理器 review_pay_view 本身负责在支付已授权后将用户引导回商店网站。
- Render a <form> which is submitted to the payment authorization server with a callback back to the shop server
- Do a HTTP redirect or Javascript redirect and take the user to the payment authorization server for an external review payment page
测试
单元测试可以在 Products.PloneGetPaid.tests.test_payment_processors 中找到。
建议查看这些说明,了解如何编程式地与 checkout 向导交互并自动测试自定义支付方式。
与 plone 无关的功能在 getpaid.paymentprocessors.tests 中进行测试。这主要涉及测试 ZCML 有效性。
开发者片段
支付处理器由 Entry 对象描述,该对象简单地保存由 IRegisterPaymentProcessorDirective 提供的信息。
要获取全局活动支付处理器,请调用
from Products.PloneGetPaid import payment processors = payment.getActivePaymentProcessors(context) # context = any Plone site object
在 checkout 向导中,您可以使用以下片段获取用户选择的支付方式。您可以在用户通过支付方式选择步骤之后这样做
payment_processor_name = wizard.getActivePaymentProcessor()
要获取实际的支付处理器实例,请按名称调用
from zope.component import getUtility, getAdapter from Products.CMFCore.utils import getToolByName import getpaid.core.interfaces site_root = getToolByName(self.context, "portal_url").getPortalObject() processor = component.getAdapter(site_root, getpaid.core.interfaces.IPaymentProcessor, payment_processor_name)
支付处理器注册表在 getpaid.paymentprocessors.registry.paymentProcessorRegistry 中可用。此注册表包含已注册支付处理器代码对象的数据。
激活的支付处理器名称存储在 portal_properties 作为 LinesField
# sequence of unicode strings, payment processor names portal_properties.payment_processor_properties.enabled_processors
在存储的订单中访问支付信息
info = order.payment_method # IPaymentMethodInformation instance info.payment_processor == u"Your Processor Name"
TODO
从所有地方移除 IGetPaidManagementOptions(self.context).processor_name 接口
移除“设置活动处理器”设置和站点设置中的支付选项页面
讨论是否使用 portal_properties 存储设置是否合理(据我所知,这是最佳实践,因为它们可以是纯文本,如果站点设置出现问题,则可以编辑)
处理用户选择没有支付处理器时的验证
记住在 checkout 向导中检查过的支付处理器
存在一个bug, wizard.data_manager.payment_method.payment_processor出于某种原因拉取了i18n_name。除非修复,否则支付处理器名称必须为i18n_name。
异步处理器应该如何/何时创建订单、切换工作流程状态和删除购物车?
变更日志
0.1
初始发布
项目详情
下载文件
下载适合您平台文件的文件。如果您不确定选择哪个,请了解更多关于安装包的信息。
源分发
getpaid.paymentprocessors-0.1.tar.gz的哈希值
算法 | 哈希摘要 | |
---|---|---|
SHA256 | c33786bc74b7193e4953d7f887d2a12f7dbe4583b7fd9a21bbf370a89529352c |
|
MD5 | a9712efdd87100152cd2e399dc7ed1df |
|
BLAKE2b-256 | d798b656da69bf1cf4b79955da23f7cfc1baf16b478fa81bf29744fda0925052 |