2017 © Pedro Peláez
 

library yakassa

Yandex.Kassa payments

image

appwilio/yakassa

Yandex.Kassa payments

  • Thursday, February 22, 2018
  • by JhaoDa
  • Repository
  • 7 Watchers
  • 27 Stars
  • 1,236 Installations
  • PHP
  • 0 Dependents
  • 0 Suggesters
  • 1 Forks
  • 0 Open issues
  • 5 Versions
  • 16 % Grown

The README.md

Пакет для работы с Юмани.Кассой (бывшая Яндекс.Касса)

Latest Version on Packagist Testing Quality Score Code Coverage StyleCI Total Downloads License MIT , (*1)

Ранняя альфа, использовать осторожно!, (*2)

Возможности:, (*3)

  • создание платёжной формы;
  • передача данных согласно 54-ФЗ;
  • обработка уведомлений checkOrder и paymentAviso.

Требования:, (*4)

  • php >= 7.1
  • Laravel >= 5.3

Установка

composer require appwilio/yakassa

Подключение сервис-провайдера:, (*5)

// config/app.php
'providers' => [
    ...
    Appwilio\YaKassa\YaKassaServiceProvider::class,
],

Настройки:, (*6)

Описание параметров., (*7)

// config/services.php
...
'yakassa' => [
    'test_mode'     => env('YAKASSA_TEST_MODE', true),
    'shop_id'       => env('YAKASSA_SHOP_ID', ''),
    'showcase_id'   => env('YAKASSA_SHOWCASE_ID', ''),
    'shop_password' => env('YAKASSA_SHOP_PASSWORD', ''),        
],
...

Подготовка основных данных для платёжной формы

Заказ должен имплементировать интерфейс \Appwilio\YaKassa\Contracts\YaKassaOrder:, (*8)

use Appwilio\YaKassa\Contracts\YaKassaOrder;

class Order implements YaKassaOrder
{
    public function getOrderSum(): float
    {
        return $this->total;
    }

    public function getCustomerNumber(): string
    {
        return $this->customer->id;
    }

    public function getOrderNumber(): ?string
    {
        return $this->id;
    }

    public function getPaymentType(): ?string
    {
        return 'PC';
    }

    public function getCustomerEmail(): ?string
    {
        return $this->customer->email;
    }

    public function getCustomerPhone(): ?string
    {
        return $this->customer->phone;
    }
}

Дополнительные данные согласно требованиям 54-ФЗ

Внимание! Протокол дополняется, текущая версия 2.1. Общая информация, описание изменений., (*9)

Заказ должен имплементировать интерфейс \Appwilio\YaKassa\Contracts\YaKassaOrder54FZ:, (*10)

use Appwilio\YaKassa\Contracts\YaKassaOrder54FZ;

class Order implements YaKassaOrder54FZ
{
    public function getOrderSum(): float
    {
        return $this->total;
    }

    public function getCustomerNumber(): string
    {
        return $this->customer->id;
    }

    public function getItems(): iterable
    {
        return $this->items; // товары/услуги в заказе
    }

    public function getTaxSystem(): ?int
    {
        return YaKassaOrder54FZ::TAX_OSN;
    }

    public function getCustomerContact(): string
    {
        return $this->customer->phone;
    }

    public function getOrderNumber(): ?string
    {
        return $this->id;
    }

    public function getPaymentType(): ?string
    {
        return 'PC';
    }

    public function getCustomerEmail(): ?string
    {
        return $this->customer->email;
    }

    public function getCustomerPhone(): ?string
    {
        return $this->customer->phone;
    }
}

Каждая позиция заказа должна имплементировать интерфейс \Appwilio\YaKassa\Contracts\YaKassaOrderItem54FZ:, (*11)

use Appwilio\YaKassa\Contracts\YaKassaOrderItem54FZ;

class OrderItem implements YaKassaOrderItem54FZ
{
    public function getAmount(): float
    {
        return $this->amount;
    }

    public function getQuantity(): float
    {
        return $this->quantity;
    }

    public function getTaxRate(): int
    {
        return YaKassaOrderItem54FZ::VAT_18;
    }

    public function getCurrency(): ?string
    {
        return null; // равнозначно RUB
    }

    public function getTitle(): string
    {
        return $this->product->title;
    }
}

Создание платёжной формы

В контролллере:, (*12)

use Appwilio\YaKassa\YaKassa;

class OrdersController
{
    public function showPaymentForm(YaKassa $kassa, $orderId)
    {
        $order = Order::find($orderId);

        $paymentForm = $kassa->buildPaymentForm($order);

        return view('payment', ['form' => $paymentForm]);
    }    
}

В шаблоне:, (*13)

<form method="POST" action="{{ $form->getPaymentUrl() }}">
    @foreach ($form->toArray() as $k => $v) 
        <input type="hidden" name="{{ $k }}" value="{{ $v }}" />
    @endforeach

    ...
</form>

Обработка уведомлений

Общее описание механизма уведомлений, (*14)

```php use Appwilio\YaKassa\YaKassa;, (*15)

class YaHookController extends Controller { public function checkOrder(YaKassa $kassa) { $order = Order::find($kassa->getRequest()->getOrderNumber());, (*16)

    if (! $order) {
        return $kassa->responseDeclined();
    }

    // используем реальное значение суммы заказа, а не присланное Я.Кассой
    $kassa->setGenuineOrderSumAmount($order->total);

    if (! $kassa->verify()) {
        return $kassa->responseUnauthorized();
    }

    return $kassa->responseAccepted();
}

}, (*17)

The Versions

22/02 2018

v2.x-dev

2.9999999.9999999.9999999-dev

Yandex.Kassa payments

  Sources   Download

MIT

The Requires

 

The Development Requires

laravel payments yandex яндекс яндекс.касса

12/09 2017

dev-master

9999999-dev

Yandex.Kassa payments

  Sources   Download

MIT

The Requires

 

The Development Requires

laravel payments yandex яндекс яндекс.касса

12/09 2017

v0.1-alpha.3

0.1.0.0-alpha3

Yandex.Kassa payments

  Sources   Download

MIT

The Requires

 

The Development Requires

laravel payments yandex яндекс яндекс.касса

27/06 2017

v0.1-alpha.2

0.1.0.0-alpha2

Yandex.Kassa payments

  Sources   Download

MIT

The Requires

 

The Development Requires

laravel payments yandex яндекс яндекс.касса

14/06 2017

v0.1-alpha.1

0.1.0.0-alpha1

Yandex.Kassa payments

  Sources   Download

MIT

The Requires

 

The Development Requires

laravel payments yandex яндекс яндекс.касса