Neue Antwort schreiben 
 
Themabewertung:
  • 0 Bewertung(en) - 0 im Durchschnitt
  • 1
  • 2
  • 3
  • 4
  • 5
Paypal PHP
Michael_ Offline
Bier aus Hawaii

Beiträge: 1.510
Registriert seit: Feb 2011
Beitrag #1
Paypal PHP
Hallo,

Ich habe mir so ein Script gekauft mit dem ich Downloads mit Paypal verticken kann.
Also man zahlt und erhält direkt den Downloadlink per E-Mail wenn die Zahlung erfolgreich durchgeführt wurde.

Nun habe ich mir dieses Skript so erweitert das auch automatisch eine Email mit der Rechung versendet wird
und grundsätzlich funktioniert das auch, allerdings kann ich leider auf der Rechnung nur den Namen und die E-Mail Adresse der Kunden eintragen da das Script weitere Daten nicht von Paypal holt.

Hier mal die betreffend Datei im Anhang.
(Originalversion, nicht die von mir angepasste.)

Ich habe es versucht folgendes einzufügen, allerdings klappt das nicht.

Code:
$payer_business_name = $keyarray['payer_business_name'];
$contact_phone = $keyarray['contact_phone'];
$address_street = $keyarray['address_street'];
$address_zip = $keyarray['address_zip'];
$address_state = $keyarray['address_state'];
$address_country = $keyarray['address_country'];
$address_city = $keyarray['address_city'];
if($payer_business_name != "") $business_name = "<h2 class="name">$payer_business_name</h2>";

Ich weiß leider wirklich nicht was ich tun kann und der Support des Skripts hilft auch nicht weiter und ich bin mal so freundlich und verzichte hier auf die Nennung des Herausgebers.

Es wäre richtig toll wenn mir jemand helfen könnte.
Es ist lästig Rechnungen per Hand zu verschicken. :)


Angehängte Datei(en)
.php  order.php (Größe: 3,63 KB / Downloads: 8)
03.05.2017 02:25
Alle Beiträge dieses Benutzers finden Diese Nachricht in einer Antwort zitieren
DosAmp Offline
Flegkano

Beiträge: 11.972
Registriert seit: Jul 2008
Beitrag #2
RE: Paypal PHP
Machst du denn auch irgendetwas mit den Variablen, außer sie auszulesen?

Welche Variablen PayPal überhaupt zurückgibt, kannst du sehen, indem du testweise den unteren Teil des Skripts (in diesem Fall Zeile 83-150, also die komplette Ausgabe und Datenbank-Anbindung) auskommentierst/entfernst, etwas in dieser Form in die "parse"-Schleife einfügst und das Skript mit einer ID einer bereits stattgefundenen Transaktion aufrufst.
PHP-Code:
// parse
$lines explode("\n"$res);
$keyarray = array();
if (
strcmp ($lines[0], "SUCCESS") == 0) {
    echo 
'<p>PayPal-Parameter:</p><ul>';
    for (
$i 1$i count($lines); $i++) {
        list(
$key$val) = explode("="$lines[$i]);
        
$keyarray[urldecode($key)] = urldecode($val);
        
printf("<li><code>%s</code> = <code>%s</code></li>\n"htmlspecialchars(urldecode($key)), htmlspecialchars(urldecode($value)));
    }
    echo 
"</ul>\n";
    
// == snip ==


An sich sehen die Variablennamen aber okay aus.
Deine letzte Zeile hat natürlich noch einen Syntax-Fehler, welcher mit einem passenden Editor gleich auffallen würde:
PHP-Code:
if ($payer_business_name != "") {
    
$business_name "<h2 class=\"name\">$payer_business_name</h2>";


Hier sei noch eine Warnung vor der Sicherheit des Skripts in dieser Form angebracht: Es überprüft/filtert weder die Eingabe noch die Ausgabe, sodass man in der Form sehr einfach XSS-Angriffe oder SQL-Injections durchführen kann, wenn man HTML-Code oder schon nur einfache Anführungzeichen (Frau O'Brien und Herr 't Hooft lassen grüßen) als Teil des Namens, der E-Mail-Adresse oder anderer von dir benutzter Felder durch PayPal übergibt.

[Bild: stempel.png]
(Dieser Beitrag wurde zuletzt bearbeitet: 03.05.2017 12:17 von DosAmp.)
03.05.2017 12:15
Webseite des Benutzers besuchen Alle Beiträge dieses Benutzers finden Diese Nachricht in einer Antwort zitieren
Michael_ Offline
Bier aus Hawaii

Beiträge: 1.510
Registriert seit: Feb 2011
Beitrag #3
RE: Paypal PHP
Der Syntax Fehler war nicht im Code vorhanden sondern weil ich das so aus dem Supportticket rübergeholt habe.
Denen ihr System hat die Backslashes entfernt.

Ich versende mit php halt eine Mail und da würde ich die Werte gerne einfügen.

Hier schau mal:
Code:
require ("config.php");
function generatePassword ($length = 16)
{

  // Passwort
  $password = "";

  
  $possible = "0123456789bcdfghjkmnpqrstvwxyz";
    
  
  $i = 0;
    
  while ($i < $length) {

   $char = substr($possible, mt_rand(0, strlen($possible)-1), 1);
        
    if (!strstr($password, $char)) {
      $password .= $char;
      $i++;
    }

  }

  return $password;

}

// Rückgabe von PayPal
$req = 'cmd=_notify-synch';

$tx_token = $_GET['tx'];
$req .= "&tx=$tx_token&at=$auth_token";

// zurück zu PayPal
$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);
// Wenn möglich per HTTPS
// $fp = fsockopen ('ssl://www.paypal.com', 443, $errno, $errstr, 30);

if (!$fp) {
// HTTP ERROR
} else {
fputs ($fp, $header . $req);
// read the body data
$res = '';
$headerdone = false;
while (!feof($fp)) {
$line = fgets ($fp, 1024);
if (strcmp($line, "\r\n") == 0) {
// read the header
$headerdone = true;
}
else if ($headerdone)
{
// Header wurde gelesen, jetzt der Inhalt
$res .= $line;
}
}

// parse
$lines = explode("\n", $res);
$keyarray = array();
if (strcmp ($lines[0], "SUCCESS") == 0) {
for ($i=1; $i<count($lines);$i++){
list($key,$val) = explode("=", $lines[$i]);
$keyarray[urldecode($key)] = urldecode($val);
}
// check payment_status
// check txn_id
// check receiver_email
// check payment_amount/payment_currency
$firstname = $keyarray['first_name'];
$lastname = $keyarray['last_name'];
$itemname = $keyarray['item_name'];
$amount = $keyarray['payment_gross'];
$eml = $keyarray['payer_email'];
$itemid = $keyarray['item_number'];

/* Hack */
$payer_business_name = $keyarray['payer_business_name'];
$contact_phone = $keyarray['contact_phone'];
$address_street = $keyarray['address_street'];
$address_zip = $keyarray['address_zip'];
$address_state = $keyarray['address_state'];
$address_country = $keyarray['address_country'];
$address_city = $keyarray['address_city'];
if ($payer_business_name != "") {
    $business_name = "<h2 class=\"name\">$payer_business_name</h2>";
}
/* Hack End */

// parse
$lines = explode("\n", $res);
$keyarray = array();
if (strcmp ($lines[0], "SUCCESS") == 0) {
    echo '<p>PayPal-Parameter:</p><ul>';
    for ($i = 1; $i < count($lines); $i++) {
        list($key, $val) = explode("=", $lines[$i]);
        $keyarray[urldecode($key)] = urldecode($val);
        printf("<li><code>%s</code> = <code>%s</code></li>\n", htmlspecialchars(urldecode($key)), htmlspecialchars(urldecode($value)));
    }
    echo "</ul>\n";
    // == snip ==
}

exit;

gibt das hier aus:

Code:
PayPal-Parameter:

    mc_gross =
    protection_eligibility =
    payer_id =
    tax =
    payment_date =
    payment_status =
    charset =
    first_name =
    mc_fee =
    custom =
    payer_status =
    business =
    quantity =
    payer_email =
    txn_id =
    payment_type =
    last_name =
    receiver_email =
    payment_fee =
    shipping_discount =
    insurance_amount =
    receiver_id =
    txn_type =
    item_name =
    discount =
    mc_currency =
    item_number =
    residence_country =
    handling_amount =
    shipping_method =
    transaction_subject =
    payment_gross =
    shipping =
    =
03.05.2017 23:19
Alle Beiträge dieses Benutzers finden Diese Nachricht in einer Antwort zitieren
Michael_ Offline
Bier aus Hawaii

Beiträge: 1.510
Registriert seit: Feb 2011
Beitrag #4
RE: Paypal PHP
Hilfe krieg das nicht hin
05.05.2017 00:52
Alle Beiträge dieses Benutzers finden Diese Nachricht in einer Antwort zitieren
Neue Antwort schreiben 


Gehe zu:


Benutzer, die gerade dieses Thema anschauen: 1 Gast/Gäste