Paypal API «SALE» с кредитной карты?

При intent "sale" и недостатке средств на счете с дебетовой/кредитной карты транзакция зависает в статусе Pending, однако от API возвращается статус "Approved" на адрес для уведомлений об успешных транзакциях.
При intent "authorize", платеж вовсе не проходит тк на счету самой палки недостаточно средств и соответствующий ответ на адрес для уведомлений о деслайнах.

Баланс и форма чекаута у покупателя:
5a7adb50091b0524638669.jpeg
Ответ от API:
[id] => PAY-9VD59644JG3152130LJ5NP7Q
            [intent] => sale
            [state] => approved
            [cart] => 92218227XS712373V
            [payer] => 
                [payment_method] => paypal
                [status] => VERIFIED
                [payer_info] => 
                    [first_name] => test
                    [last_name] => buyer
                    [payer_id] => MJA9PZBA7P3MU
                    [phone] => 0364000744
                    [country_code] => AU                  
            [transactions] => 
                [amount] => 
                    [total] => 300001.00
                    [currency] => RUB
                    [details] => 
                    [subtotal] => 300001.00
                        [related_resources] => 
                             [sale] => 
                                   [id] => 41X4634152521762D
                                   [state] => pending
                                   [payment_mode] => ECHECK
                                   [reason_code] => ECHECK
                                   [protection_eligibility] => INELIGIBLE
                                   [parent_payment] => PAY-9VD59644JG3152130LJ5NP7Q

У продавца:
5a7adb7e315b4826760330.png

Данную транзакцию в итоге не отменить, не рефунднуть.
Как быть в таком случае?
  • Вопрос задан
  • 130 просмотров
Решения вопроса 1
elevennine
@elevennine Автор вопроса
В общем это походу какой то баг самого SDK на пыхе.
Т.к. с помощью клиентского чекаута через их же JS нормально реджектится.

Для уверенности применил авторизацию с последующим чарджем.
Вначале юзер подтверждает намерение покупки через нажатие ссылки чекаут.
Получая токен, создаю временную форму и открываю диалог на клиенте, в ответ принимаю id платежа и сумму.
После этого сумма замораживается на счете юзера, а платеж зависает в статусе пендинг.
Принимаю платеж "вручную" через API используя текущий id чекаута.

Если средств в данном случае будет недостаточно или платеж будет отклонен банком, статус из пендинг самостоятельно перейдет в реджектед.
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 1
@Firik67
Middle PHP Developer
Если платеж уже выполнен, то ждать 3-4 дня, пока он не завершится. Выход в целом я вижу такой - запретить echeck платежи
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы