![]() |
![]() ![]() |
![]() |
![]()
Post
#1
|
|
Grupa: Zarejestrowani Postów: 71 Pomógł: 1 Dołączył: 21.01.2013 Ostrzeżenie: (0%) ![]() ![]() |
Witajcie,
Natknąłem się na pewien problem z którym nie mogę sobie poradzić. Pytanie do osób, które miały już styczność z podłączaniem i testowaniem płatności PayPal. Mam do dyspozycji skrypt systemu depozytów z codecanyon http://codecanyon.net/item/deposit-system/59753 i chciałbym go dostosować do własnych potrzeb. Działa on na takiej zasadzie, że wysyła następujący formularz:
na adres: https://www.sandbox.paypal.com/cgi-bin/webscr?cmd=_flow&SESSION=...&dispatch=... Niestety nie wiem co dalej. Po wypełnieniu formularza pojawia się informacja że płatność została zaakceptowana, na podany adres e-mail przyjdzie potwierdzenie, a niestety nie działa to tak jak powinno, tj. nie wysyła maila i nie zapisuje w systemie płatności. Muszę przetestować czy ten system działa, ale jak na razie nie wiem jak. To czego potrzebuję, to informacja na temat tego jakie API wykorzystuje podana wyżej metoda i gdzie szukać dokumentacji do niej (PayPal oferuje dziesiątki różnych API i trudno się połapać, a nigdy wcześniej nie korzystałem z tego systemu). |
|
|
![]()
Post
#2
|
|
Grupa: Zarejestrowani Postów: 16 Pomógł: 5 Dołączył: 31.12.2014 Ostrzeżenie: (0%) ![]() ![]() |
akurat to co używasz to PayPal Standard : http://irytek.com/paypal_standard_html.html i nie wymaga ani nie wykorzystuje żadnych wywołań API.
Wracając do Twojego problemu to: 1. wejdź na stronę: developer.paypal.com, zaloguj się tam używając swojego konta PayPal i stwórz 2 konta sandboxowe: business oraz personal. Adresy mailowe nie muszą istnieć gdyż maile przychodzą na wirtualną skrzynkę w sandboxe. 2. w twoim formularzu pod business podaj adres email twojego sandboxowego konta businessowego 3. płatność dokonaj twoim sandboxowym kontem personal Wiadomości przesłane po zapłacie znajdziesz wchodząc na developer.paypal.com -> sandbox accoutns -> kliknij na adres mailowy konta które chcesz sprawdzić -> nofitications dokumentacja paypal jest również pod linkiem developer.paypal.com Po dokonaniu płatności na adres wskazany w notify_url przyjdzie powiadomienie o płatności jako $_POST (http://irytek.com/IPN_instant_payment_notification.html) daj znać jeśli potrzebujesz więcej wskazówek. Ten post edytował irytek 8.01.2015, 13:06:42 |
|
|
![]()
Post
#3
|
|
Grupa: Zarejestrowani Postów: 71 Pomógł: 1 Dołączył: 21.01.2013 Ostrzeżenie: (0%) ![]() ![]() |
Świetnie, to było coś czego szukałem!
Zastanawiam się jednak jak obsłużyć i zweryfikować przesłane przez PayPal dane. Chodzi przede wszystkim o bezpieczeństwo, poprzez weryfikację czy nadesłane dane pochodzą ze strony PayPal czy nie. W poniższym kodzie program dochodzi wyłącznie do BREAKPOINTów 1 i 6 (linie: 31 i 81), pozostałe omija, nie wiem dlaczego...
Ten post edytował ZaqU 8.01.2015, 21:08:26 |
|
|
![]()
Post
#4
|
|
Grupa: Zarejestrowani Postów: 16 Pomógł: 5 Dołączył: 31.12.2014 Ostrzeżenie: (0%) ![]() ![]() |
Hejki,
to jest bardzo stary listener. Powinien zadziałać jeśli zmienisz HTTP NA 1.1 w linii 22 oraz 41 $res zmień na trim($res). Jednakże proponuje wykorzystać curla i oficjalny kod listnera: https://github.com/paypal/ipn-code-samples/.../paypal_ipn.php Sprawdzi tylko czy masz curl włączony.
|
|
|
![]()
Post
#5
|
|
Grupa: Zarejestrowani Postów: 71 Pomógł: 1 Dołączył: 21.01.2013 Ostrzeżenie: (0%) ![]() ![]() |
Sądzę że lepszym rozwiązaniem będzie wykorzystanie oficjalnego kodu listenera.
![]() Ten post edytował ZaqU 9.01.2015, 12:57:53 |
|
|
![]()
Post
#6
|
|
Grupa: Zarejestrowani Postów: 16 Pomógł: 5 Dołączył: 31.12.2014 Ostrzeżenie: (0%) ![]() ![]() |
wywal tel liniki:
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, 1); curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, 2); powinno pomóc I sprawdź jeszcze czy na twoim serwerze obsługiwany jest TLS gdyź SSL PayPal już nie obsługuje. Ten post edytował irytek 9.01.2015, 12:59:31 |
|
|
![]()
Post
#7
|
|
Grupa: Zarejestrowani Postów: 71 Pomógł: 1 Dołączył: 21.01.2013 Ostrzeżenie: (0%) ![]() ![]() |
Pomieszałem trochę starego kodu z nowym i nie zauważyłem, że protokoły są inne. W starej wersji było "ssl://www.sandbox.paypal.com", w nowej "https://www.sandbox.paypal.com". Podmieniłem oba linki i pomogło.
|
|
|
![]()
Post
#8
|
|
Grupa: Zarejestrowani Postów: 16 Pomógł: 5 Dołączył: 31.12.2014 Ostrzeżenie: (0%) ![]() ![]() |
pięknie, życzę wielu sukcesów
![]() |
|
|
![]()
Post
#9
|
|
Grupa: Zarejestrowani Postów: 71 Pomógł: 1 Dołączył: 21.01.2013 Ostrzeżenie: (0%) ![]() ![]() |
Pojawił się jeszcze jeden (ostatni mam nadzieję) problem. Mianowicie, po wykonaniu cURL'a, komenda curl_exec() zwraca (moim zdaniem) coś zupełnie nieoczekiwanego. W każdym bądź razie, kod w liniach 6-7 nie działa tak jak powinien, nie rozdziela odpowiedzi cURL do tablicy i przez to nie może uzyskać ostatniego elementu tablicy. Pierwsze dwa error_log'i zwracają dokładnie tą samą wartość, zaś kolejne (ostatnie) dwa nie wykonują się w ogóle.
Kod PHP:
Error_log (czyt. zawartość zmiennej $res):
Czy ktoś domyśla się w czym może leżeć problem? Ten post edytował ZaqU 10.01.2015, 15:18:50 |
|
|
![]()
Post
#10
|
|
Grupa: Zarejestrowani Postów: 16 Pomógł: 5 Dołączył: 31.12.2014 Ostrzeżenie: (0%) ![]() ![]() |
Hej,
podaj jak dokładnie wygląda paypal_url, albo jeśli to nie kłopot to wklej cały kod tego pliku lub prześlij na priv |
|
|
![]()
Post
#11
|
|
Grupa: Zarejestrowani Postów: 71 Pomógł: 1 Dołączył: 21.01.2013 Ostrzeżenie: (0%) ![]() ![]() |
Oto cały kod:
|
|
|
![]()
Post
#12
|
|
Grupa: Zarejestrowani Postów: 16 Pomógł: 5 Dołączył: 31.12.2014 Ostrzeżenie: (0%) ![]() ![]() |
Proponowałbym jednak aż tak nie modyfikować kodu w szczególności początku gdzie szczytuje się dane z posta które są bardzo podatne na serializacje. Nie dodawaj do $req żadnych dodatkowych znaków gdyż dane wysłane do PayPal muszą być identyczne do tych które otrzymasz poddane urlencode.
Proponuje zostawić kod w niezmienionej formie i przetestować go najpierw z symulatorem: https://developer.paypal.com/webapps/develo...s/ipn_simulator
Ten post edytował irytek 10.01.2015, 22:50:21 |
|
|
![]() ![]() |
![]() |
Wersja Lo-Fi | Aktualny czas: 29.04.2025 - 07:44 |