Preisvariable an PayPal mit benutzerdefinierter Schaltfläche übergeben

Lesezeit: 13 Minuten

Benutzer-Avatar
Benennen

Ich habe ein Formular und eine benutzerdefinierte PayPal-Schaltfläche, aber wie übergebe ich die Wert-/Preisvariable an PayPal?

<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="ZEFZFYBY2SZB8">
    <input type="image" src="https://www.paypal.com/en_US/i/btn/btn_paynowCC_LG.gif" border="0" name="submit" alt="PayPal - The safer, easier way to pay online!">
    <img alt="" border="0" src="https://www.paypal.com/en_US/i/scr/pixel.gif" width="1" height="1">
</form>

Ich habe eine Variable $total = "238.00";

Benutzer-Avatar
julianisch

Der vorherige Code hat bei mir nicht funktioniert. Nach vielen Kopfschmerzen habe ich endlich herausgefunden, dass Sie zu PayPal gehen und in Schritt 2 der Erstellung des Schaltflächencodes sicherstellen müssen, dass Sie auf die nicht gehostete Schaltfläche klicken und dann den unverschlüsselten Schaltflächencode kopieren, der Ihnen so etwas gibt (ich habe meine Geschäftswert für Sicherheit):

<form action="https://www.paypal.com/cgi-bin/webscr" method="post">
    <input type="hidden" name="cmd" value="_xclick">
    <input type="hidden" name="business" value="XXX">
    <input type="hidden" name="lc" value="CA">
    <input type="hidden" name="item_name" value="Tangled Roots">
    <input type="hidden" name="button_subtype" value="services">
    <input type="hidden" name="no_note" value="0">
    <input type="hidden" name="cn" value="Add special instructions to the seller">
    <input type="hidden" name="no_shipping" value="2">
    <input name="amount" value="16.99">
    <input type="hidden" name="currency_code" value="CAD">
    <input type="hidden" name="bn" value="PP-BuyNowBF:btn_buynowCC_LG.gif:NonHosted">
    <input type="image" src="https://www.paypalobjects.com/en_US/i/btn/btn_buynowCC_LG.gif" border="0" name="submit" alt="PayPal - The safer, easier way to pay online!">
    <img alt="" border="0" src="https://www.paypalobjects.com/en_US/i/scr/pixel.gif" width="1" height="1">
</form>

Dieser Code erstellt eine Schaltfläche, auf der der Benutzer den Betrag eingeben kann, der standardmäßig bei 16,99 beginnt, aber Sie können ihn genauso einfach durch eine PHP-Variable ersetzen.

  • Noch besser, wenn Sie type=”hidden” zum Betrag hinzufügen 🙂

    – fkössler

    19. Oktober 2012 um 3:58 Uhr


  • das ist also nicht von paypal API? und es wurde kein Sicherheitsproblem berücksichtigt, oder?

    – Benutzer1900121

    14. März 2013 um 5:56 Uhr

  • Dies beantwortet die gestellte Frage nicht wirklich und sollte wirklich nicht so viele positive Stimmen haben.

    – Brett

    20. Februar 2016 um 11:00 Uhr

  • Dies sollte nicht als Antwort auf die Frage von op betrachtet werden. Das OP verfügt über eine gehostete Schaltfläche, die jegliche Manipulation von Formulardaten auf der Clientseite vermeidet. Wenn Sie nur ein Formular als solches hinzufügen und keine serverseitige Validierung durchführen, kann ein Benutzer den tatsächlichen Wert des Produkts nach Belieben bearbeiten. Selbst wenn Sie das Feld ausgeblendet machen, ist es immer noch nicht gut genug, da Sie den Wert mit “inspect element” und “submit” bearbeiten können. Ich würde diesen Beitrag gerne ablehnen.

    – azzy

    3. Juni 2016 um 13:49 Uhr


  • Dieser Kommentar ist hilfreich, danke! Mein Fehler war, dass ich eine gehostete Schaltfläche erstellt habe, anstatt eine nicht gehostete, und ich konnte keinen Wert spontan ändern. Der Ratschlag ist also, dass Sie die Option „Schaltfläche bei PayPal speichern“ deaktivieren, wenn Sie eine neue Schaltfläche erstellen

    – Ilja Hämäläinen

    16. Januar 2017 um 19:53 Uhr

Ich habe es versucht und bin mit all dem oben Gesagten gescheitert. Ich fand dies als Antwort von der PayPal-Website.

<form name="_xclick" action="https://www.paypal.com/cgi-bin/webscr" method="post">
    <input type="hidden" name="cmd" value="_xclick">
    <input type="hidden" name="business" value="[email protected]">
    <input type="hidden" name="currency_code" value="USD">
    <input type="hidden" name="item_name" value="Teddy Bear">
    <input type="hidden" name="amount" value="12.99">
    <input type="image" src="http://www.paypalobjects.com/en_US/i/btn/btn_buynow_LG.gif"         border="0" name="submit" alt="Make payments with PayPal - it's fast, free and secure!">
</form>

Testen Sie dies und Sie werden verstehen, wie es funktioniert … ändern Sie das Geschäft in die E-Mail-Adresse der Person, die Sie bezahlen möchten usw.

Fügen Sie ein weiteres verstecktes Feld für den Betrag hinzu

<input type="hidden" name="amount" value="<?php echo $total; ?>">

  • @x-yurl, du meinst “Speichern-Schaltfläche bei PayPal”-Optionen, die nicht deaktiviert werden können? Wenn ja, was ist die Lösung, denn jetzt brauche ich auch eine Option, um verschiedene Preise zu PayPal hinzuzufügen. Vielen Dank!

    – Harkály Gergő

    23. August 2016 um 9:57 Uhr

  • @x-yuri Ich habe gehostete und nicht gehostete Schaltflächen ausprobiert, beide scheinen bei mir nicht zu funktionieren. Meine Frage: stackoverflow.com/questions/40210676/…

    – cyberjar09

    24. Oktober 2016 um 5:17 Uhr

  • @HarkályGergő Entschuldigung, ich habe Ihre Frage erst jetzt bemerkt. Ich habe mich jetzt schon eine Weile nicht mehr mit Paypal beschäftigt, aber ich glaube, der Grund liegt darin, dass alle Daten des gehosteten Buttons (wie der Preis) auf Paypal gespeichert werden sollen. Ohne Möglichkeit, sie aus der Form zu ändern. Wenn Sie eine Schaltfläche mit unterschiedlichen Preisen wünschen, sollten Sie nicht gehostete Schaltflächen verwenden. Das heißt, bei paypal wird nichts gespeichert, du gibst alle Parameter im Formular an.

    – x-yuri

    24. Oktober 2016 um 11:27 Uhr

  • Danke x-yuri, ja, das habe ich erkannt. Ich habe mein Problem mit einem eigenen Formular anstelle von gehosteten Schaltflächen gelöst, Sie haben Recht!

    – Harkály Gergő

    24. Oktober 2016 um 12:20 Uhr

  • Hallo Leute, meinst du, es ist ein sicherer Weg, den Preis zu überweisen? Ich meine, ein Benutzer kann das ändern Eingabetyp im Text verborgen und ändern Sie den Wert

    – Paul Noris

    26. Juli 2017 um 7:03 Uhr

Hier ist die Version von 2013: Gehen Sie zum Erstellen einer Schaltfläche, wenn Sie zu Schritt 2 gelangen, deaktivieren Sie das Kontrollkästchen, fahren Sie mit Schritt 3 fort und erstellen Sie die Schaltfläche. Sobald Sie den Code haben, sieht er so aus:

<form action="https://www.paypal.com/cgi-bin/webscr" method="post" target="_top">
<input type="hidden" name="cmd" value="_xclick">
<input type="hidden" name="business" value="XXXXXXXX">
<input type="hidden" name="lc" value="US">
<input type="hidden" name="item_name" value="Payments">
<input type="hidden" name="amount" value="100.00">
<input type="hidden" name="currency_code" value="USD">
<input type="hidden" name="button_subtype" value="services">
<input type="hidden" name="no_note" value="0">
<input type="hidden" name="cn" value="Add special instructions to the seller:">
<input type="hidden" name="no_shipping" value="2">
<input type="hidden" name="rm" value="1">
<input type="hidden" name="return" value="http://YOURSITE.com/">
<input type="hidden" name="cancel_return"     value="http://YOURSITE.com/payments.html">
<input type="hidden" name="bn" value="PP-BuyNowBF:btn_buynowCC_LG.gif:NonHostedGuest">
<input type="image" src="https://www.paypalobjects.com/en_US/i/btn/btn_buynowCC_LG.gif"     border="0" name="submit" alt="PayPal - The safer, easier way to pay online!">
<img alt="" border="0" src="https://www.paypalobjects.com/en_US/i/scr/pixel.gif" width="1" height="1">
</form>

Ihr “Geschäfts”-Wert wird nicht XXXXXXXX sein, also stellen Sie sicher, dass Sie den Wert belassen, den Paypal Ihnen gibt. Sie können auch Ihre Abbruch- und Rücksende-URLs festlegen.

Für fortgeschrittenere PHP-Benutzer: Ich habe tatsächlich einen PHP-String eingerichtet und es funktioniert großartig! Siehe zum Beispiel unten:

 https://www.paypal.com/cgi-bin/webscr?cmd=_xclick&businesss=XXXXXXXXX&lc=US&item_name=$mydescription&amount=$myprice&........

Und so weiter….. Wie Sie sehen, ist $mydescription eine PHP-Variable und $myprice eine PHP-Variable. Ich habe ein HTML-Formular eingerichtet, um Daten zu sammeln, und dieses Formular als Zahlungsabwicklungsformular verwendet. Sobald der Benutzer auf „Senden“ klickt, wird er zu einer PHP-Seite weitergeleitet, die als Mailer, Datenbankeinfügung, Autoresponder und schließlich als Header-Umleitung verwendet werden kann. Die URL für die Weiterleitung ist die Paypal-URL mit den Variablen im String! Dieser Thread hat mir tatsächlich geholfen, den richtigen Paypal-Schaltflächencode zu finden, damit die Zeichenfolge bei Preisschwankungen richtig funktioniert! FYI – Wenn Sie ein PHP-Anfänger sind, wird das Bildfeld nicht in der Zeichenfolge verwendet. Erst die URL und dann die versteckten Namen und Werte.

Benutzer-Avatar
Mama

Ich habe die Lösung gefunden:

<input type="hidden" name="cmd" value="_s-xclick">

geändert werden muss

<input type="hidden" name="cmd" value="_xclick">

Die erste verschlüsselt die vom Formular gesendeten Daten – was das Problem mit meinem Checkout verursacht hat.

  • Dies scheint keine Antwort auf die Frage zu sein.

    – TRIG

    8. März 2014 um 16:11 Uhr

  • _s-xclick bedeutet eine gehostete (gespeicherte) Schaltfläche, soweit ich das beurteilen kann. Mit _xclick Sie müssen alle Daten an Ort und Stelle liefern.

    – x-yuri

    22. Oktober 2015 um 10:03 Uhr

Benutzer-Avatar
Benutzer229044

Hier ist eine, die es dem Benutzer ermöglicht, einen Preis und eine Referenz einzugeben.

HINWEIS: Sie müssen das Geschäft von [email protected] auf Ihre PayPal-E-Mail-Adresse ändern, aber es ist mir recht, wenn Sie dies nicht tun, da dies nur bedeutet, dass ich Ihre Zahlungen erhalte.

Sie können auch gerne currency_code und lc ändern, um sie an Ihr Gebietsschema anzupassen …

                        <form action="https://www.paypal.com/cgi-bin/webscr" method="post">
                            <fieldset>
                                <input type="hidden" name="cmd" value="_xclick" />
                                <input type="hidden" name="business" value="[email protected]" />
                                <input type="hidden" name="lc" value="AU" />
                                <input type="hidden" name="item_name" value="Payment" />
                                <input type="hidden" name="item_number" value="P1" />
                                <input type="hidden" name="currency_code" value="AUD" />
                                <input type="hidden" name="button_subtype" value="services" />
                                <input type="hidden" name="no_note" value="0" />
                                <input type="hidden" name="cn" value="Comments" />
                                <input type="hidden" name="no_shipping" value="1" />
                                <input type="hidden" name="rm" value="1" />
                                <input type="hidden" name="return" value="http://www.ekerner.com/payments/?payment=success" />
                                <input type="hidden" name="cancel_return" value="http://www.ekerner.com/payments/?payment=cancelled" />
                                <input type="hidden" name="bn" value="PP-BuyNowBF:btn_paynowCC_LG.gif:NonHostedGuest" />
                                <table>
                                        <tr><td style="padding:0 5px 5px 0;">Amount AUD</td><td style="padding:0 5px 5px 0;"><input type="text" name="amount" maxlength="200" /></td></tr>
                                        <tr><td style="padding:0 5px 5px 0;"><input type="hidden" name="on0" value="Reference" />Reference</td><td style="padding:0 5px 5px 0;"> <input type="text" name="os0" maxlength="200" /></td></tr>
                                        <tr><td>&nbsp;</td><td style="padding:0 5px 5px 0;">
                                                <input style="position:relative; left:-10px; background:#ffffff; border:0;" type="image" src="https://www.paypalobjects.com/en_AU/i/btn/btn_paynowCC_LG.gif" name="submit" alt="PayPal . The safer, easier way to pay online." />
                                                <img alt="" style="border:0;" src="https://www.paypalobjects.com/en_AU/i/scr/pixel.gif" width="1" height="1" />
                                        </td></tr>
                                </table>
                            </fieldset>
                        </form>

  • Dies scheint keine Antwort auf die Frage zu sein.

    – TRIG

    8. März 2014 um 16:11 Uhr

  • _s-xclick bedeutet eine gehostete (gespeicherte) Schaltfläche, soweit ich das beurteilen kann. Mit _xclick Sie müssen alle Daten an Ort und Stelle liefern.

    – x-yuri

    22. Oktober 2015 um 10:03 Uhr

Leider sind zum Zeitpunkt des Schreibens alle anderen Antworten auf diese Frage falsch – das heißt, wenn Sie versuchen, den Preis von a zu ändern bereitgestellt Taste; darum ging es in der Frage.

Der richtige Weg, dies zu tun, ist unten:

Wichtige Notizen: Wenn Sie die Schaltflächendetails aktualisieren, werden sie nicht nur für diese Benutzersitzung aktualisiert, sondern auch in Ihrem Paypal-Konto – der neue Name/Preis usw. wirkt sich also auf alle Benutzer aus, die versuchen, ihn zu verwenden.

Beachten Sie auch, wenn Sie den Inhalt einer gehosteten Schaltfläche ändern, die Sie übergeben müssen alle die Details der Schaltfläche zum Zeitpunkt der Erstellung; Wenn Sie beispielsweise einen Artikelnamen auslassen, bleibt der Artikelname leer und Paypal erlaubt dem Benutzer, ihn festzulegen.

In diesem Sinne machen wir weiter..

Ich persönlich habe mit dieser Klasse angefangen:

<?php

class Paypal
{
    /**
     * Last error message(s)
     * @var array
     */
    protected $_errors = array();

    /**
     * API Credentials
     * Use the correct credentials for the environment in use (Live / Sandbox)
     * @var array
     */
    protected $_credentials = array(
        'USER' => 'seller_1297608781_biz_api1.lionite.com',
        'PWD' => '1297608792',
        'SIGNATURE' => 'A3g66.FS3NAf4mkHn3BDQdpo6JD.ACcPc4wMrInvUEqO3Uapovity47p',
    );

    /**
     * API endpoint
     * Live - https://api-3t.paypal.com/nvp
     * Sandbox - https://api-3t.sandbox.paypal.com/nvp
     * @var string
     */
    protected $_endPoint="https://api-3t.sandbox.paypal.com/nvp";

    /**
     * API Version
     * @var string
     */
    protected $_version = '74.0';

    /**
     * Make API request
     *
     * @param string $method string API method to request
     * @param array $params Additional request parameters
     * @return array / boolean Response array / boolean false on failure
     */
    public function request($method, $params = array())
    {
        $this->_errors = array();
        if (empty($method)) { //Check if API method is not empty
            $this->_errors = array('API method is missing');
            return false;
        }

        //Our request parameters
        $requestParams = array(
                'METHOD' => $method,
                'VERSION' => $this->_version
            ) + $this->_credentials;

        //Building our NVP string
        $request = http_build_query($requestParams + $params);

        //cURL settings
        $curlOptions = array(
            CURLOPT_URL => $this->_endPoint,
            CURLOPT_VERBOSE => 1,
            CURLOPT_SSL_VERIFYPEER => true,
            CURLOPT_SSL_VERIFYHOST => 2,
            CURLOPT_CAINFO => dirname(__FILE__) . '/cacert.pem', //CA cert file
            CURLOPT_RETURNTRANSFER => 1,
            CURLOPT_POST => 1,
            CURLOPT_POSTFIELDS => $request
        );

        $ch = curl_init();
        curl_setopt_array($ch, $curlOptions);

        //Sending our request - $response will hold the API response
        $response = curl_exec($ch);

        //Checking for cURL errors
        if (curl_errno($ch)) {
            $this->_errors = curl_error($ch);
            curl_close($ch);
            return false;
            //Handle errors
        } else {
            curl_close($ch);
            $responseArray = array();
            parse_str($response, $responseArray); // Break the NVP string to an array
            return $responseArray;
        }
    }
}

?>

Anerkennung: https://www.smashingmagazine.com/2011/09/getting-started-with-the-paypal-api/

Dann habe ich folgendes gemacht:

include(dirname(__FILE__) . '/includes/paypal.class.php');

$paypal = new Paypal();

// Set our method
$method = 'BMUpdateButton';

// Set our params
$params = array(
    'HOSTEDBUTTONID' => 'your_button_id',
    'BUTTONTYPE' => 'BUYNOW',
    'BUTTONSUBTYPE' => 'SERVICES',
    'L_BUTTONVAR0' => 'item_name=Your Description',
    'L_BUTTONVAR1' => 'amount=999.00',
    'L_BUTTONVAR2' => 'currency_code=AUD',
    'L_BUTTONVAR3' => 'cancel_return=http://www.example.com/cancel.html',
    'L_BUTTONVAR4' => 'return=http://www.example.com/success.html'
);

// Make request to change button details
$result = $paypal->request($method, $params);

Beachten Sie, dass Paypal das sagt BUTTONSUBTYPE optional ist, erhalten Sie wahrscheinlich eine Fehlermeldung, wenn Sie es nicht angeben.

Leider sind die Paypal-Dokumente nicht sehr klar und bieten nicht die besten Beispiele, also hoffe ich, dass dies jemand anderem die vielen Stunden erspart, die ich damit verbracht habe, herauszufinden, wie das geht.

1131130cookie-checkPreisvariable an PayPal mit benutzerdefinierter Schaltfläche übergeben

This website is using cookies to improve the user-friendliness. You agree by using the website further.

Privacy policy