Skip to content

Latest commit

 

History

History
70 lines (50 loc) · 2.58 KB

README.md

File metadata and controls

70 lines (50 loc) · 2.58 KB

YandexKassa

Build Status Minimum PHP Version Coverage Status Total Downloads Latest Stable Version License

Helper for yandex kassa, helps handling callbacks and requests.

Installation

composer require tigr/yandex-kassa

Usage

  1. Create controllers that would handle yandex kassa requests and do something like this in it:
<?php

   use TiGR\YandexKassa\YandexKassaHelper;
   use TiGR\YandexKassa\Exception\AuthorizationErrorException;
   use TiGR\YandexKassa\Exception\BadRequestException;

   $helper = new YandexKassaHelper(KASSA_SHOP_ID, KASSA_SHOP_PASSWORD);

   $errorStatus = YandexKassaHelper::STATUS_BAD_REQUEST;

   if ($helper->isCheckOrderAction()) {
       $errorStatus = YandexKassaHelper::STATUS_PAYMENT_REJECTED;
   }

   try {
       $helper->parseRequest($_POST);
   } catch (AuthorizationErrorException $e) {
       // ... handle this exception ...

       return $this->xmlResponse($helper->buildResponse(null, $e->getMessage()));
   } catch (BadRequestException $e) {
       // ... handle this exception ...

       return $this->xmlResponse($helper->buildResponse(null, $e->getMessage()));
   } catch (\Exception $e) {
       // ... handle this exception ...

       return $this->xmlResponse($helper->buildResponse($errorStatus));
   }

   try {
       $payment = $helper->getPayment();

       // ... do some validation using $payment data ...

       if ($helper->isPaymentAvisoAction()) {
           // ... Mark this payment as settled in your system ...
           // ... log successful transaction, if needed ...
           // ... notify user of successful transaction. if needed ...
       }

       return $this->xmlResponse($helper->buildResponse(/* successful by default */));
   } catch (\Exception $e) {
       // ... handle this exception ...

       return $this->xmlResponse(
           $helper->buildResponse(YandexKassaHelper::STATUS_PAYMENT_REJECTED, $e->getMessage())
       );
   }