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 JList侦听器找不到符号   多点触摸跨平台java应用程序(Windows、Mac和Linux(Ubuntu)(可能是Android))   在UnitTest中找不到java类加载器资源   java当我尝试在Eclipse中运行我的minecraft mod时,我总是遇到这个错误,这是什么意思?   内部有一个同步块的静态方法,在java中阻止整个类?   不支持java操作:具有BillableStatus的费用在采购中应具有AccountBasedExpenseLineDetail行的CustomerRef   java运行时常量池GC集合   java无法解析配置“:app:\u debugApk”的所有依赖项。找不到名为“default”的配置   在GCP计算引擎中托管Neo4j的java   java如何从BroadcastReceiver更新片段选项卡?   线程“main”组织中的java异常。冬眠注释异常:@org。冬眠注释。表引用未知表:ProductForPractice   在Java/Groovy中嵌入处理   java Android REST教程/示例项目   java我可以在同一测试中在一个模拟器上启动应用程序,在另一个模拟器上启动移动浏览器吗?   java如何更改通知横幅的方向?   安卓 Java帮助实现Firebase授权   if else之后的rs.next()中出现java错误?