Avaleht
uus teema   vasta Tarkvara »  WWW »  Kas kellelgi PayPal-iga oma kodulehel on kogemusi? märgi kõik teemad loetuks
märgi mitteloetuks
vaata eelmist teemat :: vaata järgmist teemat
Hinnavaatlus :: Foorum :: Uudised :: Ärifoorumid :: HV F1 ennustusvõistlus :: Pangalink :: Telekavad :: HV toote otsing
autor
sõnum Saada viide sõbrale.  :: Teata moderaatorile teata moderaatorile
otsing:  
SGM
HV kasutaja
SGM

liitunud: 04.12.2005



Autoriseeritud ID-kaardiga

sõnum 27.08.2009 16:16:09 Kas kellelgi PayPal-iga oma kodulehel on kogemusi? vasta tsitaadiga

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. icon_rolleyes.gif
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
vaata kasutaja infot saada privaatsõnum mine selle kasutaja kodulehele
mikk36
HV Guru
mikk36

liitunud: 21.02.2004




sõnum 27.08.2009 16:49:33 vasta tsitaadiga

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
vaata kasutaja infot saada privaatsõnum
SGM
HV kasutaja
SGM

liitunud: 04.12.2005



Autoriseeritud ID-kaardiga

sõnum 27.08.2009 16:51:54 vasta tsitaadiga

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
vaata kasutaja infot saada privaatsõnum mine selle kasutaja kodulehele
mikk36
HV Guru
mikk36

liitunud: 21.02.2004




sõnum 27.08.2009 16:54:49 vasta tsitaadiga

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
vaata kasutaja infot saada privaatsõnum
SGM
HV kasutaja
SGM

liitunud: 04.12.2005



Autoriseeritud ID-kaardiga

sõnum 27.08.2009 18:13:21 vasta tsitaadiga

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. icon_confused.gif
Kommentaarid: 4 loe/lisa Kasutajad arvavad:  :: 1 :: 1 :: 0
tagasi üles
vaata kasutaja infot saada privaatsõnum mine selle kasutaja kodulehele
mikk36
HV Guru
mikk36

liitunud: 21.02.2004




sõnum 27.08.2009 18:55:47 vasta tsitaadiga

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
vaata kasutaja infot saada privaatsõnum
SGM
HV kasutaja
SGM

liitunud: 04.12.2005



Autoriseeritud ID-kaardiga

sõnum 28.08.2009 11:29:05 vasta tsitaadiga

Tegin veidi ümber selle scripti, panin ta siis mulle e-mailiga saatma neid asju. Millegipärast saatis errori osa mulle...
tsitaat:
--- ERROR ---

Item name: something

Item number: AK-1234

Payment status: Completed

Payment amount: 12.34

Payment currency: USD

txn_id: 1382887

receiver_email: seller@paypalsandbox.com

payer_email: buyer@paypalsandbox.com


Script ise on seekord selline:
php:
  1. // read the post from PayPal system and add 'cmd'
  2. $req = 'cmd=_notify-validate';
  3. $message = "";
  4.  
  5. foreach($_POST as $key => $value)
  6. {
  7.         $value = urlencode(stripslashes($value));
  8.         $req .= "&$key=$value";
  9. }
  10.  
  11. // post back to PayPal system to validate
  12. $header .= "POST /cgi-bin/webscr HTTP/1.0\r\n";
  13. $header .= "Content-Type: application/x-www-form-urlencoded\r\n";
  14. $header .= "Content-Length: " . strlen($req) . "\r\n\r\n";
  15.  
  16. $fp = fsockopen ('ssl://www.paypal.com', 443, $errno, $errstr, 30);
  17.  
  18. // assign posted variables to local variables
  19. $item_name = $_POST['item_name'];
  20. $item_number = $_POST['item_number'];
  21. $payment_status = $_POST['payment_status'];
  22. $payment_amount = $_POST['mc_gross'];
  23. $payment_currency = $_POST['mc_currency'];
  24. $txn_id = $_POST['txn_id'];
  25. $receiver_email = $_POST['receiver_email'];
  26. $payer_email = $_POST['payer_email'];
  27.  
  28. if(!$fp)
  29. {
  30.         // HTTP ERROR
  31. }
  32. else
  33. {
  34.         fputs ($fp, $header . $req);
  35.        
  36.         while(!feof($fp))
  37.         {
  38.                 $res = fgets ($fp, 1024);
  39.                
  40.                 if(strcmp ($res, "VERIFIED") == 0)
  41.                 {
  42. // check the payment_status is Completed
  43. // check that txn_id has not been previously processed
  44. // check that receiver_email is your Primary PayPal email
  45. // check that payment_amount/payment_currency are correct
  46. // process payment
  47.                         $message .= "Item name: $item_name \r\n";
  48.                         $message .= "Item number: $item_number \r\n";
  49.                         $message .= "Payment status: $payment_status \r\n";
  50.                         $message .= "Payment amount: $payment_amount \r\n";
  51.                         $message .= "Payment currency: $payment_currency \r\n";
  52.                         $message .= "txn_id: $txn_id \r\n";
  53.                         $message .= "receiver_email: $receiver_email \r\n";
  54.                         $message .= "payer_email: $payer_email \r\n";
  55.                         mail("minu_email","Payment",$message);
  56.                 }
  57.                 elseif(strcmp($res, "INVALID") == 0)
  58.                 {
  59.                         // log for manual investigation
  60.                         $message = "--- ERROR --- \r\n";
  61.                         $message .= "Item name: $item_name \r\n";
  62.                         $message .= "Item number: $item_number \r\n";
  63.                         $message .= "Payment status: $payment_status \r\n";
  64.                         $message .= "Payment amount: $payment_amount \r\n";
  65.                         $message .= "Payment currency: $payment_currency \r\n";
  66.                         $message .= "txn_id: $txn_id \r\n";
  67.                         $message .= "receiver_email: $receiver_email \r\n";
  68.                         $message .= "payer_email: $payer_email \r\n";
  69.                         mail("minu_email","ERROR",$message);
  70.                 }
  71.                
  72.         }//while
  73.        
  74. fclose ($fp);
  75.  
  76. }


EDIT:
see "error" pole mitte error, vaid nagu "unverified" pigem. icon_biggrin.gif 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? icon_rolleyes.gif
Kommentaarid: 4 loe/lisa Kasutajad arvavad:  :: 1 :: 1 :: 0
tagasi üles
vaata kasutaja infot saada privaatsõnum mine selle kasutaja kodulehele
mikk36
HV Guru
mikk36

liitunud: 21.02.2004




sõnum 28.08.2009 12:29:16 vasta tsitaadiga

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
vaata kasutaja infot saada privaatsõnum
SGM
HV kasutaja
SGM

liitunud: 04.12.2005



Autoriseeritud ID-kaardiga

sõnum 28.08.2009 12:34:36 vasta tsitaadiga

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
vaata kasutaja infot saada privaatsõnum mine selle kasutaja kodulehele
mikk36
HV Guru
mikk36

liitunud: 21.02.2004




sõnum 28.08.2009 12:41:32 vasta tsitaadiga

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
vaata kasutaja infot saada privaatsõnum
SGM
HV kasutaja
SGM

liitunud: 04.12.2005



Autoriseeritud ID-kaardiga

sõnum 28.08.2009 18:32:15 vasta tsitaadiga

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:
  1. <form action="https://www.paypal.com/cgi-bin/webscr" method="post">
  2. <input type="hidden" name="cmd" value="_s-xclick">
  3. <input type="hidden" name="hosted_button_id" value="7818237">
  4. <table width="100%" border="0" cellpadding="4" cellspacing="2">
  5. <td width="20%">
  6. <input type="hidden" name="on0" value="amount">
  7. <select name="os0">
  8.         <option value="10 Credits">10 Credits $1.00
  9.         <option value="20 Credits">20 Credits $1.95
  10.         <option value="30 Credits">30 Credits $2.79
  11.         <option value="50 Credits">50 Credits $4.49
  12. </select>
  13. </td>
  14. <input type="hidden" name="currency_code" value="USD">
  15. <input type="image" src="images/pp_order.png" border="0" name="submit" alt="PayPal - The safer, easier way to pay online!">
  16. </td>
  17. </tr>
  18. </table>
  19. </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
vaata kasutaja infot saada privaatsõnum mine selle kasutaja kodulehele
mikk36
HV Guru
mikk36

liitunud: 21.02.2004




sõnum 28.08.2009 19:23:44 vasta tsitaadiga

http://blog.jc21.com/2006-06-12/paypal-button-generator/
Teeb ehk paypali nupu genereerimise universaalsemaks.
Sandboxi puhul on paypali vastuvõtvaks aadressiks https://www.sandbox.paypal.com/cgi-bin/webscr, live puhul https://www.paypal.com/cgi-bin/webscr.
Oma info (kasutaja id vms) saad panna input type=hidden name=custom välja sisse, antud klassis $nupp->custom.

Listeneri kirjutades ära siis unusta jätkamast IPN'i manuaali 2 peatüki 5. punkti juurest jätkamast (lk 19).
Kommentaarid: 85 loe/lisa Kasutajad arvavad:  :: 0 :: 2 :: 78
tagasi üles
vaata kasutaja infot saada privaatsõnum
SGM
HV kasutaja
SGM

liitunud: 04.12.2005



Autoriseeritud ID-kaardiga

sõnum 31.08.2009 11:28:02 vasta tsitaadiga

mikk36 kirjutas:
Sandboxi puhul on paypali vastuvõtvaks aadressiks https://www.sandbox.paypal.com/cgi-bin/webscr, live puhul https://www.paypal.com/cgi-bin/webscr.

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
vaata kasutaja infot saada privaatsõnum mine selle kasutaja kodulehele
mikk36
HV Guru
mikk36

liitunud: 21.02.2004




sõnum 31.08.2009 12:11:08 vasta tsitaadiga

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
vaata kasutaja infot saada privaatsõnum
SGM
HV kasutaja
SGM

liitunud: 04.12.2005



Autoriseeritud ID-kaardiga

sõnum 31.08.2009 12:28:13 vasta tsitaadiga

<form> on selline praegu:
html:
  1. <form action="https://www.sandbox.paypal.com/cgi-bin/webscr" method="post">
  2. <input type="hidden" name="cmd" value="_s-xclick">
  3. <input type="hidden" name="hosted_button_id" value="7818237">
  4. <table width="100%" border="0" cellpadding="4" cellspacing="2">
  5. <td width="20%">
  6. <input type="hidden" name="on0" value="amount">
  7. <select name="os0">
  8.         <option value="10 Credits">10 Credits $1.00
  9.         <option value="20 Credits">20 Credits $1.95
  10.         <option value="30 Credits">30 Credits $2.79
  11.         <option value="50 Credits">50 Credits $4.49
  12. </select>
  13. </td>
  14. <input type="hidden" name="currency_code" value="USD">
  15. <input type="image" src="images/pp_order.png" border="0" name="submit" alt="PayPal - The safer, easier way to pay online!">
  16. </td>
  17. </tr>
  18. </table>
  19. </form>
Kommentaarid: 4 loe/lisa Kasutajad arvavad:  :: 1 :: 1 :: 0
tagasi üles
vaata kasutaja infot saada privaatsõnum mine selle kasutaja kodulehele
mikk36
HV Guru
mikk36

liitunud: 21.02.2004




sõnum 31.08.2009 12:55:08 vasta tsitaadiga

Ja kus account email on?
Kasuta prooviks seda paypali nupu klassi.
Kommentaarid: 85 loe/lisa Kasutajad arvavad:  :: 0 :: 2 :: 78
tagasi üles
vaata kasutaja infot saada privaatsõnum
mikk36
HV Guru
mikk36

liitunud: 21.02.2004




sõnum 01.09.2009 23:55:01 vasta tsitaadiga

Oled jõudnud kuhugi?
Kommentaarid: 85 loe/lisa Kasutajad arvavad:  :: 0 :: 2 :: 78
tagasi üles
vaata kasutaja infot saada privaatsõnum
näita postitusi alates eelmisest:   
uus teema   vasta Tarkvara »  WWW »  Kas kellelgi PayPal-iga oma kodulehel on kogemusi?
[vaata eelmist teemat] [vaata järgmist teemat]
 lisa lemmikuks
näita foorumit:  
 ignoreeri teemat 
sa ei või postitada uusi teemasid siia foorumisse
sa ei või vastata selle foorumi teemadele
sa ei või muuta oma postitusi selles foorumis
sa ei või kustutada oma postitusi selles foorumis
sa ei või vastata küsitlustele selles foorumis
sa ei saa lisada manuseid selles foorumis
sa võid manuseid alla laadida selles foorumis



Hinnavaatlus ei vastuta foorumis tehtud postituste eest.