digitickets/omnipay-gocardlessv2

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

0.1.16 2022-01-14 14:05 UTC

README

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

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网站上使用他们自己的支付屏幕,则希望使用重定向网关。
  • 如果您使用GoCardless的JavaScript处理卡详细信息并返回令牌,则JSFlow网关适合您。
  • 如果您在自己的服务器上处理银行账户详细信息(接受最高级别的PCI责任),则Pro网关适合您。

所有网关都封装了一个公共核心和许多共享方法,但它们在创建客户、银行账户和授权的机制上有所不同。重定向在幕后创建客户/银行账户并返回授权。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 问题跟踪器 报告它,或者更好的方法是分叉库并提交拉取请求。