Paypal plugin

  • Hallo,

    ich bin gerade dabei, für unseren Verein eine Möglichkeit zu schaffen, sich online für unsere Ausflüge zu registrieren. Zuvor wurde das alles mit Excellisten realisiert, was gerne zu einem Durcheinander geführt hat. Nun möchte ich alles automatisieren. Anmeldung, Anzahlung und Bettvergabe. Die Touren gehen über das Wochenende und daher ist von den Mitgliedern eine Anzahlung für die Übernachtung fällig. Dies hatten wir bis jetzt immer über PayPal senden an einen Freund an unser Vereinskonto gemacht.
    Ich habe nun Wordpress auf einem Server am Laufen. Als "Produkte" habe ich die Zimmer (EZ, DZ,...) erstellt. Der Preis ist dabei die Anzahlung. Mit dem Lagerbestand stelle sicher, dass ein Zimmer nicht überbucht werden kann. Eines der Vorteile von WP. Die Seite hat also keinerlei kommerziellen Hintergrund.
    Mein Problem ist, dass ich kein Plugin finde, mit dem ich die Zahlung an Freunde realisieren kann. Auch funktioniert mein selbst zusammengebasteltes Plugin nicht. Wer hat eine Idee?

    [PLAIN]
    <?php
    defined( 'ABSPATH' );

    /**
    * Plugin Name: WooCommerce PayPal Send to Friend
    * Description: This plugin allows you to send a PayPal payment to a friend.
    * Version: 0.0.8
    * Author: Marcus
    */
    add_action( 'plugins_loaded', function() {
    // Register the new payment gateway.
    add_action( 'woocommerce_payment_gateways', function() {
    register_woocommerce_payment_gateway( new WC_Gateway_PayPal_Send_To_Friend() );
    });

    // Add the settings page.
    add_action( 'admin_menu', function() {
    add_submenu_page(
    'woocommerce',
    'PayPal Send to Friend',
    'PayPal Send to Friend',
    'manage_options',
    'wc-settings-paypal-send-to-friend',
    function() {
    include 'views/settings-page.php';
    }
    );
    });
    });

    /**
    * Class WC_Gateway_PayPal_Send_To_Friend
    *
    * Represents the PayPal Send to Friend payment gateway.
    */
    class WC_Gateway_PayPal_Send_To_Friend extends WC_Payment_Gateway {

    /**
    * Constructor.
    */
    public function __construct() {
    $this->id = 'paypal_send_to_friend';
    $this->method_title = __( 'PayPal Send to Friend', 'woocommerce' );
    $this->method_description = __( 'Allows you to send a PayPal payment to a friend.', 'woocommerce' );
    $this->supports = array(
    'products',
    'subscriptions',
    'recurring_payments',
    );
    }

    /**
    * Get the payment gateway settings.
    *
    * @return array
    */
    public function get_settings() {
    return array(
    'enabled' => array(
    'title' => __( 'Enable', 'woocommerce' ),
    'type' => 'checkbox',
    ),
    'title' => array(
    'title' => __( 'Title', 'woocommerce' ),
    'type' => 'text',
    'default' => __( 'PayPal Send to Friend', 'woocommerce' ),
    ),
    'description' => array(
    'title' => __( 'Description', 'woocommerce' ),
    'type' => 'textarea',
    'default' => __( 'Send a PayPal payment to a friend.', 'woocommerce' ),
    ),
    );
    }

    /**
    * Process the payment.
    *
    * Param WC_Order $order
    * @return WC_Payment_Gateway_Result
    */
    public function process_payment( $order_id ) {
    $order = wc_get_order( $order_id );

    $redirect_url = add_query_arg(
    array(
    'wc_order' => $order->get_id(),
    ),
    wc_get_checkout_url()
    );

    return new WC_Payment_Gateway_Result(
    array(
    'result' => 'success',
    'redirect' => $redirect_url,
    )
    );
    }

    }

    [/PLAIN]

    [PLAIN]
    <div class="wrap">
    <h1><?php echo esc_html( get_admin_page_title() ); ?></h1>
    <?php
    settings_fields( 'paypal_send_to_friend_settings' );
    do_settings_sections( 'paypal_send_to_friend_settings' );
    ?>
    <form method="post" action="options.php">
    <table class="form-table">
    <tr>
    <th scope="row"><label for="friend_email"><?php _e( 'Freund E-Mail', 'woocommerce' ); ?></label></th>
    <td>
    <input type="email" name="friend_email" id="friend_email" value="<?php echo esc_attr( get_option( 'friend_email', '' ) ); ?>" class="regular-text" required />
    </td>
    </tr>
    <tr>
    <th scope="row"><label for="payment_amount"><?php _e( 'Zahlungsbetrag', 'woocommerce' ); ?></label></th>
    <td>
    <input type="number" name="payment_amount" id="payment_amount" value="<?php echo esc_attr( get_option( 'payment_amount', '' ) ); ?>" step="0.01" min="0" required />
    </td>
    </tr>
    </table>
    <?php
    submit_button();
    ?>
    </form>
    </div>

    [/PLAIN]

    Danke schon einmal für eure Ideen und Ratschläge

    • Anzeige

    Hallo!

    Wenn du gerade an deiner Website arbeitest oder dein aktuelles Hosting überdenkst: Wir betreiben mit NetzLiving eine Hosting-Plattform, die speziell auf Performance, Sicherheit und einfache Verwaltung ausgelegt ist.

    • ✔️ Schnelle Ladezeiten (optimiert für WordPress & Co.)
    • ✔️ Deutsche Server & DSGVO-konform
    • ✔️ Persönlicher Support (kein 0815-Ticket-System)

    Mehr erfahren


  • Mein Problem ist, dass ich kein Plugin finde, mit dem ich die Zahlung an Freunde realisieren kann. Auch funktioniert mein selbst zusammengebasteltes Plugin nicht. Wer hat eine Idee?

    [PLAIN]
    <?php
    defined( 'ABSPATH' );
    [/PLAIN]

    Dies gibt einen booleschen Wert zurück, der angibt, ob die Konstante `ABSPATH` definiert ist oder nicht.

    verwende- schon aus Sicherheitsgründen besser

    Code
    if (!defined('ABSPATH')) die('No direct access allowed');

    Dieser Code fügt eine Einstellungsseite für das Plugin "PayPal Send to Friend" hinzu, das es ermöglicht, Zahlungen an Freunde über PayPal zu senden. Der Code verwendet die Funktion `add_action` mit dem Hook `admin_menu`, um die Funktion zu registrieren, die die Einstellungsseite erstellt.

    Die Funktion `add_submenu_page` fügt dann einen Untermenüpunkt unter dem WooCommerce-Menü hinzu, der den Titel, den Menütitel, die Berechtigung und den Slug der Einstellungsseite angibt. Die letzte Parameter der Funktion `add_submenu_page` ist eine anonyme Funktion, die die Datei `views/settings-page.php` einbindet, die den Inhalt der Einstellungsseite enthält.

    In der Regel muss man weitere Schlüssel für die Nutzung von PayPal verwenden. Die Erfassung fehlt hier.

    hier ein Beispiel wie ich dies früher gemacht habe.

    heute verwendet man von Paypal eine rest api oder Javascript SDK... aber vom Prinzip noch geleich... ohne 'YOUR_CLIENT_ID', // ClientID
    und 'YOUR_CLIENT_SECRET' // ClientSecret läuft nichts. bei PayPla gibt es für Entwickler einen Sandkasten (nennen die halt so) Get Started (paypal.com)

    Mit offenen Augen träumen

  • Vielen Dank für deine Antwort. Leider gibt es gerade Schwierigkeiten bei meinem PayPal Account mit dem Login. Deren IT Abteilung will sich der Sache annehmen. Darum kann ich gerade die YOUR_CLIENT_ID und YOUR_CLIENT_SECRET nicht auslesen und es testen.
    So wie ich das Beispiel verstehe, wird ein fixer Betrag ("value":"10.00") überwiesen. Ist es möglich dies so zu ändern, dass der Kassen-Gesamtbetrag übernommen wird?

    Mit PHP hatte ich bis jetzt überhaupt nichts zu tun. Meine Stärken sind VBA und Datenbankprogrammierung. Hilft mir hier nicht wirklich.
    Zuvor hatte ich eine HTML Lösung welche mit einem Formular gelöst wurde:


    Eine ähnlich simple Lösung würde ich auch gerne mit wordpress hinbekommen.

    Ich weiß, dass es in dem Fall keine Rückmeldung von PayPal gibt, dass auch wirklich bezahlt wurde, was aber kein größeres Problem ist. Ziel ist es, dass jeder nur das buchen kann, was vorhanden ist (Lagerbestand) und dass er danach auf die PayPal Seite weitergeleitet wird und der richtige Betrag voreingestellt ist.

    Danke und Gruß
    Marcus


  • Deren IT Abteilung will sich der Sache annehmen. Darum kann ich gerade die YOUR_CLIENT_ID und YOUR_CLIENT_SECRET nicht auslesen und es testen.

    Da kommen ja nicht deine Zugangsdaten rein, sondern die vom Verein. Diese erstellst du dir über
    https://developer.paypal.com/developer/applications/create



    So wie ich das Beispiel verstehe, wird ein fixer Betrag ("value":"10.00") überwiesen. Ist es möglich dies so zu ändern, dass der Kassen-Gesamtbetrag übernommen wird?


    Selbstverständlich
    https://paypal.github.io/PayPal-PHP-SDK/

    PayPal hat aber die Entwicklung von der PHP-SDK eingestellt und verwendet jetzt in der Dokumention JavaScript oder REST-API über curl


    Mit PHP hatte ich bis jetzt überhaupt nichts zu tun. Meine Stärken sind VBA und Datenbankprogrammierung. Hilft mir hier nicht wirklich.

    man kann relativ einfach und schnell php lernen
    https://riptutorial.com/php/awesome-learning/tutorial



    Zuvor hatte ich eine HTML Lösung welche mit einem Formular gelöst wurde:

    Hier wird PayPal me verwendet.

    PayPal.me ist eine einfache Möglichkeit, personalisierte Links zu erstellen, die du mit deinen Unterstützern teilen kannst. Um PayPal.me zu verwenden, musst du zunächst ein PayPal-Konto erstellen und einen PayPal.me-Link beanspruchen.

    Dann kannst du den Link an deine Spender senden oder auf deiner Website anzeigen. Deine Spender können dann auf den Link klicken oder ihn in ihren Browser eingeben und den gewünschten Betrag eingeben. Sie werden dann zu PayPal weitergeleitet, wo sie sich anmelden oder ein Konto erstellen und die Zahlung abschließen können.

    ein Betrag mitsenden


    Eine ähnlich simple Lösung würde ich auch gerne mit wordpress hinbekommen.

    javascript:
    Erstelle eine neue JavaScript-Datei und füge den folgenden Code hinzu:

    1. Füge den folgenden HTML-Code zu deiner Website hinzu:
    Code
    <input type="text" id="amount" placeholder="Amount">
    <input type="text" id="paypalMeId" placeholder="PayPal.Me ID">
    <button onclick="sendPayment(document.getElementById('amount').value, document.getElementById('paypalMeId').value)">Send Payment</button>


    1. Öffne die Website in deinem Browser und gib einen Betrag und eine PayPal.Me-ID ein. Klicke dann auf die Schaltfläche "Send Payment".


    Die Zahlung wird an das PayPal.Me-Konto gesendet.


    Ich weiß, dass es in dem Fall keine Rückmeldung von PayPal gibt, dass auch wirklich bezahlt wurde, was aber kein größeres Problem ist.

    der, der zahlt, bekommt keine Rückmeldung? glaube ich nicht! Und in meinem Code Beispiel bekommt man "console.log("Payment successful.");" zurück..

    Zitat


    Ziel ist es, dass jeder nur das buchen kann, was vorhanden ist (Lagerbestand) und dass er danach auf die PayPal Seite weitergeleitet wird und

    WooCommerce verfügt über fertige Schnittstellen. (nur vermutlich nicht für PayPal ME. Unter Covid konnte man PayPal me einfach an die Kasse hängen und die Kunden haben mit dem QR Code eben bezahlt.

    Mit offenen Augen träumen

    3 Mal editiert, zuletzt von r23 (30. Juli 2023 um 19:18)

  • Da kommen ja nicht deine Zugangsdaten rein, sondern die vom Verein. Diese erstellst du dir über
    https://developer.paypal.com/developer/applications/create


    Genau der funktioniert im Moment nicht. Die Hinterlegte Telefonnummer fängt mit der Länderkennzahl an. Daher kann ich beim Login die Nummer nicht verifizieren. Kann leider nur telefonisch geändert werden. Mo-Sa.



    man kann relativ einfach und schnell php lernen
    https://riptutorial.com/php/awesome-learning/tutorial


    ;-) Ich habe mir den Link mal in die Favoriten gelegt. Danke.



    javascript:
    Erstelle eine neue JavaScript-Datei und füge den folgenden Code hinzu:

    1. Füge den folgenden HTML-Code zu deiner Website hinzu:
    Code
    <input type="text" id="amount" placeholder="Amount">
    <input type="text" id="paypalMeId" placeholder="PayPal.Me ID">
    <button onclick="sendPayment(document.getElementById('amount').value, document.getElementById('paypalMeId').value)">Send Payment</button>


    1. Öffne die Website in deinem Browser und gib einen Betrag und eine PayPal.Me-ID ein. Klicke dann auf die Schaltfläche "Send Payment".


    Die Zahlung wird an das PayPal.Me-Konto gesendet.


    Das werde ich morgen versuchen, sobald ich wieder Zugang habe und die API auslesen kann. Muss dann schauen, wie ich das in die "Kassen-HTML" integriere.


    der, der zahlt, bekommt keine Rückmeldung? glaube ich nicht! Und in meinem Code Beispiel bekommt man "console.log("Payment successful.");" zurück..


    Ich meinte, dass es keine Rückmeldung an wordpress gibt, dass der "Kunde" bezahlt hat. Glaube ich zumindest.


    WooCommerce verfügt über fertige Schnittstellen. (nur vermutlich nicht für PayPal ME. Unter Covid konnte man PayPal me einfach an die Kasse hängen und die Kunden haben mit dem QR Code eben bezahlt.


    Ich habe kein entsprechendes Plugin gefunden.

    Vielen Dank für deine Hilfe und Kompetenz.

    Gruß
    Marcus

Jetzt mitmachen!

Sie haben noch kein Benutzerkonto auf unserer Seite? Registrieren Sie sich kostenlos und nehmen Sie an unserer Community teil!