cihansenturk / omnipay-gocardlessv2
使用 v2 GoCardless API 的 Omnipay 支付处理库的 GoCardless 网关
Requires
- php: ^5.5|^7|^8
- gocardless/gocardless-pro: ^5
- 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-22 18:27:27 UTC
README
使用 GoCardless v2 API 的 Omnipay PHP 支付处理库的 Go Cardless 驱动程序
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 选项。
- 创建客户
- 完成客户
- 创建支付方式(创建卡片或创建银行账户)
- 完成支付方式(完成卡片或完成银行账户)
- 创建授权
- 完成授权
以上为设置客户数据(实际上将其带到获得授权令牌的阶段),以下为创建交易数据
- 创建计划
- 完成计划
- 创建订阅
- 完成订阅
支持
如果您在使用 Omnipay 时遇到一般问题,我们建议在 Stack Overflow 上发表帖子。请确保添加 omnipay 标签,以便可以轻松找到。
如果您想保持对发布公告的更新,讨论项目想法或提出更详细的问题,还有一个您可以订阅的 邮件列表。
如果您认为您发现了错误,请使用 GitHub 问题跟踪器 报告错误,或者更好的方法是,分支库并提交拉取请求。