Integracja PayPal - pytania

0

Witam wszystkich!
Siema Dzek (bo pewnie odpiszesz z pomocą) :)

Czytałem inne wątki na tym forum odnośnie integracji, jednak mam pewne niejasności. Założyłem konto testowe, dokonałem opłaty oraz otrzymałem wpłatę i tu pojawiają się pytania, a mianowicie:

  1. Wartość zapłaty wynosiła 9,00 zł a na konto wpłynęło 7,94 zł. PayPal pobiera prowizję za każdy przelew?
  2. Aby uzyskać odpowiedź z PayPal czy wpłata została zrealizowana należy podać w formularzu input name="return" i przypisać mu odpowiedni url. Następnie po dokonaniu wpłaty i kliknięciu w link, aby przeniosło użytkownika z powrotem na stronę (jeśli nie kliknie to nie przeniesie a i tak wpłata została dokonana) przenosi nas na url z return. No i co dalej? W url nie dostaję nic dodatkowego.
  3. Jeśli po dokonaniu wpłaty nie kliknę w link "przenieś mnie z powrotem na stronę", a dokonałem wpłaty to jak mam weryfikować czy wpłata została dokonana ?
  4. To jedyny sposób na sprawdzanie wpłaty? input name="return"?
  5. Czy system PayPal informuje posiadacza konta, na które została dokonana wpłata, że ją otrzymał? Istnieje pole w formularzu, które jest numerem zamówienia i po dokonaniu wpłaty PayPal zwraca email z numerem zamówienia, że zostało ono opłacone?

Znalazłem informację, że można włączyć w ustawieniach konta opcję auto-return, aby po zakończeniu transakcji, automatycznie przekierowywało na stronę podaną w return url. Jednak na koncie testowym nie ma takiej opcji.

Mam nadzieję, że opisałem to dość jasno.
Proszę o pomoc.
Pozdrawiam.

1
  1. tak, paypal nie jest instytucją charytatywną, a Ty jak bierzesz się za obrót pieniędzmi, to powinieneś przeczytać chociaż część "cennik" z regulaminu usług..

  2. paypal wyśle Ci na adres IPN info o transakcji, gdy płatność dojdzie (lub nie)

  3. się w z tym wiąże - dopisuj sobie do return url tylko jakieś id transakcji (Twoje własne), a samo sprawdzenie będziesz miał w tle (a jak nie, to zawsze możesz ręcznie je zweryfikować w momencie powrotu na return url)

  4. return NIE służy do sprawdzania wpłat, do tego jest IPN

  5. cholera wie, poszukaj w dokumentacji ;) kupujący na pewno dostaje

generalnie:
dokumentacja, instrukcja, manual - czytaj

a dwa - są gotowe klasy do obsługi płatności paypal - ułatwi Ci to implementację

0

Chcesz powiązać swoją strone z paypal i nawet nie wiesz że pobierają oni prowizję? Nie czytałeś regulaminu?

0

Dzięki Dzek.
Rzuć jeszcze okiem na pkt 2.

  1. Nie biorę się tylko klient, więc nie sprawdzałem cennika, ale pytanie zadałem dla potwierdzenia. Nawet przez chwilę nie zwątpiłem, że tym razem zabraknie uszczypliwości z Twojej strony :)
  2. Podsumowując: podaje return url, który jest tylko adresem strony, do której PayPal przekierowuje mnie gdy transakcja się powiodła. IPN, do którego prowadzi notify_url, jest wywoływany przez PayPal wtedy gdy wpłata zostanie zrealizowana. Nie musi być to ten sam moment co powodzenie transakcji. System PayPal automatycznie odpali url w momencie dokonania wpłaty. Tak?

Klasą wspomogę się przy IPN. Interesuje mnie tylko pomoc w otrzymaniu informacji, że wpłata została dokonana. Resztę mam.

1
  1. Tak
0

Udało mi się ogarnąć ten IPN, ale jednej sprawy nie rozumiem.
W przykładzie klasy, którą znalazłem, jeśli weryfikacja przeszła ok to jest użyta funkcja na sprawdzenie ceny i txn_id, czyli unikatowego id, które przysyła PayPal tak?
I tego nie rozumiem ;] Skoro weryfikacja przebiegła już poprawnie to po co jest sprawdzany txn_id i to jeszcze w mojej bazie? Skąd ten id ma być w mojej bazie jeśli generuje go PayPal.
wycinek kodu:

// post back to PayPal system to validate
    $header .= "POST /cgi-bin/webscr HTTP/1.0\r\n";
    $header .= "Host: www.sandbox.paypal.com\r\n";
    $header .= "Content-Type: application/x-www-form-urlencoded\r\n";
    $header .= "Content-Length: " . strlen($req) . "\r\n\r\n";
    $fp = fsockopen ('ssl://www.sandbox.paypal.com', 443, $errno, $errstr, 30);
    if (!$fp) {
        // HTTP ERROR
    } else {
                mail('[email protected]', '0', '0');
        fputs ($fp, $header . $req);
        while (!feof($fp)) {
            $res = fgets ($fp, 1024);
            if (strcmp ($res, "VERIFIED") == 0) {
                // Validate payment (Check unique txnid & correct price)
                $valid_txnid = check_txnid($data['txn_id']);
                $valid_price = check_price($data['payment_amount'], $data['item_number']);
                if($valid_txnid && $valid_price){
.......................

Chyba, że txnid nie jest tym, czym zrozumiałem, że jest.

0

Nie pamiętam już po co było konkretnie to ID, ale weryfikację odsyłasz do paypala, żeby mieć pewność, że paypal był pierwotnym nadawcą potwierdzenia ;] (bo ja mógłbym dowiedzieć się, gdzie przyjmujesz info o płatnościach i wysłać Ci fałszywy komunikat).

0

Dzek, to jest dla mnie jasne.
Ale w miejscu gdzie jest sprawdzany warunek

if (strcmp ($res, "VERIFIED") == 0)

Sprawdzane jest czy weryfikacja przebiegła pomyślnie, tak? A następnie sprawdzany jest txn_id, po tym jak weryfikacja już się odbyła. Jest tak czy źle to rozumiem? Bo to sprawdzanie txn_id miesza mi logikę.

1

hm, zakładam, że po prostu tym sprawdzasz czy płatność dotyczy tej transakcji, czy innej (bodajże masz dwa różne ID, gdzie jedno jest nieznane użytkownikowi), żeby znowu nie było tak, że user do drugiej transakcji wyśle potwierdzenie z pierwszej, ty zweryfikujesz że płatność jest ok, ale nie odnotujesz, że to do transakcji, która już się odbyła.

ani tego nie pamiętam, ani nie mam funkcji check_txnid, żeby coś więcej powiedzieć.

skoro tak masz zrobione w klasie do obsługi to zapewne tak ma być :p więcej weryfikacji jest lepsze niż mniej :p

0

Nie masz i nie musisz mieć funkcji check_txnid, tak jak pisałem sprawdza w bazie czy jest to id.
No dobra Dzek ! Zostawiam tak jak jest. Miłego popołudnia.
Pozdro

1 użytkowników online, w tym zalogowanych: 0, gości: 1