PostFinance Checkout SDK for PHP

4.6.0 2024-09-04 09:20 UTC

README

Build Status

PostFinance Checkout PHP 库

PostFinance Checkout PHP 库封装了 PostFinance Checkout API,该库简化了您与交易、账户和订阅等服务的交互。

文档

PostFinance Checkout Web 服务 API

要求

  • PHP 5.6.0 及以上

安装

您可以使用 Composer手动安装

Composer

首选方法是使用composer。如果您尚未安装 composer,请按照安装说明进行操作。

一旦 composer 安装完毕,请在项目根目录中执行以下命令以安装此库

composer require postfinancecheckout/sdk

手动安装

或者,您可以下载整个包。在版本发布页面中列出了所有稳定版本。

解压缩您下载的 zip 文件,并将自动加载器包含到您的项目中

require_once '/path/to/php-sdk/autoload.php';

使用方法

该库需要配置您的账户空间 ID、用户 ID 和密钥,这些信息可在您的PostFinance Checkout 账户仪表板中找到。将 space_iduser_idapi_secret 设置为其值。

配置服务

require_once(__DIR__ . '/autoload.php');

// Configuration
$spaceId = 405;
$userId = 512;
$secret = 'FKrO76r5VwJtBrqZawBspljbBNOxp5veKQQkOnZxucQ=';

// Setup API client
$client = new \PostFinanceCheckout\Sdk\ApiClient($userId, $secret);

// Get API service instance
$client->getTransactionService();
$client->getTransactionPaymentPageService();

以下是一个发送交易的示例,以开始使用

require_once(__DIR__ . '/autoload.php');

// Configuration
$spaceId = 405;
$userId = 512;
$secret = 'FKrO76r5VwJtBrqZawBspljbBNOxp5veKQQkOnZxucQ=';

// Setup API client
$client = new \PostFinanceCheckout\Sdk\ApiClient($userId, $secret);

// Create transaction
$lineItem = new \PostFinanceCheckout\Sdk\Model\LineItemCreate();
$lineItem->setName('Red T-Shirt');
$lineItem->setUniqueId('5412');
$lineItem->setSku('red-t-shirt-123');
$lineItem->setQuantity(1);
$lineItem->setAmountIncludingTax(29.95);
$lineItem->setType(\PostFinanceCheckout\Sdk\Model\LineItemType::PRODUCT);


$transactionPayload = new \PostFinanceCheckout\Sdk\Model\TransactionCreate();
$transactionPayload->setCurrency('EUR');
$transactionPayload->setLineItems(array($lineItem));
$transactionPayload->setAutoConfirmationEnabled(true);

$transaction = $client->getTransactionService()->create($spaceId, $transactionPayload);

// Create Payment Page URL:
$redirectionUrl = $client->getTransactionPaymentPageService()->paymentPageUrl($spaceId, $transaction->getId());

header('Location: ' . $redirectionUrl);

HTTP 客户端

您可以使用 php curlphp socket 扩展。建议您安装必要的扩展并在系统上启用它们。

有两种方式可以指定您首选的 HTTP 客户端。

$userId = 512;
$secret = 'FKrO76r5VwJtBrqZawBspljbBNOxp5veKQQkOnZxucQ=';

// Setup API client
$client = new \PostFinanceCheckout\Sdk\ApiClient($userId, $secret);

$httpClientType = \PostFinanceCheckout\Sdk\Http\HttpClientFactory::TYPE_CURL; // or \PostFinanceCheckout\Sdk\Http\HttpClientFactory::TYPE_SOCKET

$client->setHttpClientType($httpClientType);

//Setup a custom connection timeout if needed. (Default value is: 25 seconds)
$client->setConnectionTimeout(20);

您还可以通过 PFC_HTTP_CLIENT 环境变量指定 HTTP 客户端。可能的字符串值是 curlsocket

<?php
putenv('PFC_HTTP_CLIENT=curl');
?>

将 Webhook 负载签名机制集成到 Webhook 回调处理程序中

现在,发送实体状态变化的 HTTP 请求包括一个额外的字段 state,它提供了有关监视实体状态更新的信息。此增强是通过实现我们的 Webhook 加密机制实现的。

负载字段 state 直接提供了实体状态更新的信息,因此无需额外的 API 调用来检索实体状态。

⚠️ 注意:通用伪代码

提供的伪代码有意是通用的,旨在说明增强您的 API 以利用 Webhook 负载签名的过程。它不是一个完整的实现。

请确保您根据应用程序的特定需求(包括适当的安全措施和错误处理)对代码进行修改和扩展。为了详细了解 Webhook 负载签名机制,我们强烈建议您参考我们的全面Webhook 负载签名文档

public function handleWebhook() {
    $requestPayload = file_get_contents('php://input');
    $signature = $_SERVER['HTTP_X_SIGNATURE'] ?? '';

    if (empty($signature)) {
        // Make additional API call to retrieve the entity state
        // ...
    } else {
        if ($client->getWebhookEncryptionService()->isContentValid($signature, $requestPayload)) {
            // Parse requestPayload to extract 'state' value
            // $state = ...
            // Process entity's state change
            // $this->processEntityStateChange($state);
            // ...
        }
    }

    // Process the received webhook data
    // ...

}

许可证

有关更多信息,请参阅许可证文件