Coder Social home page Coder Social logo

yookassa-sdk-php's People

Contributors

danielletto2020 avatar enotocode avatar eugenelozn avatar sashaspi avatar shokhaa avatar tonchik-tm avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

yookassa-sdk-php's Issues

Где инструкция по переходу?

Композер выдает предупреждения о переходе.
в старом модуле yoomoney/yandex-checkout-sdk-php история закончилась на версии 1.6.9.
здесь уже появилась 2.0.
Были какие то изменения?
или я просто поменяю на yoomoney/yookassa-sdk-php и ничего не сломается? не хотелось бы с платежами рисковать.

Обновления пакеты

Доброе времени суток!
Много фреймворки уже перешли на новый пакеты PSR логи!
Если устанавливать этот lib то тогда composer даёт ошибку:

Problem 1
- yoomoney/yookassa-sdk-php[2.1.0, ..., 2.1.6] require psr/log ^1.0 -> found psr/log[1.0.0, ..., 1.1.4] but the package is fixed to 2.0.0 (lock file version) by a partial update and that version does not match. Make sure you list it as an argument for the update command.
потому что у меня уже более новый версии psr/log

Значения `income_amount` и `test` не устанавливаются в PaymentsResponse

При получении списка платежей через getPayments() у объектов Payment в списке не устанавливается информация об income_amount и test, поэтому соотвествующие геттеры у таких объектов возвращают null.

Из API эти данные поступают, но не устанавливаются в YooKassa\Request\Payments\PaymentsResponse@__construct.

Ошибка Error code: invalid_request. Parameter name: receipt

Добрый день. Помогите, пожалуйста, разобраться с ошибкой.
Подключаю кассу к сайту Wordpress, но не хочу использовать Woocommerce. Поэтому написал плагин сам.
При создании платежа выводит ошибку.
изображение
Создание платежа:

<?php

/**
 * Template Name: Страница тестового платежа
 */

?>
<?php
require dirname( __FILE__, 3 ) . '/plugins/yoomoney-wp/includes/yookassa/lib/autoload.php';
use YooKassa\Client;
$client = new Client();
$client->setAuth(get_option('shopid'), get_option('secretkey'));

  $user_id = get_current_user_id();
  $user = get_userdata($user_id);
  //$price = the_field('premium_price', 'options');
  $price = 40;
  $return_url = get_option('tyurl');

  $wpdb->insert(
    $wpdb->prefix . "payments",
    array(
      'payment_user_id' => $user_id,
      'payment_amount' => $price,
      'payment_title' => 'Покупка Premium'
    ),
    array(
      '%d',
      '%d',
      '%s'
    )
  );
  $payment_id = $wpdb->insert_id;

  $payment_names = Array(
    1 => 'webmoney',
    2 => 'yandex_money',
    3 => 'qiwi',
    4 => 'bank_card',
    5 => 'bank_card',
    6 => '',
    7 => 'mobile_balance',
    8 => 'mobile_balance',
    9 => 'mobile_balance',
    10 => 'alfabank',
    11 => 'sberbank'
  );

    $idempotenceKey = uniqid('', true);
    $response = $client->createPayment(
        array(
            'amount' => array(
                'value' => $price,
                'currency' => 'RUB',
            ),
            'payment_method_data' => array(
                'type' => 'bank_card',
            ),
            'confirmation' => array(
                'type' => 'redirect',
                'return_url' => $return_url,
            ),
            "reciept" => array(
              "customer" => array(
                "full_name" => $user->first_name && $user->last_name ? $user->first_name . ' ' . $user->last_name : $user->user_login,
                "email" => '[email protected]'
              ),
              "items" => array(
                array(
                  "description" => 'Покупка Premium',
                  "quantity" => "1.00",
                  "amount" => array(
                    "value" => $price,
                    "currency" => "RUB"
                  ),
                  "vat_code" => "1",
                  "payment_mode" => "full_payment",
                  "payment_subject" => "service"
                )
              )
            ),
            'description' => 'Покупка Premium',
            'metadata' => array(
              'user_id' => $user_id,
              'payment_id' => $payment_id
            )
        ),
        $idempotenceKey
    );

    //get confirmation url
    $confirmationUrl = $response->getConfirmation()->getConfirmationUrl();
    $data['status'] = 200;
    $data['url'] = $confirmationUrl;
    echo json_encode($data);
    die();
    //header("Location: $confirmationUrl")

Метод me() не позволяет передать параметр 'on_behalf_of'

Класс: YooKassa\Client
Метод: me()
Решение ЮКасса для платформ предполагает возможность извлечения данных по продавцам платформы. Для этого существует query-параметр on_behalf_of для me() запроса. В SDK же данный параметр через метод me() передать нельзя, из-за того, что me() не принимает параметров в принципе (хотя в кишках он вызывает $this->execute, в который кладет null для $queryParams). Было бы неплохо дать возможность передавать $queryParams в метод me().

С этим SDK можно работать с YOOMONEY?

Внесите, пожалуйста, ясность, подходит ли этот SDK для работы не с юкассой, а с юмани, т.е. физическим лицам?
Если не подходит, то где SDK для юмани? Весь интернет перерыл, везде фигурирует юкасса.

Метод addRecieptItem не поддерживает передачу параметров Supplier и agentType

В классе AbstractPaymentRequestBuilder есть метод addRecieptItem (

public function addReceiptItem($title, $price, $quantity, $vatCode, $paymentMode = null, $paymentSubject = null)
) в который на данный момент невозможно передать информацию о поставщике товаров.

Я использую ваше расширение cms-prestashop и в модели Кассы (KassaModel.php) мне не хватает возможности передать информацию о поставщике товаров.

Подскажите, пожалуйста, когда можно ожидать обновление SDK и вашего модуля для PrestaShop?

П.с. Возможно, есть другой способ передеть эту информацию в чек, буду рад вашим предложениям :)

Баг с билдером и ценами товаров

Сейчас у меня вот такой пример: из-за умножения на 100.00 сумма товаров меньше на один 0, а товар считается нормально. Из-за чего происходит ошибка
image

        try {
            $builder = \YooKassa\Request\Payments\CreatePaymentRequest::builder();
            $builder->setAmount(100)
                ->setCurrency(\YooKassa\Model\CurrencyCode::RUB)
                ->setCapture(true)
                ->setDescription('Оплата заказа 112233');


            // Устанавливаем страницу для редиректа после оплаты
            $builder->setConfirmation(array(
                'type'      => \YooKassa\Model\ConfirmationType::REDIRECT,
                'returnUrl' => 'https://merchant-site.ru/payment-return-page',
            ));

            // Составляем чек
            $builder->setReceiptEmail('[email protected]');
            // Добавим товар
            $builder->addReceiptItem(
                'Тестовый товар',
                1000,
                1.0,
                2,
                'full_payment',
                'commodity'
            );

            // Создаем объект запроса
            $request = $builder->build();

            // Можно изменить данные, если нужно
            $request->setDescription($request->getDescription() . ' - merchant comment');

            $idempotenceKey = uniqid('', true);
            $response = $client->createPayment($request);

            //получаем confirmationUrl для дальнейшего редиректа
            $confirmationUrl = $response->getConfirmation()->getConfirmationUrl();
        } catch (\Exception $e) {
            $response = $e;
        }

image

переход с одной либы на другую

Доброй ночи.

Композер тут пишет что yandex пакет не актуален уже, и надо качать этот.

Собственно вопросик простой - кроме названия классов в коде надо еще что менять?

Очень мягко выражусь - не доволен я тем фактом что надо менять пакет для платежки, это ведь бабки.

Знаю знаю, все обещают мягко всех подготовить к переезду - ну ну.

Ладно давайте по существу, есть дока по миграции ? или все легко и просто и надо лишь сменить названия классов

После перехода на новый sdk не хватает типа платежей yandex_money

Этот тип все еще есть у оплат по которым приходит нотификации, в итоге падает:
Uncaught PHP Exception InvalidArgumentException: "Invalid payment method data type "yandex_money"" at vendor/yoomoney/yookassa-sdk-php/lib/Model/PaymentMethod/PaymentMethodFactory.php line 69 {"exception":"[object] (InvalidArgumentException(code: 0): Invalid payment method data type "yandex_money" at vendor/yoomoney/yookassa-sdk-php/lib/Model/PaymentMethod/PaymentMethodFactory.php:69)"} []

Как обработать текущие платежи? По которым приходит нотификация об оплате.

Примет нотификации:
[2021-01-12 11:15:49] POST ... body { "type" : "notification", "event" : "payment.succeeded", "object" : { "id" : "id", "status" : "succeeded", "paid" : true, "amount" : { "value" : "12364.00", "currency" : "RUB" }, "captured_at" : "2021-01-12T08:15:48.119Z", "created_at" : "2021-01-12T08:15:31.848Z", "description" : "description", "metadata" : { "transaction_id" : "", "shop_id" : "", "order_id" : "", "cms_name" : "", "scid" : "" }, "payment_method" : { "type" : "yandex_money", "id" : "", "saved" : false, "account_number" : "", "title" : "YooMoney wallet ..." }, "receipt_registration" : "pending", "recipient" : { "account_id" : "", "gateway_id" : "" }, "refundable" : true, "refunded_amount" : { "value" : "0.00", "currency" : "RUB" }, "test" : false } } [] []

Интересно что title YooMoney wallet а тип все еще yandex_money. Может не должно таких типов уже приходить?

No such module 'MoneyAuth' на iOS 14.3 Simulator. [MacBook Air M1]

Добрый день.
Получаю такую ошибку на MacBook M1, Simulator iOS 14.3, Xcode 12.3:

image
image

Хотя этот модуль скачался и подтянулся при установке подов:

image

podfile выглядит так:

image
image

На реальном устройстве запускается нормально.
На iOS 12.4 запускается нормально.

В чем может быть проблема?

Yookassa/Client class not found

Добрый день.

Перешел с Вашего старого SDK на этот после перехода на yookassa.

Почему-то получаю вот такую ошибку:
"message":"Class 'Yookassa\Client' not found"

При этом в IDE (PHPStorm) класс нормально отображается, и я в него без проблем могу перейти.

Используем Laravel 5.8.

Аналогичный решенный ISSUE я прочитал (#3), но у меня установлена версия Вашего SDK 2.0.3, в которой данной проблемы уже быть не должно.

Возможно, у Вас будут идеи, почему такое происходит?

Спасибо!

Как передать merchant_customer_id при создании платежа?

При создании платежа через метод createPayment, я передаю в массив merchant_customer_id, но SDK игнорирует это поле, так как в CreatePaymentRequest нет соответствующего метода.

Так же не принимаются transfers и deal. Все эти параметры были добавлены в API последними, видать до SDK обновление ещё не дошло.

Declaration of `LoggerWrapper::emergency()` is not compatible with PSR logger interface

I have the next error after migration from the yandex-checkout-sdk-php on PHP 8:

Declaration of YooKassa\Common\LoggerWrapper::emergency($message, array $context = []) must be compatible with Psr\Log\LoggerInterface::emergency(Stringable|string $message, array $context = []): void

I think it happens because the yandex-checkout-sdk-php used an older version of the psr/log package.

https://github.com/yoomoney/yandex-checkout-sdk-php/blob/master/composer.json#L10
https://github.com/yoomoney/yookassa-sdk-php/blob/master/composer.json#L20

Maybe it will be better to return back to "psr/log": "^1.0" to save PHP 5.3 as a minimal version?

Deals & payouts

Добрый день,
Сейчас разрабатываем функционал по работе с безопасными сделками через Юкассу. Обнаружили, что SDK Юкассы для php не умеет создавать сделки (deals) и совершать выплаты (payouts).

Рассмотрите ли вы pull request, содержащий перечисленный выше функционал?

Баг в подтверждении холдированного платежа

Добрый день,

При подтверждении холдированного (двухстадийного) платежа, в котором используется вознаграждение platform_fee_amount , происходит ошибка:

{
	"type": "error",
	"id": "****-****-***-****-******",
	"code": "invalid_request",
	"description": "invalid_request.marketplace.marketplace_fee_is_missing_on_capture",
	"parameter": "transfers.platform_fee_amount"
}

Ошибка происходит из-за отсутствия в методе serializeTransfers файла CreateCaptureRequestSerializer.php проверки на вознаграждение:

$item = array(
    'account_id' => $transfer->getAccountId(),
    'amount' => $this->serializeAmount($transfer->getAmount()),
);
if ($transfer->hasPlatformFeeAmount()) {
    $item['platform_fee_amount'] = $this->serializeAmount($transfer->getPlatformFeeAmount());
}
$result[] = $item;

Uncaught Error: Class 'YooKassa\Client' not found

В одной папке лежат 2 версии
libold - https://github.com/yoomoney/yandex-checkout-sdk-php
libnew - https://github.com/yoomoney/yookassa-sdk-php

если вызывать
require_once('libnew/autoload.php');
use YooKassa\Client;
$client = new Client();
То появляется ошибка - Fatal error: Uncaught Error: Class 'YooKassa\Client' not found in (строка $client = new Client();)

если вызывать старый sdk:
require_once('libold/autoload.php');
use YandexCheckout\Client;
$client = new Client();

То все работает как прежде. Протестировано на php 5.3 и на php 7.1 - одинаково выходит ошибка.

Класс NotificationCanceled ничего не обрабатывает

$payment = $app->make(YooKassaNotificationCanceled::class, ['source' => $request]);
$payment->getType() - ничего не возвращает
$payment->getObject() - ничего не возвращает

т.к. в классе нет конструктора. Заменив public function fromArray($source) на public function __construct(array $source) решило проблему.

Проблема с массивом items в getRefunds

var_dump($client->getRefunds()["items"]);
var_dump($client->getPayments()["items"]);
  1. Платежи работают.
  2. Возвраты возвращают следующее:
    Cannot use object of type YooKassa\Request\Refunds\RefundsResponse as array in

Как я могу получить список возвратов?

Баг при создании чека отмены платежа

Добрый день.
При создании чека отмены холдированного платежа (https://yookassa.ru/developers/solutions-for-platforms/split-payments/receipts#receipt-for-canceled-payment) происходит ошибка:
{ "type": "error", "id": "***", "code": "invalid_request", "description": "Refund not found or forbidden", "parameter": "refund_id" }

В методе serializeObjectId принудительно устанавливается поле refund_id вместо payment_id.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.