digitickets / omnipay-gocardlessv2
GoCardless网关,用于Omnipay支付处理库,使用v2 GoCardless API
Requires
- php: ^5.5|^7
- gocardless/gocardless-pro: ^1
- omnipay/common: ~2.0
- symfony/event-dispatcher: ^2.8
Requires (Dev)
- friendsofphp/php-cs-fixer: ^2.0
- omnipay/tests: ~2.0
- satooshi/php-coveralls: ^1.0
This package is auto-updated.
Last update: 2024-09-14 20:04:19 UTC
README
使用GoCardless v2 API的Omnipay PHP支付处理库的GoCardless驱动程序
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 选项。
- 创建客户
- 完成客户
- 创建支付方法(创建卡片或创建银行账户)
- 完成支付方法(完成卡片或完成银行账户)
- 创建授权令牌
- 完成授权令牌
以上是设置客户数据(实际上是将其带到授权令牌的阶段),以下是创建交易数据
- 创建计划
- 完成计划
- 创建订阅
- 完成订阅
支持
如果您在使用 Omnipay 时遇到一般问题,我们建议在 Stack Overflow 上发布帖子。请务必添加 omnipay 标签,以便更容易找到。
如果您想了解发布公告,讨论项目想法或提出更详细的问题,还可以订阅一个 邮件列表。
如果您认为您已经发现了一个错误,请使用 GitHub 问题跟踪器 报告它,或者更好的方法是分叉库并提交拉取请求。