mollie/mollie-api-php

Mollie API PHP客户端库。Mollie是一家欧洲支付服务提供商,提供国际支付方式,如Mastercard、VISA、美国运通和PayPal,以及本地支付方式,如iDEAL、Bancontact、SOFORT Banking、SEPA直接借记、Belfius Direct Net、KBC Payment But

v2.72.0 2024-09-11 15:06 UTC

This package is auto-updated.

Last update: 2024-09-11 15:09:24 UTC


README

Mollie API PHP客户端

mollie-api-php-header

接受以下在线支付方式,无需固定月费或任何惩罚性注册流程:iDEALApple PayBancontactSOFORT Banking信用卡SEPA银行转账SEPA直接借记PayPalBelfius Direct NetKBC/CBCpaysafecardING Home'PayGiropayEPSPrzelewy24PostepayIn3Klarna即时付款延迟付款分期付款3期付款)、礼品卡优惠券。只需使用Mollie API即可直接在您的网站上接收付款,或轻松为客户退款。

Build Status Latest Stable Version Total Downloads

要求

要使用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

支付

支付接收过程

支付接收过程文档

为确保支付接收成功,您应遵循以下步骤

  1. 使用Mollie API客户端发起支付。指定所需金额、货币、描述,以及可选的支付方式。定义一个独特的重定向URL,在客户完成支付后将其重定向到该URL至关重要。

  2. 支付完成后,我们的平台将向配置的webhook发起异步请求。这使您能够获取支付详情,确保您知道何时开始处理客户的订单。

  3. 客户将被重定向到步骤(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支付,请遵循以下附加步骤

  1. 检索支持iDEAL的发行者(银行)列表。
$method = $mollie->methods->get(\Mollie\Api\Types\PaymentMethod::IDEAL, ["include" => "issuers"]);

使用$method->issuers列表让客户选择他们首选的发行者。

$method->issuers将是一个对象列表。在API调用中使用此对象的$id属性,并使用$name属性来向客户显示发行者。

  1. 使用所选发行者创建支付
$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