Sponsor-Board.de
Antwort schreiben  Thema schreiben 

PayPal IPN

Verfasser Nachricht

Beiträge: 108
Bewertung: 6
Registriert seit: Apr 2012
Status: offline


Beitrag: #1
PayPal IPN

Hallo Sponsor-Board Community,

ich arbeite derzeit an einem kleinen Shop und möchte die Zahlung per PayPal automatisieren. Ich nutze die "Sofortige Zahlungsbestätigung" also IPN ( Instant blaa... )

Folgendes Problem:
Die Zahlung erfolgt ohne Probleme nur wird anscheinend das Script nicht ausgeführt.

Das ist mein Formular:

Code:
<form name="_xclick" action="https://www.paypal.com/cgi-bin/webscr" method="post">
<input type="hidden" name="cmd" value="_xclick">
<input type="hidden" name="item_number" value="Artikelnummer" />
<input type="hidden" name="business" value="[email protected]" />
<input type="hidden" name="item_name" value="Artikelbeschreibung" />
<input type="hidden" name="amount" value="Artikelpreis" />
<input type="hidden" name="currency_code" value="EUR">
<input type="hidden" name="notify_url" value="http://www.meinedomain.de/checkout.php">
<input type="hidden" name="return" value="http://www.meinedomain.de/index.php?paypal=success">
<input type="hidden" name="cancel_return" value="http://www.meinedomain.de/index.php?paypal=fail">
   <input type="submit" value="Kaufen" />
</form>


Natürlich hab ich jetzt die Value's rausgenommen und es ist nur ein Beispiel. Die Datei checkout.php beinhaltet das PHP Script, was die Anfrage bearbeitet.

Zum Testen des Skriptes hab ich einfach mal ne Update Klausel eingefügt, wobei der Aktivierungsstatus von 0 auf 1 gesetzt wird. Und ja: der Status ist 0 in der Datenbank.

Code:
<?php

// STEP 1: Read POST data

// reading posted data from directly from $_POST causes serialization
// issues with array data in POST
// reading raw POST data from input stream instead.
$raw_post_data = file_get_contents('php://input');
$raw_post_array = explode('&', $raw_post_data);
$myPost = array();
foreach ($raw_post_array as $keyval) {
  $keyval = explode ('=', $keyval);
  if (count($keyval) == 2)
     $myPost[$keyval[0]] = urldecode($keyval[1]);
}
// read the post from PayPal system and add 'cmd'
$req = 'cmd=_notify-validate';
if(function_exists('get_magic_quotes_gpc')) {
   $get_magic_quotes_exists = true;
}
foreach ($myPost as $key => $value) {        
   if($get_magic_quotes_exists == true && get_magic_quotes_gpc() == 1) {
        $value = urlencode(stripslashes($value));
   } else {
        $value = urlencode($value);
   }
   $req .= "&$key=$value";
}


// STEP 2: Post IPN data back to paypal to validate

$ch = curl_init('https://www.paypal.com/cgi-bin/webscr');
curl_setopt($ch, CURLOPT_HTTP_VERSION, CURL_HTTP_VERSION_1_1);
curl_setopt($ch, CURLOPT_POST, 1);
curl_setopt($ch, CURLOPT_RETURNTRANSFER,1);
curl_setopt($ch, CURLOPT_POSTFIELDS, $req);
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, 1);
curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, 2);
curl_setopt($ch, CURLOPT_FORBID_REUSE, 1);
curl_setopt($ch, CURLOPT_HTTPHEADER, array('Connection: Close'));

// In wamp like environments that do not come bundled with root authority certificates,
// please download 'cacert.pem' from "http://curl.haxx.se/docs/caextract.html" and set the directory path
// of the certificate as shown below.
// curl_setopt($ch, CURLOPT_CAINFO, dirname(__FILE__) . '/cacert.pem');
if( !($res = curl_exec($ch)) ) {
    // error_log("Got " . curl_error($ch) . " when processing IPN data");
    curl_close($ch);
    exit;
}
curl_close($ch);


// STEP 3: Inspect IPN validation result and act accordingly

if (strcmp ($res, "VERIFIED") == 0) {
    // check whether 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
require_once("config.inc.php");

    // 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'];
    
    $sql = "UPDATE store_user SET `active` = '1' WHERE `storeID` = '$item_number'";
    $ergebnis = mysql_query($sql);
} else if (strcmp ($res, "INVALID") == 0) {
    // log for manual investigation
}
?>


require_once("config.inc.php"); = Selber Ordner, Datenbankverbindung wird da aufgebaut.

Aus Testzwecken mal
allow_url_fopen On On
allow_url_include On On

und

cURL support enabled
eingestellt in der php.ini.

Auch wenn ich das per Sandbox teste kommt kein Ergebnis.
PayPal schreibt zur History:

Zitat:
Notification URL = [Link: Registrierung erforderlich]

HTTP response code = 200

Delivery status = Sent

No. of retries = 0

Transaction ID = 9WV38367JDXXXXXX

IPN type = Transaction made


Ich habe ein Webhosting-Paket bei 1&1 und hab auch schon den Support angerufen, dass es ohne Probleme gehen müsste.

Ich finde den Fehler einfach nicht, ich hab das Skript schon mal auf eine Null Version gepackt, so dass wirklich nur der Status abgefragt wird und dann eine E-Mail an mein Konto geschickt wird. Nothing happend.

Ich brauch unbedingt eine Lösung.

MfG
Splak


02.03.2013 14:52
 
Webseite des Benutzers besuchen Alle Beiträge dieses Benutzers finden Diese Nachricht in einer Antwort zitieren
Antwort schreiben  Thema schreiben 

Möglicherweise verwandte Themen...
Thema: Verfasser Antworten: Ansichten: Letzter Beitrag
  [PHP] PayPal IPN Jerr0w 6 2.710 20.10.2017 22:12
Letzter Beitrag: Jerr0w
  PayPal button entfernen?!? Nesh 2 1.745 21.03.2012 02:00
Letzter Beitrag: Nesh

 Druckversion anzeigen
 Thema einem Freund senden
 Thema abonnieren
 Thema zu den Favoriten hinzufügen

Sponsor-Board.de

Community
Über uns
Partner
Powered by Mybb: Copyright 2002-2024 by MyBB Group - Deutsche-Übersetzung von Mybb.de
 
© 2007-2024 Sponsor-Board.de - Hosted by OVH

Willkommen auf SB!   Sie benötigen ein Sponsoring?   1. Anmelden   2. Sponsoring-Anfrage erstellen   3. Nachrichten von Sponsoren erhalten   Kostenlos!   Jetzt registrieren