vanilo/netopia

Vanilo (Laravel) 对 Netopia 支付网关的支持

3.1.0 2024-06-06 11:32 UTC

This package is auto-updated.

Last update: 2024-09-06 12:01:16 UTC


README

Tests Packagist Stable Version StyleCI Packagist downloads MIT Software License

此库实现了 Netopia 支付处理器,用于 Vanilo Payments

作为一个 Concord 模块,它旨在用于 Laravel 应用程序。

重要

Netopia 使用 RC4 密码算法。在最近 (~2023) 的 OpenSSL 安装中,此密码默认禁用。

为了使用此库,您必须为 OpenSSL 3 启用旧版选项

  1. 找到并打开 /etc/ssl/openssl.cnf 文件
  2. [default_sect] 部分,将其更改为以下内容
    [default_sect]
    activate = 1
    [legacy_sect]
    activate = 1
  3. 然后找到 [provider_sect] 并将其更改为以下内容
    [provider_sect]
    default = default_sect
    legacy = legacy_sect

文档

请参阅 docs 文件夹中的 markdown 文件。

待办事项

该库功能正常,但仍有改进空间。

1. 定期付款

目前完全未经测试,因此可能工作或不工作

2. 使用忠诚度积分

目前完全未经测试。

3. 添加更多具体的错误测试用例

  • 使用文档中的测试卡生成各种失败情况的场景
  • 捕获 XML 响应,将其添加到单元测试中并特别检查

案例:

  • 成功付款。已覆盖。
  • 卡片过期。已覆盖。
  • 部分退款。已覆盖。
  • 全额退款。已覆盖。
  • 交易拒绝。已覆盖。
  • 资金不足。无单元测试覆盖率。
  • CVV2/CCV 错误。无单元测试覆盖率。
  • 交易不允许(例如,卡片未注册)。无单元测试覆盖率。
  • 检测到风险卡片(例如,被盗卡片)。无单元测试覆盖率。
  • 原始银行错误(例如,无法连接到银行)。无单元测试覆盖率。

4. 使用真实 Netopia 密钥进行测试

在测试期间,我在 Netopia 创建了一个测试帐户并生成了测试密钥,以便在单元测试中建立接近真实场景。

在模拟 Netopia 使用实际密钥生成的加密消息时存在问题。测试使用本地生成的 RSA 密钥对来实现此功能。这似乎可以完成任务,但如果我们发现问题的原因,请使用实际的 Netopia 密钥。

5. 记录更多响应详细信息

Netopia 返回以下数据,我们应该将其记录在本地

  • pan_masked(卡号数字,例如4****2806)

6. SMS 付款

Netopia 支持短信付款。可能不会在此实现,因为它是针对小额支付,但谁知道呢 🤷

7. 退款

Netopia 通过其 SOAP API 支持直接贷记(退款)和捕获操作。