payever/payments-sdk-php

2.5.0 2024-08-21 16:11 UTC

README

Scrutinizer Code Quality Build Status Code Intelligence Status Latest Stable Version Total Downloads License

此仓库包含允许您从PHP应用程序访问payever的开源PHP SDK。

此库遵循语义化版本控制。更多内容请参阅semver.org

请注意:此SDK用于payever插件中。它不适用于自定义API集成。如果您想通过API与我们集成,请访问https://docs.payever.org/shopsystems/api并遵循提供的说明和代码示例。

故障排除

如果您遇到问题,可以通过官方支持渠道联系我们 - support@getpayever.com

要求

安装

您可以使用Composer

Composer

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

Composer安装后,在项目根目录中执行以下命令以安装此库

composer require payever/payments-sdk-php

文档

原始HTTP API文档可在此处找到 - https://docs.payever.org/shopsystems/api

枚举

API内部使用几个固定字符串值的列表。为了方便,它们被表示为常量并分组到类中。

  • 支付
    • PaymentMethod - 可用的payever支付方式列表
    • Status - 可用的payever支付状态列表

API客户端

通过PaymentsApiClient API客户端与payever进行HTTP API通信。

配置

每个API客户端都需要将配置对象作为客户端构造函数的第一个参数。为了获取有效的配置对象,您需要有效的API凭据

  • 客户端ID
  • 客户端密钥
  • 业务UUID

此外,您需要告知您正在使用哪个API通道

use Payever\Sdk\Core\ClientConfiguration;
use Payever\Sdk\Core\Enum\ChannelSet;

$clientId = 'your-oauth2-client-id';
$clientSecret = 'your-oauth2-client-secret';
$businessUuid = '88888888-4444-4444-4444-121212121212';

$clientConfiguration = new ClientConfiguration();

$clientConfiguration
    ->setClientId($clientId)
    ->setClientSecret($clientSecret)
    ->setBusinessUuid($businessUuid)
    ->setChannelSet(ChannelSet::CHANNEL_MAGENTO)
    ->setApiMode(ClientConfiguration::API_MODE_LIVE)
;

注意:以下所有示例都假设您已将ClientConfiguration实例化在$clientConfiguration变量中。

日志记录

您可以通过提供PSR-3兼容的记录器实例来设置所有API交互的日志记录。

如果没有PSR-3兼容的记录器,此SDK包含简单的文件记录器

use Psr\Log\LogLevel;
use Payever\Sdk\Core\Logger\FileLogger;

$logger = new FileLogger(__DIR__.'/payever.log', LogLevel::INFO);
$clientConfiguration->setLogger($logger);

PaymentsApiClient

此API客户端用于所有与支付相关的交互。

创建支付并获得重定向URL
use Payever\Sdk\Payments\Enum\PaymentMethod;
use Payever\Sdk\Payments\PaymentsApiClient;
use Payever\Sdk\Payments\Http\RequestEntity\CreatePaymentRequest;

$paymentsApiClient = new PaymentsApiClient($clientConfiguration);

$createPaymentEntity = new CreatePaymentRequest();

$createPaymentEntity
    ->setOrderId('1001')
    ->setAmount(100.5)
    ->setFee(10)
    ->setCurrency('EUR')
    ->setPaymentMethod(PaymentMethod::METHOD_SANTANDER_DE_INSTALLMENT)
    ->setSalutation('mr')
    ->setFirstName('John')
    ->setLastName('Doe')
    ->setCity('Hamburg')
    ->setCountry('DE')
    ->setZip('10111')
    ->setStreet('Awesome street, 10')
    ->setEmail('john.doe@example.com')
    ->setPhone('+450001122')
    ->setSuccessUrl('https://your.domain/success?paymentId=--PAYMENT-ID--')
    ->setCancelUrl('https://your.domain/checkout?reason=cancel')
    ->setFailureUrl('https://your.domain/checkout?reason=failure')
    ->setNoticeUrl('https://your.domain/async-payment-callback?paymentId=--PAYMENT-ID--')
;

try {
    $response = $paymentsApiClient->createPaymentRequest($createPaymentEntity);
    $responseEntity = $response->getResponseEntity();
    
    header(sprintf('Location: %s', $responseEntity->getRedirectUrl()), true);
    exit;
} catch (\Exception $exception) {
    echo $exception->getMessage();
}
通过ID检索支付详情
use Payever\Sdk\Payments\PaymentsApiClient;
use Payever\Sdk\Payments\Http\MessageEntity\RetrievePaymentResultEntity;

$paymentId = '--PAYMENT-ID--';
$paymentsApiClient = new PaymentsApiClient($clientConfiguration);

try {
    $response = $paymentsApiClient->retrievePaymentRequest($paymentId);
    /** @var RetrievePaymentResultEntity $payment */
    $payment = $response->getResponseEntity()->getResult();
    $status = $payment->getStatus();
} catch(\Exception $exception) {
    echo $exception->getMessage();
}
通过ID取消支付
use Payever\Sdk\Payments\PaymentsApiClient;
use Payever\Sdk\Payments\Action\ActionDecider;

$paymentId = '--PAYMENT-ID--';
$paymentsApiClient = new PaymentsApiClient($clientConfiguration);
$actionDecider = new ActionDecider($paymentsApiClient);

try {
    if ($actionDecider->isActionAllowed($paymentId, ActionDecider::ACTION_CANCEL, false)) {
        $paymentsApiClient->cancelPaymentRequest($paymentId);
    }
} catch(\Exception $exception) {
    echo $exception->getMessage();
}
触发桑坦德发货商品支付操作
use Payever\Sdk\Payments\PaymentsApiClient;
use Payever\Sdk\Payments\Action\ActionDecider;

$paymentId = '--PAYMENT-ID--';
$paymentsApiClient = new PaymentsApiClient($clientConfiguration);
$actionDecider = new ActionDecider($paymentsApiClient);

try {
    if ($actionDecider->isActionAllowed($paymentId, ActionDecider::ACTION_SHIPPING_GOODS, false)) {
        $paymentsApiClient->shippingGoodsPaymentRequest($paymentId);
    }
} catch(\Exception $exception) {
    echo $exception->getMessage();
}
获取公司信用等级
use Payever\Sdk\Payments\PaymentsApiClient;
use Payever\Sdk\Payments\Http\RequestEntity\CompanySearchCreditRequest;
use Payever\Sdk\Payments\Http\RequestEntity\CompanySearchCredit\CompanyEntity;

$company = new CompanyEntity();
$company->setExternalId('81981372');

$companySearchCredit = new CompanySearchCreditRequest();
$companySearchCredit->setCompany($company);

$paymentsApiClient = new PaymentsApiClient($clientConfiguration);
$result = $paymentsApiClient->companyCredit($companySearchCredit);

许可证

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