vanilo / netopia
Vanilo (Laravel) 对 Netopia 支付网关的支持
3.1.0
2024-06-06 11:32 UTC
Requires
- php: ^8.2
- ext-dom: *
- ext-openssl: *
- ext-simplexml: *
- konekt/concord: ^1.13
- konekt/enum: ^4.2
- laravel/framework: ^10.43|^11.0
- vanilo/contracts: ^4.1
- vanilo/payment: ^4.1
Requires (Dev)
- ext-sqlite3: *
- orchestra/testbench: ^8.0|^9.0
- phpunit/phpunit: ^10.0
README
此库实现了 Netopia 支付处理器,用于 Vanilo Payments。
作为一个 Concord 模块,它旨在用于 Laravel 应用程序。
重要
Netopia 使用 RC4 密码算法。在最近 (~2023) 的 OpenSSL 安装中,此密码默认禁用。
为了使用此库,您必须为 OpenSSL 3 启用旧版选项
- 找到并打开 /etc/ssl/openssl.cnf 文件
- 在
[default_sect]
部分,将其更改为以下内容[default_sect] activate = 1 [legacy_sect] activate = 1
- 然后找到
[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 支持直接贷记(退款)和捕获操作。