mollie / mollie-api-php
Mollie API PHP客户端库。Mollie是一家欧洲支付服务提供商,提供国际支付方式,如Mastercard、VISA、美国运通和PayPal,以及本地支付方式,如iDEAL、Bancontact、SOFORT Banking、SEPA直接借记、Belfius Direct Net、KBC Payment But
Requires
- php: ^7.2|^8.0
- ext-curl: *
- ext-json: *
- ext-openssl: *
- composer/ca-bundle: ^1.2
Requires (Dev)
- eloquent/liberator: ^2.0||^3.0
- friendsofphp/php-cs-fixer: ^3.0
- guzzlehttp/guzzle: ^6.3 || ^7.0
- phpstan/phpstan: ^1.4
- phpunit/phpunit: ^8.5 || ^9.5
Suggests
- mollie/oauth2-mollie-php: Use OAuth to authenticate with the Mollie API. This is needed for some endpoints. Visit https://docs.mollie.com/ for more information.
- dev-master
- v3.x-dev
- v2.72.0
- v2.71.0
- v2.70.0
- v2.69.0
- v2.68.0
- v2.67.1
- v2.67.0
- v2.66.0
- v2.65.0
- v2.64.0
- v2.63.0
- v2.62.0
- v2.61.0
- v2.60.0
- v2.59.0
- v2.58.0
- v2.58.0-beta
- v2.57.0
- v2.56.1
- v2.56.0
- v2.55.0
- v2.54.0
- v2.53.0
- v2.52.1
- v2.52.0
- v2.51.0
- v2.50.1
- v2.50.0
- v2.49.2
- v2.49.1
- v2.49.0
- v2.48.0
- v2.47.0
- v2.46.0
- v2.45.0
- v2.44.1
- v2.44.0
- v2.43.0
- v2.42.1
- v2.42.0
- v2.41.0
- v2.40.2
- v2.40.1
- v2.40.0
- v2.39.0
- v2.38.0
- v2.37.1
- v2.37.0
- v2.36.1
- v2.36.0
- v2.35.0
- v2.34.0
- v2.33.0
- v2.32.2
- v2.32.1
- v2.32.0
- v2.31.2
- v2.31.1
- v2.31.1-alpha
- v2.31.0
- v2.31.0-alpha
- v2.30.2
- v2.30.1
- v2.30.0
- v2.29.0
- v2.28.0
- v2.27.2
- v2.27.1
- v2.27.0
- v2.26.0
- v2.25.0
- v2.24.0
- v2.23.0
- v2.22.3
- v2.22.2
- v2.22.2alpha
- v2.22.1
- v2.22.0
- v2.21.0
- v2.20.0
- v2.19.0
- v2.18.0
- 2.17.1
- v2.17.0
- v2.16.0
- v2.15.0
- v2.14.0
- v2.13.1
- v2.13.0
- v2.12.1
- v2.12.0
- v2.11.0
- v2.10.0
- v2.9.2
- v2.9.1
- v2.9.0
- v2.8.3
- v2.8.2
- v2.8.1
- v2.8.0
- v2.7.0
- v2.6.1
- v2.6.0
- v2.5.0
- v2.4.2
- v2.4.1
- v2.4.0
- v2.3.0
- v2.2.0
- v2.1.6
- v2.1.5
- v2.1.4
- v2.1.3
- v2.1.2
- v2.1.1
- 2.1.0
- v2.1.0-beta-1
- v2.0.14
- v2.0.13
- v2.0.12
- v2.0.11
- v2.0.10
- v2.0.9
- v2.0.8
- v2.0.7
- v2.0.6
- v2.0.5
- v2.0.4
- v2.0.3
- v2.0.2
- v2.0.1
- v2.0.0
- v2.0.0-beta-1
- v1.19.13
- v1.9.12
- v1.9.11
- v1.9.10
- v1.9.9
- v1.9.7
- v1.9.6
- v1.9.5
- v1.9.4
- v1.9.3
- v1.9.2
- 1.9.1
- 1.9.0
- 1.8.1
- 1.8.0
- 1.7.1
- 1.7.0
- 1.6.6
- 1.6.5
- 1.6.4
- 1.6.3
- 1.6.2
- 1.6.0
- 1.5.1
- 1.5.0
- 1.4.1
- v1.4.0
- 1.3.3
- 1.3.2
- 1.3.1
- 1.2.11
- 1.2.10
- 1.2.9
- 1.2.8
- 1.2.7
- 1.2.6
- 1.2.5
- 1.2.4
- 1.2.3
- 1.2.2
- 1.2.1
- 1.2.0
- 1.1.6
- 1.1.5
- 1.1.4
- 1.1.3
- 1.1.2
- 1.1.1
- 1.1.0
- 1.0.3
- 1.0.2
- 1.0.1
- 1.0.0
- dev-feature/add-some-more-method-constants
- dev-v3-with-changed-endpoint-structure-poc
- dev-feature/add-trustly-enum
- dev-feature/add-sessions
- dev-feature/add-auto-pagination-helper-methods
- dev-update-readme
- dev-feature/add-auto-pagination-iterator
- dev-add-create-client-links-endpoint
- dev-feature/add-can-be-canceled-method-to-refund-resource
- dev-vannut-patch-1
- dev-improve-refund-documentation
- dev-v1-develop
This package is auto-updated.
Last update: 2024-09-11 15:09:24 UTC
README
Mollie API PHP客户端
接受以下在线支付方式,无需固定月费或任何惩罚性注册流程:iDEAL、Apple Pay、Bancontact、SOFORT Banking、信用卡、SEPA银行转账、SEPA直接借记、PayPal、Belfius Direct Net、KBC/CBC、paysafecard、ING Home'Pay、Giropay、EPS、Przelewy24、Postepay、In3、Klarna(即时付款、延迟付款、分期付款、3期付款)、礼品卡和优惠券。只需使用Mollie API即可直接在您的网站上接收付款,或轻松为客户退款。
要求
要使用Mollie API客户端,需要以下条件
- 获取免费Mollie账户。无需注册费用。
- 现在您可以使用Mollie API客户端进行测试。
- 按照以下步骤启用实时模式下的支付方式,其余的由我们处理。
- PHP >= 7.2
- 最新的OpenSSL(或其他SSL/TLS工具包)
为了利用Mollie Connect(仅限高级用例),我们建议安装我们的OAuth2客户端。
安装
使用Composer
安装Mollie API客户端最简单的方法是使用Composer。您可以使用以下命令来要求它
composer require mollie/mollie-api-php
要使用最新版本的API,请确保您使用的API客户端版本等于或高于2.0.0。如果您希望继续使用v1 API,请确保您的客户端版本低于2.0.0。有关从v1迁移到v2的指南,请参阅迁移说明。
手动安装
如果您不熟悉使用composer,我们已经在发行版中添加了一个包含API客户端和所有由composer通常安装的包的ZIP文件。从发行版页面下载mollie-api-php.zip
。
如初始化示例所示,包含vendor/autoload.php
。
使用方法
初始化Mollie API客户端,并设置您的API密钥。
$mollie = new \Mollie\Api\MollieApiClient(); $mollie->setApiKey("test_dHar4XY7LxsDOtmnkVtjNVWXLSlXsM");
使用MollieApiClient
,您现在可以通过选择客户端的属性来访问以下任何端点
在我们的网站上查看完整的文档:docs.mollie.com。
订单
创建订单
$order = $mollie->orders->create([ "amount" => [ "value" => "1027.99", "currency" => "EUR", ], "billingAddress" => [ "streetAndNumber" => "Keizersgracht 313", "postalCode" => "1016 EE", "city" => "Amsterdam", "country" => "nl", "givenName" => "Luke", "familyName" => "Skywalker", "email" => "[email protected]", ], "shippingAddress" => [ "streetAndNumber" => "Keizersgracht 313", "postalCode" => "1016 EE", "city" => "Amsterdam", "country" => "nl", "givenName" => "Luke", "familyName" => "Skywalker", "email" => "[email protected]", ], "metadata" => [ "some" => "data", ], "consumerDateOfBirth" => "1958-01-31", "locale" => "en_US", "orderNumber" => "1234", "redirectUrl" => "https://your_domain.com/return?some_other_info=foo", "webhookUrl" => "https://your_domain.com/webhook", "method" => "ideal", "lines" => [ [ "sku" => "5702016116977", "name" => "LEGO 42083 Bugatti Chiron", "productUrl" => "https://shop.lego.com/nl-NL/Bugatti-Chiron-42083", "imageUrl" => 'https://sh-s7-live-s.legocdn.com/is/image//LEGO/42083_alt1?$main$', "quantity" => 2, "vatRate" => "21.00", "unitPrice" => [ "currency" => "EUR", "value" => "399.00", ], "totalAmount" => [ "currency" => "EUR", "value" => "698.00", ], "discountAmount" => [ "currency" => "EUR", "value" => "100.00", ], "vatAmount" => [ "currency" => "EUR", "value" => "121.14", ], ], // more order line items ], ]);
创建后,订单ID将在$order->id
属性中可用。您应该将此ID与您的订单一起存储。
存储订单ID后,您可以使用$order->getCheckoutUrl()
将客户发送到完成订单支付的页面。
header("Location: " . $order->getCheckoutUrl(), true, 303);
此头部位置始终应为GET,因此我们强制执行303 HTTP响应代码
有关创建订单的示例,请参阅示例 - 新订单。
更新订单
$order = $mollie->orders->get("ord_kEn1PlbGa"); $order->billingAddress->organizationName = "Mollie B.V."; $order->billingAddress->streetAndNumber = "Keizersgracht 126"; $order->billingAddress->city = "Amsterdam"; $order->billingAddress->region = "Noord-Holland"; $order->billingAddress->postalCode = "1234AB"; $order->billingAddress->country = "NL"; $order->billingAddress->title = "Dhr"; $order->billingAddress->givenName = "Piet"; $order->billingAddress->familyName = "Mondriaan"; $order->billingAddress->email = "[email protected]"; $order->billingAddress->phone = "+31208202070"; $order->update();
退款订单
完成
$order = $mollie->orders->get('ord_8wmqcHMN4U'); $refund = $order->refundAll(); echo 'Refund ' . $refund->id . ' was created for order ' . $order->id;
部分
在执行部分退款时,您必须列出所有应退款的订单行项目。
$order = $mollie->orders->get('ord_8wmqcHMN4U'); $refund = $order->refund([ 'lines' => [ [ 'id' => 'odl_dgtxyl', 'quantity' => 1, ], ], "description" => "Required quantity not in stock, refunding one photo book.", ]);
取消订单
在取消订单时,在执行取消操作之前检查订单是否可取消至关重要。有关更多信息,请参阅可能的订单状态。
$order = $mollie->orders->get("ord_pbjz8x"); if ($order->isCancelable) { $canceledOrder = $order->cancel(); echo "Your order " . $order->id . " has been canceled."; } else { echo "Unable to cancel your order " . $order->id . "."; }
订单webhook
当订单状态发生变化时,在创建订单期间指定的webhookUrl
将被调用。您可以使用POST参数中的id
来检查状态并采取适当的操作。有关更多详细信息,请参阅示例 - Webhook。
支付
支付接收过程
为确保支付接收成功,您应遵循以下步骤
-
使用Mollie API客户端发起支付。指定所需金额、货币、描述,以及可选的支付方式。定义一个独特的重定向URL,在客户完成支付后将其重定向到该URL至关重要。
-
支付完成后,我们的平台将向配置的webhook发起异步请求。这使您能够获取支付详情,确保您知道何时开始处理客户的订单。
-
客户将被重定向到步骤(1)中的URL,并且应该很高兴地发现订单已支付并且现在正在处理中。
创建支付
$payment = $mollie->payments->create([ "amount" => [ "currency" => "EUR", "value" => "10.00" ], "description" => "My first API payment", "redirectUrl" => "https://webshop.example.org/order/12345/", "webhookUrl" => "https://webshop.example.org/mollie-webhook/", ]);
创建后,支付ID将在$payment->id
属性中可用。您应该将此ID与您的订单一起存储。
存储支付ID后,您可以使用$payment->getCheckoutUrl()
将客户发送到结账页面。
header("Location: " . $payment->getCheckoutUrl(), true, 303);
此头部位置始终应为GET,因此我们强制执行303 HTTP响应代码
有关创建支付示例,请参阅 示例 - 新支付。
多货币
从API v2.0开始,现在可以为您的客户创建非欧元支付。可在我们的文档中找到可用的完整货币列表。在这里。
$payment = $mollie->payments->create([ "amount" => [ "currency" => "USD", "value" => "10.00" ], //... ]);
创建后,settlementAmount
将包含将结算到您账户的欧元金额。
创建完全集成的iDEAL支付
要在您的网站上完全集成iDEAL支付,请遵循以下附加步骤
- 检索支持iDEAL的发行者(银行)列表。
$method = $mollie->methods->get(\Mollie\Api\Types\PaymentMethod::IDEAL, ["include" => "issuers"]);
使用$method->issuers
列表让客户选择他们首选的发行者。
$method->issuers
将是一个对象列表。在API调用中使用此对象的$id
属性,并使用$name
属性来向客户显示发行者。
- 使用所选发行者创建支付
$payment = $mollie->payments->create([ "amount" => [ "currency" => "EUR", "value" => "10.00" ], "description" => "My first API payment", "redirectUrl" => "https://webshop.example.org/order/12345/", "webhookUrl" => "https://webshop.example.org/mollie-webhook/", "method" => \Mollie\Api\Types\PaymentMethod::IDEAL, "issuer" => $selectedIssuerId, // e.g. "ideal_INGBNL2A" ]);
$payment
对象的_links
属性将包含一个包含href
属性的checkout
对象,该属性是一个指向所选发行者的在线银行环境的URL。可以通过使用$payment->getCheckoutUrl()
来快速检索此URL。
有关更深入的示例,请参阅 示例 - iDEAL支付。
检索支付
我们可以使用$payment->id
来检索支付并检查支付是否isPaid
。
$payment = $mollie->payments->get($payment->id); if ($payment->isPaid()) { echo "Payment received."; }
或检索支付集合。
$payments = $mollie->payments->page();
有关列出具有详细信息和状态的支付的详细示例,请参阅 示例 - 列出支付。
退款支付
我们的API提供退款支持。请注意,没有确认步骤,所有退款都是即时且最终的。退款适用于除paysafecard和礼品卡之外的所有支付方式。
$payment = $mollie->payments->get($payment->id); // Refund € 2 of this payment $refund = $payment->refund([ "amount" => [ "currency" => "EUR", "value" => "2.00" ] ]);
支付webhook
当支付状态改变时,您在支付创建期间指定的webhookUrl
将被调用。您可以使用POST参数中的id
来检查状态并采取适当的行动。有关更多详细信息,请参阅 示例 - Webhook。
有关工作示例,请参阅 示例 - 退款支付。
启用调试模式
在故障排除时,访问ApiException
中的提交请求非常有用。为了防止意外在本地应用程序日志中公开敏感请求数据,调试功能最初是关闭的。
要启用调试并检查请求
/** @var $mollie \Mollie\Api\MollieApiClient */ $mollie->enableDebugging(); try { $mollie->payments->get('tr_12345678'); } catch (\Mollie\Api\Exceptions\ApiException $exception) { $request = $exception->getRequest(); }
如果您正在记录ApiException
的实例,则请求详细信息将包含在日志中。确保在这些日志中不保留任何敏感信息,并在调试完成后进行清理。
要再次禁用调试
/** @var $mollie \Mollie\Api\MollieApiClient */ $mollie->disableDebugging();
请注意,调试仅在默认Guzzle http适配器(Guzzle6And7MollieHttpAdapter
)下可用。
API文档
为了深入了解我们的API,请访问 Mollie开发者门户。我们的API文档仅提供英文。
为我们的API客户端做出贡献
您想为改进我们的API客户端贡献力量吗?我们欢迎pull requests。但是,如果您对加入一个技术导向的组织感兴趣,Mollie正在积极招募开发人员和系统工程师。了解我们当前的职位空缺或联系我们。
许可证
BSD (伯克利软件发行版) 许可证。版权所有 (c) 2013-2018, Mollie B.V.
支持
联系:www.mollie.com — [email protected] — +31 20 820 20 70