vlsv / sberbank-api

SberBank CallbackNotification 处理器

v1.1.0 2021-03-12 17:50 UTC

This package is auto-updated.

Last update: 2024-09-30 01:35:56 UTC


README

Travis CI Build Status

处理 SberBank 支付网关回调通知

要求

  • PHP 7.4 及以上
  • SSL 证书
  • php-json 扩展
  • ext-openssl 扩展

安装

$ composer require 'vlsv/sberbank-api'

使用

无校验和通知

此类通知仅包含订单信息——潜在地,卖家可能将恶意发送的通知误认为是真实的。

<?php

use Vlsv\SberBankApi\CallbackNotification;

require __DIR__ . '/vendor/autoload.php';

// Массив значений полученный от платежного шлюза
$payload = $_GET;

try {
    $order = new CallbackNotification($payload);
} catch (\UnexpectedValueException $e) {
    exit($e->getMessage());
}

if ($order->isDeposited()) {
    echo 'Проведена полная авторизация суммы заказа ' . $order->getOrderNumber();
}

if ($order->isRefunded()) {
    echo 'По заказу ' . $order->getOrderNumber() . ' была проведена операция возврата ';
}

带校验和通知

此类通知除包含订单信息外,还包含认证码。认证码是订单信息的校验和。这个校验和允许验证 callback-通知确实是由支付网关发送的。

实现带校验和的 callback-通知有两种方法

对称私钥
$symmetric_private_key = 'symmetric private key';

if ($order->isSymmetricKeyValidationSuccessful($symmetric_private_key)) {
    echo 'Подлинность данных подтверждена';
}
非对称公钥
$asymmetric_public_key = 'asymmetric public key';

if ($order->isAsymmetricKeyValidationSuccessful($asymmetric_public_key)) {
    echo 'Подлинность данных подтверждена';
}

关于通知类型的详细信息