Ankündigung

Einklappen
Keine Ankündigung bisher.

Zahlungsanbieter Stripe - Beschreibung übergeben

Einklappen

Neue Werbung 2019

Einklappen
X
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • Zahlungsanbieter Stripe - Beschreibung übergeben

    Hallo,
    Ich hoffe hier kann mir jemand bei meinem Problem mit Stripe behilflich sein. Betreibe einen Webshop mit den Zahlarten Paypal, Sofortüberweisung und Kreditkarte. Bislang benutzen wir Ipayment aber wollen endlich auf Stripe umstellen. Auf einer Seite von uns nutzen wir das auch schon.
    Bisher habe ich alle meine Php Probleme mit viel lesen und/oder probieren gemeistert aber hier scheitere ich jetzt seit vielen Wochen und Arbeitsstunden kläglich.

    Für die Buchhaltung wäre es sehr wichtig, dass in Stripe in der Übersicht unter „Beschreibung“ unsere Auftragsnummer steht.

    Auf dem folgenden Bild ist die Zahlungsübersicht zu sehen. Aktuell steht unter "Beschreibung" immer die ZahlungsID die Stripe am Ende erstellt. Hier muss unsere Auftragsnummer stehen - von einem anderen Projekt weiß ich, dass das geht aber der Programmierer kann kein Php und macht nur C#

    stripeueber.png

    Wenn man eine Zahlung anklickt, erscheinen die Details wie im folgenden Bild zu sehen ist
    Dort in der Mitte wo "Auftrag 532818" wird mit meinen Code zwar die Variable "description" übergeben, aber diese wird nicht in der Bestätigungsmail von Stripe mit gesendet, noch lässt sich diese per Suche im Stripe System suchen.
    Ganz unten am Bild steht ein weiteres mal "Beschreibung" - diese kann ich von Hand editieren und führt zu dem Ergebnis was ich gerne hätte. Aber das kann es ja nicht sein. Im englischen steht ebenfalls beides mal "discription"
    stripegenau.png

    Beim Code hab ich mir aktuell komplett an das Beispiel von Stripe gehalten - und es läuft sonst alles.
    Ich hatte schon die Vermutung, dass ich nach einer erfolgreichen Zahlung erst diese Variable übertragen kann. Wenn dem so wäre, wäre ich sehr ratlos.


    PHP-Code:
    session_start();

    // Include configuration file   
    require_once 'location.php';   // hier sind Verbindungen zur DB gespeichert ect

    $id             $_SESSION["id"];
    $urkundenart     $_SESSION["produktart"];

    $preis $_SESSION["price"];

    $stripeAmount =  $preis;
    $productName    "Firmenname";  
    $productID      $produktart;
    $orderID        "Auftrag " $id;  
    $currency       "eur"


    $_SESSION["productName"]  = $productName;
    $_SESSION["productID"]    = $productID;


    // Include Stripe PHP library  
    require_once 'stripe-php/init.php'

    use 
    Stripe\Stripe;

    \
    Stripe\Stripe::setApiKey($stripe_apikey);            //\Stripe\Stripe::setApiKey(STRIPE_API_KEY); 

    $response = array( 
        
    'status' => 0
        
    'error' => array( 
            
    'message' => 'Invalid Request!'    
        

    ); 

    if (
    $_SERVER['REQUEST_METHOD'] == 'POST') { 
        
    $input file_get_contents('php://input'); 
        
    $request json_decode($input);     


    if (
    json_last_error() !== JSON_ERROR_NONE) { 
        
    http_response_code(400); 
        echo 
    json_encode($response); 
        exit; 


    if(!empty(
    $request->checkoutSession)){ 
        
    // Create new Checkout Session for the order 
        
    try { 
            
    $session = \Stripe\Checkout\Session::create([              <-------------  UM DIESEN BEREICH MÜSSTE ES GEHEN
                
    'payment_method_types' => ['card'], 
                
    'line_items' => [[ 
                    
    'price_data' => [ 
                        
    'product_data' => [ 
                            
    'name' => $productName
                            
    'metadata' => [ 
                                
    'pro_id' => $productID 
                            

                        ], 
                        
    'unit_amount' => $stripeAmount
                        
    'currency' => $currency
                    ], 
                    
    'quantity' => 1
                    
    'description' => $orderID
                ]], 

                
    'mode' => 'payment'
                
    'success_url' => $stripe_success .'?session_id={CHECKOUT_SESSION_ID}'
                
    'cancel_url' => $stripe_cancel
            ]); 
        }catch(
    Exception $e) {  
            
    $api_error $e->getMessage();  
        } 

        if(empty(
    $api_error) && $session){ 
            
    $response = array( 
                
    'status' => 1
                
    'message' => 'Checkout Session created successfully!'
                
    'sessionId' => $session['id'
            ); 
        }else{ 
            
    $response = array( 
                
    'status' => 0
                
    'error' => array( 
                    
    'message' => 'Checkout Session creation failed! '.$api_error    
                

            ); 
        } 


    // Return response 
    echo json_encode($response);

    $_SESSION["response"]  = $response

    Ich hoffe, ich habe um diese Uhrzeit mein Problem noch halbwegs sinnvoll schildern können. Bin gerade wieder verzweifelt.
    Viele Dank für Eure Aufmerksamkeit und bleibt gesund.
    Brataccas

  • #2
    moin,.
    ich nehme an es geht um die metadata
    Code:
    metadata' =>  [   'pro_id' => $productID  ]
    dazu steht in der docu:

    and won't be seen by your users unless you choose to show it to them.
    wie das geht keine ahnung, einen versuch sehe ich oben auch nicht.

    update:
    ne geht es nicht, es geht um descrition..
    weiss ich auch nicht

    Kommentar


    • #3
      Zitat von Brataccas Beitrag anzeigen
      ... von einem anderen Projekt weiß ich, dass das geht aber der Programmierer kann kein Php und macht nur C# ...
      Es spielt am Ende keine Rolle ob er PHP kann oder nicht, da er die selbe API von Stripe nutzen muss wie du. Von daher wuerde es sogar ausreichen wenn dir dieser Programmierer mitteilt welchen Feldparameter er nutzt um diese Information an Stripe zu uebermitteln.

      Kommentar


      • #4
        Zitat von CPCoder Beitrag anzeigen

        Es spielt am Ende keine Rolle ob er PHP kann oder nicht, da er die selbe API von Stripe nutzen muss wie du. Von daher wuerde es sogar ausreichen wenn dir dieser Programmierer mitteilt welchen Feldparameter er nutzt um diese Information an Stripe zu uebermitteln.
        Der Programmierer hat mir folgenden C# Code von sich geschickt

        PHP-Code:
                     var options = new SessionCreateOptions
                    
        {
                        
        PaymentMethodTypes = new List<string> { "card" },
                        
        LineItems = new List<SessionLineItemOptions> {
                            new 
        SessionLineItemOptions {
                                
        Name Settings.Domain,
                                
        Description = $"Bestellnummer #{order.Id}",   //customer see it when making payment on Stripe page
                                
        Amount order.StripeAmount,
                                
        Currency "eur",
                                
        Quantity 1,
                            },
                        },
                        
        PaymentIntentData = new SessionPaymentIntentDataOptions
                        
        {
                            
        Description = $"{Settings.Domain} #{order.Id}",    //This is Description you want
                            
        StatementDescriptor =  Settings.Domain ,
                            
        Metadata = new Dictionary<stringstring>
                            {
                                { 
        "email"order.Email },
                                { 
        "useragent"Request.UserAgent },
                                { 
        "ip"Utilities.GetClientIp() }
                            }
                        },
                    };

                    var 
        service = new SessionService(client);
                    var 
        session service.Create(options); 
        Leider hab ich es damit einfach nicht hinbekommen. Hoffe, dass vielleicht jemand der schon Stripe mit php integriert hat, die Lösung sofort kennt.

        Kommentar


        • #5
          Zitat von Brataccas Beitrag anzeigen
          Leider hab ich es damit einfach nicht hinbekommen.
          Das die Datenstruktur aber irgendwie gleich aussieht, siehst du nicht?! Die Beschreibung kommt offenslich aus PaymentIntentData.Description. Das Element hast du nicht. Da schaust du mal in die Anleitung was diese Element macht, ob es noch irgendwelche Anforderungen gibt und fügst das deinem Code hinzu. Im Zweifel fügst dus blind hinzu 'payment_intent_data' => ['description' => 'GEILE BESTELLUNG'] hinzu und schaust was rauskommt.

          Kommentar


          • #6
            Biepielcode (ungetestet!):
            PHP-Code:
                try {
                    
            $session = \Stripe\Checkout\Session::create([              <-------------  UM DIESEN BEREICH MÜSSTE ES GEHEN
                        
            'payment_method_types' => ['card'],
                        
            'line_items' => [[
                            
            'price_data' => [
                                
            'product_data' => [
                                    
            'name' => $productName,
                                    
            'metadata' => [
                                        
            'pro_id' => $productID
                                    
            ]
                                ],
                                
            'unit_amount' => $stripeAmount,
                                
            'currency' => $currency,
                            ],
                            
            'quantity' => 1,
                            
            'description' => $orderID,
                        ]],
                        
            'payment_intent_data' => [             // Das ist der Block der von [USER="10291"]erc[/USER] beschrieben wurde.
                            
            'description' => 'GEILE BESTELLUNG'
                        
            ],
                        
            'mode' => 'payment',
                        
            'success_url' => $stripe_success .'?session_id={CHECKOUT_SESSION_ID}',
                        
            'cancel_url' => $stripe_cancel,
                    ]);
                }catch(
            Exception $e) {  
                    
            $api_error $e->getMessage();  
                } 

            Kommentar

            Lädt...
            X