Hinnavaatlus
:: Foorum
:: Uudised
:: Ärifoorumid
:: HV F1 ennustusvõistlus
:: Pangalink
:: Telekavad
:: HV toote otsing
|
|
autor |
|
SGM
HV kasutaja

liitunud: 04.12.2005
|
27.08.2009 16:16:09
Kas kellelgi PayPal-iga oma kodulehel on kogemusi? |
|
|
Kas keegi oskab PayPal-i süsteemis luua automaatset makse-vastust tagasi oma serverisse? Näiteks nii, et klient maksab minu veebilehe kaudu mingi (virtuaal)teenuse eest (klikib nuppu, ta viiakse PayPal-i kodulehele, kus ta sooritab makse, siis viiakse ta minu lehele tagasi) ja kui makse on tehtud, saab minu serveris olev fail sellest vastuse ja lisab/muudab andmebaasis midagi või annab maksjale ligipääsu mingile failile vms.
Olen juba kaua uurinud developer.paypal.com ja selle juhendit, teinud sandbox-i konto (liivakast testimiseks), aga ühel hetkel keeras mul juhtme kokku. Tean, et see võimalus peab seal olema, sest paljud (peamiselt USA-) veebilehed kasutavad seda.
|
|
Kommentaarid: 4 loe/lisa |
Kasutajad arvavad: |
   |
:: |
1 :: |
1 :: |
0 |
|
tagasi üles |
|
 |
mikk36
HV Guru

liitunud: 21.02.2004

|
27.08.2009 16:49:33
|
|
|
PayPalil on selle tarvis IPN süsteem, tuleb lihtsalt päringus vastav info sisse kirjutada ja PayPal saadab selle automaatselt sulle.
https://www.paypal.com/ipn
Olen selle ka korra üles ehitanud, ei olnud väga keeruline kui õigele järjele saad.
Edit: esmalt tuli vast PayPali kontos paika panna, et soovid IPN urli üldse kasutada ja lisaks siis lisada nupu formile muutuja "notify_url".
Edit2:
https://cms.paypal.com/cms_content/US/en_US/files/developer/IPNGuide.pdf
Peatükk 3: Identifying Your IPN Listener to PayPal
Edit3:
Ehk siis esmalt ehita endal vastuvõttev script valmis ja testi läbi vastavate tööriistadega developer.paypal.com lehel ja siis kui see toimib korrektselt (ja teeb kõik vajaliku) aktiveeri IPN ja proovi reaalsete testmaksetega (fake kontodega developer.paypal.com lehelt) paypali testsüsteemides (jah, kohati muutub see tapvalt aeglaseks kui ameerika devid üles ärkavad, seega on soovitav paypali arendust teha varahommikust lõunani, muul ajal on enda kogemustele põhinedes suhtkoht võimatu seda teha, kuna PayPali testsüsteem on niivõrd koomas, et enamus ajast annab ta vaid erroreid.
Süsteemi ülesehituselt tundub suhteliselt ok kogu PayPali värk, kuna saad enda poole pealt suhtkoht kõike kontrollida ja valikuvabadust on piisavalt. Kohati tundub lihtsalt dokumentatsioon puudulik olema, ise otsisin tükk aega näiteks andmeväljade kohta dokumentatsiooni et näiteks kui pikad andmeväljad on lubatud.
viimati muutis mikk36 27.08.2009 16:52:03, muudetud 1 kord |
|
Kommentaarid: 85 loe/lisa |
Kasutajad arvavad: |
   |
:: |
0 :: |
2 :: |
78 |
|
tagasi üles |
|
 |
SGM
HV kasutaja

liitunud: 04.12.2005
|
27.08.2009 16:51:54
|
|
|
Selle omaarust olen läbinud. Hetkel proovisin katsetada, kus see kollane kast on, üles käib mingi faili url ja selle all saab valida mingite asjade vahel. Igatahes paar korda sain nii, et all oli "Web accept" ja siis ilmus hulk väljasid allapoole. Kõige all oli nupp "Send IPN" ja alguses toimis. Enam mitte. Ei ole klikitav. "Cancel" on klikitav.
Ja kui ta toimis, siis ilmus üles roheline ikoon kirjaga "IPN successfully sent." Sellest pole abi, sest ma ei tea, mida või kuhu seal saadeti ja kust ma näen, mis tulemus on.
See IPNGuide.pdf on mul ka siin olemas... PHP-failis on mul just enne 3. peatüki algust olev script.
Imelik, et minu PP profiil (Premier account on mul) ei näita üldse selliseid asju nagu juhendis kirjas:
1. Click Profile on the My Account tab.
2. Click Instant Payment Notification Preferences in the Selling Preferences column.
3. Click Edit IPN Settings to specify your listener’s URL and activate the listener.
|
|
Kommentaarid: 4 loe/lisa |
Kasutajad arvavad: |
   |
:: |
1 :: |
1 :: |
0 |
|
tagasi üles |
|
 |
mikk36
HV Guru

liitunud: 21.02.2004

|
27.08.2009 16:54:49
|
|
|
Selle testmooduli osas pead sa ise jälgima et mis info vastu võeti ja mis sellest sai, päring saadetakse sellele sinu antud url'ile.
Pane kogu infot logima kas SQL'i või failidesse ja näed täpselt mis kohale tuleb.
Konto seadistuse osas võin pilgu peale visata kui usaldad.
|
|
Kommentaarid: 85 loe/lisa |
Kasutajad arvavad: |
   |
:: |
0 :: |
2 :: |
78 |
|
tagasi üles |
|
 |
SGM
HV kasutaja

liitunud: 04.12.2005
|
27.08.2009 18:13:21
|
|
|
PHP-kood on mul selline:
<?php
error_reporting(E_ALL ^ E_NOTICE);
$email = $_GET['ipn_email'];
$header = "";
$emailtext = "";
// Read the post from PayPal and add 'cmd'
$req = 'cmd=_notify-validate';
if(function_exists('get_magic_quotes_gpc'))
{
$get_magic_quotes_exits = true;
}
foreach($_POST as $key => $value) // Handle escape characters, which depends on setting of magic quotes
{
if($get_magic_quotes_exists == true && get_magic_quotes_gpc() == 1)
{
$value = urlencode(stripslashes($value));
}
else
{
$value = urlencode($value);
}
$req .= "&$key=$value";
}//loop
// Post back to PayPal to validate
$header .= "POST /cgi-bin/webscr HTTP/1.0\r\n";
$header .= "Content-Type: application/x-www-form-urlencoded\r\n";
$header .= "Content-Length: " . strlen($req) . "\r\n\r\n";
$fp = fsockopen('www.paypal.com', 80, $errno, $errstr, 30);
// Process validation from PayPal
if(!$fp)
{
// HTTP ERROR
}
else // NO HTTP ERROR
{
fputs($fp, $header . $req);
while(!feof($fp))
{
$res = fgets($fp, 1024);
if(strcmp($res, "VERIFIED") == 0)
{
// TODO:
// Check the payment_status is Completed
// Check that txn_id has not been previously processed
// Check that receiver_email is your Primary PayPal email
// Check that payment_amount/payment_currency are correct
// Process payment
// If 'VERIFIED', send an email of IPN variables and values to the
// specified email address
foreach($_POST as $key => $value)
{
$emailtext .= $key . " = " .$value ."\n\n";
}
mail($email, "Live-VERIFIED IPN", $emailtext . "\n\n" . $req);
}
elseif(strcmp ($res, "INVALID") == 0) // If 'INVALID', send an email. TODO: Log for manual investigation.
{
foreach($_POST as $key => $value)
{
$emailtext .= $key . " = " .$value ."\n\n";
}
mail($email, "Live-INVALID IPN", $emailtext . "\n\n" . $req);
}
}//while
}
fclose($fp);
?> |
Siiski müstika on see, miks enam ei lase seal testimise kohas "Send" vajutada. Nagu oleks mingi limiit peal, et rohkem kui 2-3 korda ei saa testida.
|
|
Kommentaarid: 4 loe/lisa |
Kasutajad arvavad: |
   |
:: |
1 :: |
1 :: |
0 |
|
tagasi üles |
|
 |
mikk36
HV Guru

liitunud: 21.02.2004

|
27.08.2009 18:55:47
|
|
|
Pane selle scripti alguses kohe kettale kirjutama näiteks sissetulnud päring koos natukese lisainfoga päringu kohta, saad teada kui ja mis infot sulle üldse saadetakse.
|
|
Kommentaarid: 85 loe/lisa |
Kasutajad arvavad: |
   |
:: |
0 :: |
2 :: |
78 |
|
tagasi üles |
|
 |
SGM
HV kasutaja

liitunud: 04.12.2005
|
28.08.2009 11:29:05
|
|
|
Tegin veidi ümber selle scripti, panin ta siis mulle e-mailiga saatma neid asju. Millegipärast saatis errori osa mulle...
Script ise on seekord selline:
php:
|
// read the post from PayPal system and add 'cmd' $req = 'cmd=_notify-validate'; $message = ""; foreach($_POST as $key => $value) { $req .= "&$key=$value"; } // post back to PayPal system to validate $header .= "POST /cgi-bin/webscr HTTP/1.0\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.paypal.com', 443, $errno, $errstr, 30); // assign posted variables to local variables $item_name = $_POST['item_name']; $item_number = $_POST['item_number']; $payment_status = $_POST['payment_status']; $payment_amount = $_POST['mc_gross']; $payment_currency = $_POST['mc_currency']; $txn_id = $_POST['txn_id']; $receiver_email = $_POST['receiver_email']; $payer_email = $_POST['payer_email']; if(!$fp) { // HTTP ERROR } else { fputs ($fp, $header . $req); { $res = fgets ($fp, 1024); if(strcmp ($res, "VERIFIED") == 0) { // check the payment_status is Completed // check that txn_id has not been previously processed // check that receiver_email is your Primary PayPal email // check that payment_amount/payment_currency are correct // process payment $message .= "Item name: $item_name \r\n"; $message .= "Item number: $item_number \r\n"; $message .= "Payment status: $payment_status \r\n"; $message .= "Payment amount: $payment_amount \r\n"; $message .= "Payment currency: $payment_currency \r\n"; $message .= "txn_id: $txn_id \r\n"; $message .= "receiver_email: $receiver_email \r\n"; $message .= "payer_email: $payer_email \r\n"; mail("minu_email", "Payment", $message); } elseif(strcmp($res, "INVALID") == 0) { // log for manual investigation $message = "--- ERROR --- \r\n"; $message .= "Item name: $item_name \r\n"; $message .= "Item number: $item_number \r\n"; $message .= "Payment status: $payment_status \r\n"; $message .= "Payment amount: $payment_amount \r\n"; $message .= "Payment currency: $payment_currency \r\n"; $message .= "txn_id: $txn_id \r\n"; $message .= "receiver_email: $receiver_email \r\n"; $message .= "payer_email: $payer_email \r\n"; mail("minu_email", "ERROR", $message); } }//while }
|
EDIT:
see "error" pole mitte error, vaid nagu "unverified" pigem. Ja sellest ma ka aru ei saa, mida see tähendama peaks. Ja siit tuleb järgmine probleem: kuidas siduda vastav isik just selle ülekandega... Näiteks kasutaja, kelle ID on 3, ostab PP kaudu endale mingi virtuaalse teenuse lehel. Kuidas PayPal aru saab, et just see kasutaja, ja et just sellele on vaja andmebaasis muudatus teha?
|
|
Kommentaarid: 4 loe/lisa |
Kasutajad arvavad: |
   |
:: |
1 :: |
1 :: |
0 |
|
tagasi üles |
|
 |
mikk36
HV Guru

liitunud: 21.02.2004

|
28.08.2009 12:29:16
|
|
|
Miks sul vahepeal port 80 pealt 443'le muutunud on ?
PP'l on täiesti kama sellest et mis id'ga see kasutaja sinu süsteemis on, see on sinu rida kindlaks teha et mille eest makse tehti ja selle tarvis paned sina piisavalt lisainfot kaasa maksele.
Näiteks custom väli, seda ei näe maksja kuid see edastatakse IPN'ga sulle ringiga tagasi. Võid sinna panna näiteks kasutaja ID, arve ID või mille iganes muu info mis sulle kasulik on.
viimati muutis mikk36 28.08.2009 12:35:20, muudetud 1 kord |
|
Kommentaarid: 85 loe/lisa |
Kasutajad arvavad: |
   |
:: |
0 :: |
2 :: |
78 |
|
tagasi üles |
|
 |
SGM
HV kasutaja

liitunud: 04.12.2005
|
28.08.2009 12:34:36
|
|
|
mikk36 kirjutas: |
Miks sul vahepeal port 80 pealt 443'le muutunud on ? |
Ei tea, võtsin selle scripti uuesti PP lehelt. Eelmise sain pdf-ist.
Ikkagi ma ei saa asjast aru, kuidas ma saan seostada teenuse tellija konto sellega. Sama nagu SMS-teenustega (fortumo näiteks), kus server saab vastuse ja siis just sellele kasutajale teeb andmebaasis mingi muudatuse.
Praegu sain vaid käsitsi testida otse PP sandboxist. Mitte oma veebilehelt.
|
|
Kommentaarid: 4 loe/lisa |
Kasutajad arvavad: |
   |
:: |
1 :: |
1 :: |
0 |
|
tagasi üles |
|
 |
mikk36
HV Guru

liitunud: 21.02.2004

|
28.08.2009 12:41:32
|
|
|
Lisasin vahepeal juurde infot eelmisse postitusse.
Edit: max väljapikkus custom väljal on 255 tähemärki.
Esimese asjana proovi praegu IPN andmete valideerimine korda saada et kindlaks teha et kas üldse PP selle saatja oli (PP vastab VERIFIED antud juhul kui ta on teadlik sellise info sulle saatmisest).
|
|
Kommentaarid: 85 loe/lisa |
Kasutajad arvavad: |
   |
:: |
0 :: |
2 :: |
78 |
|
tagasi üles |
|
 |
SGM
HV kasutaja

liitunud: 04.12.2005
|
28.08.2009 18:32:15
|
|
|
Nii, aretasin ka tellimise vormi, aga kusagilt ei saa midagi määrata, et saaks seda värki just sandboxis proovida. Sandboxi lehelt ma ei saanud nupu loomise võimalust. Pidin ehtsa kontoga selle tegema. HTML on sihuke:
html:
|
<form action="https://www.paypal.com/cgi-bin/webscr" method="post"> <input type="hidden" name="cmd" value="_s-xclick"> <input type="hidden" name="hosted_button_id" value="7818237"> <table width="100%" border="0" cellpadding="4" cellspacing="2"> <input type="hidden" name="on0" value="amount"> <option value="10 Credits">10 Credits $1.00 <option value="20 Credits">20 Credits $1.95 <option value="30 Credits">30 Credits $2.79 <option value="50 Credits">50 Credits $4.49 </select> </td> <input type="hidden" name="currency_code" value="USD"> <input type="image" src="images/pp_order.png" border="0" name="submit" alt="PayPal - The safer, easier way to pay online!"> </td> </tr> </table> </form>
|
Ja kuhu/kuidas/mida siin lisada saab, et saaksin kasutaja ID ka määrata, kes tellimuse teeb...
|
|
Kommentaarid: 4 loe/lisa |
Kasutajad arvavad: |
   |
:: |
1 :: |
1 :: |
0 |
|
tagasi üles |
|
 |
mikk36
HV Guru

liitunud: 21.02.2004

|
|
Kommentaarid: 85 loe/lisa |
Kasutajad arvavad: |
   |
:: |
0 :: |
2 :: |
78 |
|
tagasi üles |
|
 |
SGM
HV kasutaja

liitunud: 04.12.2005
|
31.08.2009 11:28:02
|
|
|
Kui selle formi ette selle aadressi panen, siis sinna klikkides alguses tuli PP lehel, et sandboxi jaoks pean sisse logima (aga ei olnud vastavat kohtagi.) Läksin teistkaudu sinna sandboxi, olin kohe sees! Ja uuesti oma lehel "buy" nuppu klikkides jäi kauaks lehte laadima, siis lõpuks tuli error:
tsitaat: |
Error Detected
PayPal cannot process this transaction because of a problem with the seller's website. Please contact the seller directly to resolve this problem. |
Kahjuks pole aimugi, kus/mis viga võib olla, sest veateade ei anna infot ju.
|
|
Kommentaarid: 4 loe/lisa |
Kasutajad arvavad: |
   |
:: |
1 :: |
1 :: |
0 |
|
tagasi üles |
|
 |
mikk36
HV Guru

liitunud: 21.02.2004

|
31.08.2009 12:11:08
|
|
|
Nii peadki toimima (Developer lehele eraldi sisse logima) ja siis katsetama maksmist.
Saad ehk välja näidata oma tekitatud formi ?
|
|
Kommentaarid: 85 loe/lisa |
Kasutajad arvavad: |
   |
:: |
0 :: |
2 :: |
78 |
|
tagasi üles |
|
 |
SGM
HV kasutaja

liitunud: 04.12.2005
|
31.08.2009 12:28:13
|
|
|
<form> on selline praegu:
html:
|
<form action="https://www.sandbox.paypal.com/cgi-bin/webscr" method="post"> <input type="hidden" name="cmd" value="_s-xclick"> <input type="hidden" name="hosted_button_id" value="7818237"> <table width="100%" border="0" cellpadding="4" cellspacing="2"> <input type="hidden" name="on0" value="amount"> <option value="10 Credits">10 Credits $1.00 <option value="20 Credits">20 Credits $1.95 <option value="30 Credits">30 Credits $2.79 <option value="50 Credits">50 Credits $4.49 </select> </td> <input type="hidden" name="currency_code" value="USD"> <input type="image" src="images/pp_order.png" border="0" name="submit" alt="PayPal - The safer, easier way to pay online!"> </td> </tr> </table> </form>
|
|
|
Kommentaarid: 4 loe/lisa |
Kasutajad arvavad: |
   |
:: |
1 :: |
1 :: |
0 |
|
tagasi üles |
|
 |
mikk36
HV Guru

liitunud: 21.02.2004

|
31.08.2009 12:55:08
|
|
|
Ja kus account email on?
Kasuta prooviks seda paypali nupu klassi.
|
|
Kommentaarid: 85 loe/lisa |
Kasutajad arvavad: |
   |
:: |
0 :: |
2 :: |
78 |
|
tagasi üles |
|
 |
mikk36
HV Guru

liitunud: 21.02.2004

|
01.09.2009 23:55:01
|
|
|
Oled jõudnud kuhugi?
|
|
Kommentaarid: 85 loe/lisa |
Kasutajad arvavad: |
   |
:: |
0 :: |
2 :: |
78 |
|
tagasi üles |
|
 |
|