PSU Django应用程序的Cashnet集成

psu-cashnet的Python项目详细描述


WDT Django Cashnet插件

这个插件集成了一个PSU Django应用程序和Cashnet的结帐界面

设置

此插件需要安装psu-base plugin

  • 增加项目要求:
psu-base>=1.1.9
psu-cashnet>=1.0.1
  • 添加到已安装的应用
^{pr2}$
  • 配置URL
path('cashnet/', include(('psu_cashnet.urls', 'psu_cashnet'), namespace='cashnet')),
  • 安装需求并运行迁移
$ pip install -r requirements.txt
$ python manage.py migrate
  • 在中添加必需和可选设置设置.py在
# Merchant code is required, and must be configured on Cashnet Admin interface
CASHNET_MERCHANT_CODE = 'pdxtestmerchant'

# Optional list of addresses that will receive emails when errors occur on 
# potentially successful transactions
CASHNET_ADMIN_EMAILS = ['mjg@pdx.edu']

# During development, you can use a simulated Cashnet site to complete transactions 
# without a credit card. *** Do this in local_settings.py ***
CASHNET_SIMULATE_TRANSACTION = False

如何使用

安全角色

对编辑项目、查看交易和使用nonprod测试表单的访问都是通过“cashnet”角色授予的。 使用oit-es-manager的用户将获得相同的访问权限,而在非生产环境中,开发人员可以完全访问所有内容。在

定义目录项

遵循“管理”菜单中的“现金网项目”链接。 创建新项目的链接位于页面的顶部和底部。 可以通过单击铅笔方块图标或ID号链接编辑现有项目。
当前无法删除项目。如果创建了future delete函数,它不应该实际删除 过去购买的任何项目,因为这会影响以前的交易历史记录显示。在

查看过去的交易

遵循“管理”菜单中的“现金网交易”链接。 默认情况下,最新交易记录首先出现,但可以通过单击列标题进行排序。
事务状态:

  • 新客户从未被送到现金网
  • 已启动-客户已发送到Cashnet,但尚未返回应用程序
  • 处理-客户已返回应用程序,响应数据正在验证。
    如果此状态持续超过一秒,则可能表示发生了未处理的异常。
  • 错误-验证来自Cashnet的响应时出错。
    交易可能成功,也可能不成功,需要在横幅中进行审核。在
  • 记录了来自Cashnet的响应参数,但未验证客户身份验证
  • 失败-客户没有在Cashnet的网站上完成付款。在
  • 成功-客户在Cashnet网站完成付款

创建事务

使用cashnet_服务创建新交易:

    tx = cashnet_service.create_transaction(
        requested_items=requested_items,  # A list of CatalogItem or CatalogItem IDs
                                          # - To indicate quantity, include a tuple (item, quantity) in the list
        success_url=success_url,          # URL or Named URL to redirect successful payment to
        failure_url=failure_url,          # - Can also be a tuple ('named_url', arg) or ('named_url', arg1, arg2, ...)
        merchant_code=merchant_code,      # Merchant code as defined in Cashnet
        reference_class=reference_class,  # If payment is for an object represented by a class/model
        reference_id=reference_id,        # ID of given model (if applicable)
        secret_key=secret_key,            # Not used since Cashnet does not support their "secret key" feature
        term_code=term_code,              # Optional term code associated with transaction
    )

将客户发送到Cashnet站点

现金网_service.cashnet_重定向(tx)将客户发送到Cashnet的适当实例 (生产、培训或“假现金网网站”)

def whatever_view(request):

    # tx is the transaction created by cashnet_service
    return cashnet_service.cashnet_redirect(tx)

处理Cashnet的响应

配置Cashnet以将客户返回到<your app's URL>/cashnet/response

  • 成功的事务将被重定向到创建事务时定义的URL
  • 不成功的事务将被重定向到创建事务时定义的URL
  • 验证时遇到错误的事务将被定向到错误页

响应验证错误

在响应验证期间发生的任何错误都将记录在日志文件和AWS中 数据库,可通过“管理”菜单->错误日志访问。客户将被引导到一般错误页面。 可以通过在应用程序的目录中创建一个页来覆盖错误页:<app>/templates/cn_error.html 如果Cashnet参数指示支付成功,并且发生错误,则将向发送电子邮件 在CASHNET_ADMIN_EMAILS设置中定义的任何电子邮件地址。IA团队将作为BCC包括在内

付款后处理

任何付款后处理都应该从事务中定义的success_url完成。在

IMPORTANT
付款后处理步骤(成功失败)应该考虑到这种可能性 管理员将事务标记为成功或失败并启动自动处理。 应进行处理n事务记录的.customer属性的帐户, 或者在管理员代理时使用proxied_user标识。在

后处理的状态应该在事务记录的post_processing_status字段中设置 (最多30个字符)。在

cashnet_service.set_post_payment_processing_status(tx, "COMPLETE")

# OR, equivalently:

tx.post_processing_status = "COMPLETE"
tx.save()

欢迎加入QQ群-->: 979659372 Python中文网_新手群

推荐PyPI第三方库


热门话题
如何下载多个。java中的PDF文件   linux Java打开文件,形成实际用户主页~/   java如何在时间线内维护TableView选择?   java Hibernate注释@Where vs@WhereJoinTable   Java读/写访问异常FileNotFoundException(访问被拒绝)   继承在Java中是否可以扩展最后一个类?   Android HttpClient使用java使应用程序崩溃。lang.OutOfMemoryError:pthread_create   java为什么即使我在proguardproject中添加了jar文件,也会出现这种错误。txt?   如果添加JButton,swing Java FocusListener和KeyListener将无法工作   java使用solrj检索json格式的SolrDocument   使用Microsoft Visual Studio代码进行Java编程   java NoClassDefFoundError:org/apache/log4j/Logger   哈希集中包含相等对象的java   java中的参数化构造函数是否需要有一个主体?   java类似于NetBeans不必要的代码检测器   Java实践问题   java Blackberry“[projectname].调试文件丢失”和“I/O错误:找不到程序”jar