Модераторы: skyboy, MoLeX, Aliance, ksnk
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Проблема с подтверждением платежа Paypal 
:(
    Опции темы
kaktebe
Дата 17.10.2013, 21:28 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 50
Регистрация: 23.1.2012

Репутация: нет
Всего: нет



Всем привет.
Пытаюсь сделать оплату на сайте через Paypal.
Сделал форму, настроил 2 учётки в песочнице, привязал к ним карты тестовые, делаю тестовые платежи в песочнице, но потом пишется, что для подтверждения платежа было отправлено письмо на почту, но никакого письма не приходит и соответственно платёж идёт с неподтверждёённым статусом.
Форма отправки такая:

Код

                    <form method="post" action="https://www.sandbox.paypal.com/cgi-bin/webscr" id="paypal_form">
                        <input type="hidden" name="cmd"             value="_xclick" />
                        <input type="hidden" name="business"        value="[email protected]" />
                        <input type="hidden" name="item_name"       value="Test payment" />
                        <input type="hidden" name="item_number"     value="777" />
                        <input type="hidden" name="amount"          value="1.99" />
                        <input type="hidden" name="return"          value="http://myhost.com//successpaypal.php" />
                        <input type="hidden" name="cancel_return"   value="http://myhost.com/cancelpaypal.php" />
                        <input type="hidden" name="no_shipping"     value="0" />
                        <input type="hidden" name="rm"              value="2" />
                        <input type="hidden" name="currency_code" value="USD" />
                        <input type="submit" value="Go to PayPal" />
                    </form>


Что в ней не так? Можно как-то убрать подтверждение по почте? Ведь так платёж может идти сутки, а пользователь должен перейти на страницу, где ему отдастся то, за что он деньги заплатил.
PM MAIL   Вверх
ksnk
Дата 17.10.2013, 22:10 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


прохожий
****


Профиль
Группа: Комодератор
Сообщений: 6855
Регистрация: 13.4.2007
Где: СПб

Репутация: 96
Всего: 386



Цитата(kaktebe @  17.10.2013,  21:28 Найти цитируемый пост)
Что в ней не так? 

 value="[email protected]" почтовый адрес правильный?
value="http://myhost.com//successpaypal.php" - адрес ответный правильный? Сайт из интернета виден?

Вообще-то в PayPal довольно подробные примеры и относительно простой интерфейс. Особенно, если не выпендриваться со своими методами доступа к сервису, а пользоваться родными paypal'овскими библиотеками.

https://github.com/paypal/adaptivepayments-sdk-php


--------------------
Человеку свойственно ошибаться, программисту свойственно ошибаться профессионально ! user posted image
PM MAIL WWW Skype   Вверх
kaktebe
Дата 17.10.2013, 22:18 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 50
Регистрация: 23.1.2012

Репутация: нет
Всего: нет



Цитата(ksnk @ 17.10.2013,  22:10)
Цитата(kaktebe @  17.10.2013,  21:28 Найти цитируемый пост)
Что в ней не так? 

 value="[email protected]" почтовый адрес правильный?
value="http://myhost.com//successpaypal.php" - адрес ответный правильный? Сайт из интернета виден?

Вообще-то в PayPal довольно подробные примеры и относительно простой интерфейс. Особенно, если не выпендриваться со своими методами доступа к сервису, а пользоваться родными paypal'овскими библиотеками.

https://github.com/paypal/adaptivepayments-sdk-php

Да, почта и ссылка правильные, указал те для примера. Платёж проходит и на страницу могу вернуться, но платёж Unverified и на почту не приходит письмо, хотя на странице оплаты пишется, что письмо отправлено. Так с нескольких адресов и нескольких компов уже дня 3 продолжается в песочнице.
PM MAIL   Вверх
Nett
Дата 17.10.2013, 23:01 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 12
Регистрация: 20.5.2008

Репутация: нет
Всего: 1



Обычно для способа оплаты через кнопку, в форме используют такое поле как:

Код

<input type="hidden" name="notify_url" value="URL_to_process_ipn" />
 

IPN  - instant payment notification.
Данное оповещение отправляется при каждой покупке, и несёт в себе полную информацию о платеже.

В дальнейшем можно отправить встречный запрос о состоянии платежа. Так-же, если не ошибаюсь, могут быть некоторые неполадки из-за настроек аккаунта продавца (например валюта в которой принимается платёж).

Этот ответ добавлен с нового Винграда - http://vingrad.com
PM MAIL WWW   Вверх
kaktebe
Дата 18.10.2013, 09:41 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 50
Регистрация: 23.1.2012

Репутация: нет
Всего: нет



Цитата(Nett @ 17.10.2013,  23:01)
Обычно для способа оплаты через кнопку, в форме используют такое поле как:

Код

<input type="hidden" name="notify_url" value="URL_to_process_ipn" />
 

IPN  - instant payment notification.
Данное оповещение отправляется при каждой покупке, и несёт в себе полную информацию о платеже.

В дальнейшем можно отправить встречный запрос о состоянии платежа. Так-же, если не ошибаюсь, могут быть некоторые неполадки из-за настроек аккаунта продавца (например валюта в которой принимается платёж).

Этот ответ добавлен с нового Винграда - http://vingrad.com

Так состояние приходит на ссылку в return. Не приходит письмо с подтверждением платежа и платёж с непроверенным статусом идёт.
PM MAIL   Вверх
fics
Дата 18.10.2013, 10:13 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 218
Регистрация: 21.2.2008
Где: Луганск

Репутация: нет
Всего: нет



А что это за адрес? http://myhost.com//successpaypal.php
зачем // - после хоста?
--------------------
Ушел на пары
PM MAIL   Вверх
kaktebe
Дата 18.10.2013, 10:28 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 50
Регистрация: 23.1.2012

Репутация: нет
Всего: нет



Цитата(fics @ 18.10.2013,  10:13)
А что это за адрес? http://myhost.com//successpaypal.php
зачем // - после хоста?

Да то параметры я все для примера привёл. Там не в этом проблема, а в том что не приходит подтверждение. Почта правильная, на неё зачисляется платёж, ссылки return и cancel_return тоже правильные, т.к. с песочницы по ним переходит правильно. Но не приходит подтверждение платежа на почту. Так вот это временный глюк или что-то надо к форме добавить и есть ли возможность отключить это подтверждение?
PM MAIL   Вверх
ksnk
Дата 21.10.2013, 16:09 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


прохожий
****


Профиль
Группа: Комодератор
Сообщений: 6855
Регистрация: 13.4.2007
Где: СПб

Репутация: 96
Всего: 386



kaktebe, в песочнице почта не отправляется. На то она и песочница.


--------------------
Человеку свойственно ошибаться, программисту свойственно ошибаться профессионально ! user posted image
PM MAIL WWW Skype   Вверх
kaktebe
Дата 25.10.2013, 23:12 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 50
Регистрация: 23.1.2012

Репутация: нет
Всего: нет



Цитата(ksnk @ 21.10.2013,  16:09)
kaktebe, в песочнице почта не отправляется. На то она и песочница.

А как тогда платёж подтверждать и сделать страницу success.php с проверкой платежа?
PM MAIL   Вверх
ksnk
Дата 26.10.2013, 09:17 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


прохожий
****


Профиль
Группа: Комодератор
Сообщений: 6855
Регистрация: 13.4.2007
Где: СПб

Репутация: 96
Всего: 386



простой платеж (как в магазине) выглядит, imho, так
  •  в момент, когда информация о юзере получена и выставлямый ему счет фиксирован, находимся на странице /order вызываем
    Код

    $service = new AdaptivePaymentsService(...);
    try {
     /* wrap API method calls on the service object with a try catch */
         $response = $service->Pay(...)

    ...

    Здесь запоминаем в сессии $response->payKey. и переходим на PayPal.
    в результате получим переход либо по адресу /success?order=ORDER_ID, либо по адресу /cancel?order=ORDER_ID. 
  •  на странице success и на странице cancel выполняем запрос в PayPal о проверке проведенного платежа
    Код

    $requestEnvelope = new RequestEnvelope("en_US");
    $paymentDetailsReq = new PaymentDetailsRequest($requestEnvelope);

    $paymentDetailsReq->payKey = $payKey;
    $ack = strtoupper($response->responseEnvelope->ack);
    if($ack != "SUCCESS"){
        echo "<b>Error </b>";
        
    } else {
    // $response->status

    /*
     *             The status of the payment. Possible values are:
     * CREATED - The payment request was received; funds will be
     *             transferred once the payment is approved
     * COMPLETED - The payment was successful
     * INCOMPLETE - Some transfers succeeded and some failed for a
     *             parallel payment or, for a delayed chained payment, secondary
     *             receivers have not been paid 
     * ERROR - The payment failed and all attempted transfers failed
     *             or all completed transfers were successfully reversed
     * REVERSALERROR - One or more transfers failed when attempting
     *             to reverse a payment
     * PROCESSING - The payment is in progress
     * PENDING - The payment is awaiting processing
     */

    }


  •  Отмечаем заказ в соответствии со статусом и перенаправляемся на страницу /order. Либо повторить попытку оплаты, либо поздравить покупателя с покупкой, либо еще что умное сказать.



Это сообщение отредактировал(а) ksnk - 26.10.2013, 09:20


--------------------
Человеку свойственно ошибаться, программисту свойственно ошибаться профессионально ! user posted image
PM MAIL WWW Skype   Вверх
kaktebe
Дата 27.10.2013, 02:31 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 50
Регистрация: 23.1.2012

Репутация: нет
Всего: нет



Цитата(ksnk @ 26.10.2013,  09:17)
простой платеж (как в магазине) выглядит, imho, так

  •  в момент, когда информация о юзере получена и выставлямый ему счет фиксирован, находимся на странице /order вызываем
    Код

    $service = new AdaptivePaymentsService(...);
    try {
     /* wrap API method calls on the service object with a try catch */
         $response = $service->Pay(...)

    ...

    Здесь запоминаем в сессии $response->payKey. и переходим на PayPal.
    в результате получим переход либо по адресу /success?order=ORDER_ID, либо по адресу /cancel?order=ORDER_ID. 

  •  на странице success и на странице cancel выполняем запрос в PayPal о проверке проведенного платежа
    Код

    $requestEnvelope = new RequestEnvelope("en_US");
    $paymentDetailsReq = new PaymentDetailsRequest($requestEnvelope);

    $paymentDetailsReq->payKey = $payKey;
    $ack = strtoupper($response->responseEnvelope->ack);
    if($ack != "SUCCESS"){
        echo "<b>Error </b>";
        
    } else {
    // $response->status

    /*
     *             The status of the payment. Possible values are:
     * CREATED - The payment request was received; funds will be
     *             transferred once the payment is approved
     * COMPLETED - The payment was successful
     * INCOMPLETE - Some transfers succeeded and some failed for a
     *             parallel payment or, for a delayed chained payment, secondary
     *             receivers have not been paid 
     * ERROR - The payment failed and all attempted transfers failed
     *             or all completed transfers were successfully reversed
     * REVERSALERROR - One or more transfers failed when attempting
     *             to reverse a payment
     * PROCESSING - The payment is in progress
     * PENDING - The payment is awaiting processing
     */

    }



  •  Отмечаем заказ в соответствии со статусом и перенаправляемся на страницу /order. Либо повторить попытку оплаты, либо поздравить покупателя с покупкой, либо еще что умное сказать.

В первом блоке что-то вообще ничего не понял. Что там делается такое?
Во втором там paypal должен прислать форму постом вроде бы. Но если платёж через мыло, тогда как?
PM MAIL   Вверх
ksnk
Дата 27.10.2013, 11:44 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


прохожий
****


Профиль
Группа: Комодератор
Сообщений: 6855
Регистрация: 13.4.2007
Где: СПб

Репутация: 96
Всего: 386



Я говорю об AdaptivePayments. У PayPal есть to какие то варианты интерфейса, но мне подошел именно он.
Я пользуюсь вот этим https://github.com/paypal/adaptivepayments-sdk-php. Там и описаны эти классы (PaymentDetailsRequest,AdaptivePaymentsService с сопутствующей требухой).

Цитата(kaktebe @  27.10.2013,  02:31 Найти цитируемый пост)
paypal должен прислать форму постом вроде бы

Нет, не так.
  •  Сначала сайт собирает информацию о покупателе, для доставки товара - адрес, телефон, емейл и т.д., в зависимости от выбранной формы доставки.
  •  Потом, в POST, когда все поля признаны корректными, проводится опрос PayPal сервера методом AdaptivePaymentsService .. ->Pay()..
  •  После опроса (в том-же POST, что и предыдущий пункт) делаем header('location:..'); на Paypal сервер. 
  •  После этого юзер находится на сервере PayPal и платит туда, куда было написано при вызове ->Pay
  •  После окончания оплаты сервер перенаправляет юзера на страницу /succes или /cancel. Таким образом, юзер запрашивает у нашего уже сервера именно эти страницы.
  •  При получении этих страниц нужно сделать запрос PayPal'у с проверкой платежа. После проверки можно понять - оплачен ли платеж на самом деле или нет.
последний пункт важен, так как без него появляется возможность "обмануть" сервер, перейдя сразу (в адресной строке) на страницу success.

Добавлено через 14 минут и 36 секунд
Цитата(kaktebe @  27.10.2013,  02:31 Найти цитируемый пост)
В первом блоке что-то вообще ничего не понял. Что там делается такое?


Это все написано в примерах к sdk. 
...samples/SimpleSamples/SimplePay.php




--------------------
Человеку свойственно ошибаться, программисту свойственно ошибаться профессионально ! user posted image
PM MAIL WWW Skype   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "PHP"
Aliance
IZ@TOP
skyboy
SamDark
MoLeX

Новичкам:

  • PHP редакторы собираются и обсуждаются здесь
  • Электронные книги по PHP, документацию можно найти здесь
  • Интерпретатор PHP, полную документацию можно скачать на PHP.NET

Важно:

  • Не брезгуйте пользоваться тегами [code=php]КОД[/code] для повышения читабельности текста/кода.
  • Перед созданием новой темы воспользуйтесь поиском и загляните в FAQ
  • Действия модераторов можно обсудить здесь

Внимание:

  • Темы "ищу скрипт", "подскажите скрипт" и т.п. будут переноситься в форум "Web-технологии"
  • Темы с именами: "Срочно", "помогите", "не знаю как делать" будут УДАЛЯТЬСЯ

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, IZ@TOP, skyboy, SamDark, MoLeX, awers.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | PHP: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.1509 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.