cihansenturk/omnipay-gocardlessv2

使用 v2 GoCardless API 的 Omnipay 支付处理库的 GoCardless 网关

1.0.1 2023-05-22 15:28 UTC

This package is auto-updated.

Last update: 2024-09-22 18:27:27 UTC


README

使用 GoCardless v2 API 的 Omnipay PHP 支付处理库的 Go Cardless 驱动程序

Build Status Coverage Status Latest Stable Version Total Downloads

Omnipay 是一个框架无关、多网关的 PHP 5.5+ 支付处理库。本包实现了 Omnipay 的 GoCardless 支持。

安装

Omnipay 通过 Composer 安装。要安装,只需将其添加到您的 composer.json 文件中

composer require digitickets/gocardlessv2:"^0"

基本用法

本包提供了以下网关

  • GoCardless Pro - 发行候选版本
  • GoCardless Pro (JS Flow) - 发行候选版本
  • GoCardless 重定向流程 - 首次发布

如果您在生产环境中使用这些发行候选版本,请告知我们,我们将进行正式发布 - 在此之前,我们可能会推送破坏性更改!

不知道使用哪个网关?

  • 如果您在使用 GoCardless 网站上的自己支付屏幕,则需要使用 RedirectGateway。
  • 如果您使用 GoCardless JavaScript 处理卡详细信息并返回令牌,则 JSFlowGateway 适用于您。
  • 如果您在自己的服务器上处理银行账户详细信息(承担最高的 PCI 责任),则 Pro Gateway 适用于您。

所有网关都封装了一个通用的核心,具有许多共享方法,但它们在创建客户、银行账户和授权的机制上有所不同。重定向在幕后创建客户和银行账户并返回授权。JSFlow 返回银行账户令牌,以便您可以自己创建客户、银行账户和授权,而不必处理银行账户详细信息。Pro 要求您在单独的步骤中提交所有数据。创建订阅或进行单次支付对所有网关都是通用的。

此功能仍在开发中 - 目前只有 JS Flow 网关是稳定的。

您需要设置您的 access_token。将 testMode 设置为 true 将使用 sandbox 环境。

此网关仅支持通过银行授权进行单次支付或计划订阅。有关此网关支持内容的更多详细信息,请参阅文档

有关一般使用说明,请参阅Omnipay 的主存储库。

特定于驱动程序的使用

此驱动程序支持通过 GoCardless 可用的多种实现方法。请查阅他们的文档以确认哪些方法适用于您的情况。并非所有方法都适用于每个路由。此驱动程序不提供访问列表方法 - 数据只能通过主键检索。

创建客户

$customer = $gateway->createCustomer([
    'customerData' => array(
                            'card' => new \Omnipay\Common\CreditCard( // use the standard omnipay card to hold the customer data
                                [
                                    'firstName' => 'Mike',
                                    'lastName' => 'Jones',
                                    'email' => 'mike.jones@example.com',
                                    'address1' => 'Iconic Song House, 47 Penny Lane',
                                    'address2' => 'Wavertree',
                                    'city' => 'Liverpool',
                                    'company' => 'Mike Jones Enterprises',
                                    'country' => 'GB',
                                    'postal_code' => 'L18 1DE',
                                    'state' => 'Merseyside',
                                ]
                            ),
                            'customerMetaData' => [
                                'meta1' => 'Lorem Ipsom Dolor Est',
                                'meta2' => 'Far far away, behind the word mountains, far from the countries Vokalia and Consonantia, there live the blind texts.',
                                'meta567890123456789012345678901234567890123456789' => 'Separated they live in Bookmarksgrove right at the coast of the Semantics, a large language ocean. A small river named Duden flows by their place and supplies it with the necessary regelialia.',
                            ],
                            'swedishIdentityNumber' => '123',
            ),
])->send();

您可以在此处找到完整的选项列表这里

查找客户(按 ID)

$customer = $gateway->findCustomer(1)->send();

解析 webhook 通知

$notification = $gateway->parseNotification(
                                getallheaders(),
                                file_get_contents('php://input'), 
                                'MySecurityToken'
                            )
                        ->send();

这将获取与 webhook 相关的事件。

处理重复计费

待办事项 - 此处。使用标准的 repeatPurchase() 格式(例如,请参阅 sagepay 的示例结构)

建议的通用 Omnipay 驱动程序流程

我们正在探索使用一组简化的函数来允许无差别处理。每个步骤都会检查驱动器上是否存在该方法,如果存在,则相应地调用它,然后在调用 getXyzReference 并将其添加到传递的数据之前。希望这种结构可以与多个主要网关一起工作——我们已经考虑了 Stripe、Paypal 以及各种 GoCardless 选项。

  1. 创建客户
  2. 完成客户
  3. 创建支付方式(创建卡片或创建银行账户)
  4. 完成支付方式(完成卡片或完成银行账户)
  5. 创建授权
  6. 完成授权

以上为设置客户数据(实际上将其带到获得授权令牌的阶段),以下为创建交易数据

  1. 创建计划
  2. 完成计划
  3. 创建订阅
  4. 完成订阅

支持

如果您在使用 Omnipay 时遇到一般问题,我们建议在 Stack Overflow 上发表帖子。请确保添加 omnipay 标签,以便可以轻松找到。

如果您想保持对发布公告的更新,讨论项目想法或提出更详细的问题,还有一个您可以订阅的 邮件列表

如果您认为您发现了错误,请使用 GitHub 问题跟踪器 报告错误,或者更好的方法是,分支库并提交拉取请求。