1. #1

    Registriert seit
    27.02.2017
    Beiträge
    39
    Thanked 2 Times in 2 Posts

    Unglücklich [HILFE] GEN-Template PayPal Kaufabwicklung funktioniert nicht

    Hallo liebe Community,

    Ich habe schon viel Anregung hier im Forum verursacht durch mein heruntergeladenes Template.
    Erstmal vielen Dank für die ganzen Antworten und die schnelle Hilfe. Es hat alles funktioniert.
    Nun hab ich ein neues Problem, wo ich nicht weiter komme..

    Man kann sich im Admin Panel als Administrator einloggen und seine PayPal-Adresse angeben.
    Da ich auf meiner Seite Package bzw. Ränge anbiete: "Bronze, Silber und Gold" um die Seite bzw.
    den Bereich: "Privat Generator, Generator" zu öffnen wenn man sich nen' Rang gekauft hat.

    Soweit gut. Wie ich erfahren hab, muss man ein Business PayPal Account haben, hab ich nun beantragt.
    Hat auch super funktioniert. Trotz dem Kauf Button und meine eingebene E-Mail von Paypal.. funktioniert es
    immer noch nicht und zeigt mir nen' Fehler bei PayPal an.

    Ich habe mal in der purchase.php die Adresse entfernt und meine PayPal Adresse hinzugefügt. Nun funktioniert der
    mittlere Kauf Button und führt den Kunden zur PayPal hin. Zum Test haben wir einen Kollegen gefragt, der es für 1 Cent
    mal ausprobieren konnte. Die Kaufabwicklung ging, aber erhielt keinen Rang bzw. Package auf der Seite von mir.

    Ich habe 3 Verkaufs Button auf der Seite..

    Kann mir wer dabei bitte helfen? Mir bisschen auf die sprünge zu helfen. Woran der Fehler liegt und ich eventuell die
    Zeile bearbeiten oder löschen kann. Damit die Kaufabwicklung funktioniert. Oder liegt es an meiner Einstellung auf PayPal,
    Php oder in der Datenbank?

    Hier der originale Source von der purchase.php
    PHP-Code:
    <?php

    include 'inc/header.php';


    $result mysqli_query($con"SELECT * FROM `subscriptions` WHERE `username` = '$username' AND `active` = '1' AND `expires` >= '$date'") or die(mysqli_error($con));
    if (
    mysqli_num_rows($result) < && $_SESSION['rank'] != "5") {
        
    $subscription "0";
    }else{
        
    $subscription "1";
    }

    if(isset(
    $_POST['purchase'])){
        
    $id mysqli_real_escape_string($con$_POST['purchase']);
        
    $result mysqli_query($con"SELECT * FROM `packages` WHERE `id` = '$id'") or die(mysqli_error($con));

        while (
    $row mysqli_fetch_array($result)) {
            
    $packageprice $row['price'];
            
    $packagename $website." - ".$row['name'];
            
    $custom $row['id']."|".$username;
        }
        
        
    $paypalurl "https://www.paypal.com/cgi-bin/webscr?cmd=_xclick&amount=".urlencode($packageprice)."&business=".urlencode($paypal)."&page_style=primary&item_name=".urlencode($packagename)."&return=https://".$_SERVER['SERVER_NAME'].dirname($_SERVER['REQUEST_URI'])."/purchase.php?action=buy-success&rm=2&notify_url=http://".$_SERVER['SERVER_NAME'].dirname($_SERVER['REQUEST_URI'])."/lib/ipn.php"."&cancel_return=https://".$_SERVER['SERVER_NAME'].dirname($_SERVER['REQUEST_URI'])."/purchase.php?action=buy-error&custom=".urlencode($custom)."&mc_currency=USD";
        
    header('Location: '.$paypalurl);
    }


    $totalalts 0;
    $result mysqli_query($con"SELECT * FROM `generators`") or die(mysqli_error($con));

    while(
    $row mysqli_fetch_assoc($result)) {
        
    $result2 mysqli_query($con"SELECT * FROM `generator$row[id]` WHERE `status` != '0'") or die(mysqli_error($con));
        
    $totalalts $totalalts mysqli_num_rows($result2);
    }
    $result mysqli_query($con"SELECT * FROM `freegenerators`") or die(mysqli_error($con));

    while(
    $row mysqli_fetch_assoc($result)) {
        
    $result2 mysqli_query($con"SELECT * FROM `freegenerator$row[id]` WHERE `status` != '0'") or die(mysqli_error($con));
        
    $totalfree $totalfree mysqli_num_rows($result2);
    }

    $totalfreenpaid $totalalts $totalfree $privtotalalts;
    $result mysqli_query($con"SELECT * FROM `users`") or die(mysqli_error($con));
    $totalusers mysqli_num_rows($result);

    if (isset(
    $_GET['delete'])){
        
    $id mysqli_real_escape_string($con$_GET['delete']);
        
    mysqli_query($con"DELETE FROM `news` WHERE `id` = '$id'") or die(mysqli_error($con));

        echo 
    '
            <script>
                window.history.replaceState("object or string", "Title", "index.php");
            </script>
        '
    ;
    }


    $result mysqli_query($con"SELECT * FROM `news`") or die(mysqli_error($con));
    $totalnews mysqli_num_rows($result);
    $result mysqli_query($con"SELECT * FROM `news` WHERE DATE(date) = '$date'") or die(mysqli_error($con));
    $todaysnews mysqli_num_rows($result);
    $generatestotal 0;
    $result mysqli_query($con"SELECT * FROM `statistics` WHERE `username` = '$username'") or die(mysqli_error($con));
    while(
    $row mysqli_fetch_assoc($result)) {
        
    $generatestotal $generatestotal $row['generated'];
    }
    $result mysqli_query($con"SELECT * FROM `users` WHERE `date` = '$date'") or die(mysqli_error($con));

    $todaysusers mysqli_num_rows($result);
    $result mysqli_query($con"SELECT * FROM `subscriptions` WHERE `active` = '1' AND `expires` >= '$date'") or die(mysqli_error($con));
    $activesubscriptions mysqli_num_rows($result);
    $privtotalalts 0;
    $result mysqli_query($con"SELECT * FROM `privgenerators`") or die(mysqli_error($con));

    while(
    $row mysqli_fetch_assoc($result)) {
        
    $result2 mysqli_query($con"SELECT * FROM `privgenerator$row[id]` WHERE `status` != '0'") or die(mysqli_error($con));
        
    $privtotalalts $privtotalalts mysqli_num_rows($result2);
    }
    $privgeneratestotal 0;
    $result mysqli_query($con"SELECT * FROM `privstatistics` WHERE `username` = '$username'") or die(mysqli_error($con));
    while(
    $row mysqli_fetch_assoc($result)) {
        
    $privgeneratestotal $privgeneratestotal $row['generated'];
    }

    $pageTitle 'Purchase'// Call this in your pages' files to define the page title

    date_default_timezone_set('UTC');

    function 
    humanTiming ($time)
    {
        
    $time strtotime("$time + 4 hours");

        
    $time time() - $time// to get the time since that moments
        
    $time = ($time<1)? $time;
        
    $tokens = array (
            
    31536000 => 'year',
            
    2592000 => 'month',
            
    604800 => 'week',
            
    86400 => 'day',
            
    3600 => 'hour',
            
    60 => 'minute',
            
    => 'second'
        
    );

        foreach (
    $tokens as $unit => $text) {
            if (
    $time $unit) continue;
            
    $numberOfUnits floor($time $unit);
            return 
    $numberOfUnits.' '.$text.(($numberOfUnits>1)?'s':'');
        }

    }


    ?>

    <?php include("noob/header.php"); ?>
           <div class="row">
             <div class="col-md-12 grid-margin">
                     <div class="card ">
                                        <div class="card-header">
                                            <div class="card-title">Wählen Sie ein Paket aus</div>
                                        </div>
                                        <div class="card-body p-4">
            <?php
              
    if($_GET['action'] == "buy-success"){
                  
    $result mysqli_query($con"SELECT * FROM `subscriptions` WHERE `username` = '$username' AND `date` = '$date'") or die(mysqli_error($con));
                  if (
    mysqli_num_rows($result) < 1) {
                      echo 
    '
                      <div class="alert bg-primary" role="alert">
                        Warten auf den Abschluss des Kaufs. Wenn dies nicht der Fall ist, senden Sie uns eine Nachricht mit Ihrer Paypal-E-Mail und dem gekauften Paket oder einer Nachricht <a href="https://www.facebook.com/Hypergenshop/" target="_blank">HyperGen</a>
                    </div>
                                        <script type="text/javascript">
                                            window.setTimeout(function(){window.location.href="purchase.php?action=buy-success"},20000);
                                        </script>
                      '
    ;
                  }else{
                    echo 
    '
                          <div class="alert bg-success" role="alert">
                        Danke für ihren Einkauf! Sie haben Ihr Abonnement erfolgreich erhalten.
                        Besuchen Sie die <a href="generator.php">Generator Seite</a> um zu generieren.
                        </div>
                    '
    ;
                  }
              }
              
    ?>
           
                                    <div class="table-sorter-wrapper col-lg-12 ">
                          <table id="sortable-table-2" class="table table-striped"> 
                                  <tbody>
                  
                        <tr>
                            <th>
                                <div class="th-inner ">Paket</div>
                                <div class="fht-cell"></div>
                            </th>
                            <th>
                                <div class="th-inner ">Preis</div>
                                <div class="fht-cell"></div>
                            </th>
                            <th>
                                <div class="th-inner ">Generator(s)</div>
                                <div class="fht-cell"></div>
                            </th>
                            <th>
                                <div class="th-inner ">Laufzeit</div>
                                <div class="fht-cell"></div>
                            </th>
                            <th>
                                <div class="th-inner ">Accounts</div>
                                <div class="fht-cell"></div>
                            </th>
                                <th>
                                <div class="th-inner ">Generator History</div>
                                <div class="fht-cell"></div>
                            </th>
                            <th>
                                <div class="th-inner ">Bezahlung</div>
                                <div class="fht-cell"></div>
                            </th>
                           
                        </tr>
                                                </tbody>
                    <tbody>
                            <?php
                        $result 
    mysqli_query($con"SELECT * FROM `packages` ORDER BY CAST(price AS DECIMAL(10,2))");
                        while (
    $row mysqli_fetch_assoc($result)) {
                            if(
    $row['generator'] == ""){
                                
    $generatorname "All";
                            }else{
                                
    $generatorquery mysqli_query($con"SELECT * FROM `generators` WHERE `id` = '$row[generator]'") or die(mysqli_error($con));
                                while(
    $row1 mysqli_fetch_array($generatorquery)){
                                    
    $generatorname $row1['name'];
                                }
                            }
                            if(
    $row['accounts'] == "0" || $row['accounts'] == ""){
                                
    $accounts "Unlimited";
                            }else{
                                
    $accounts $row['accounts']."/Tag";
                            }
                            
    $name $row['name'];
                            
    $price $row['price'];
                            
    $length $row['length'];
                            
    $gen_history $row['gen_history'];
                            echo 
    "
                            <tr>
                            <td>
    $name</td>
                            <td>
    $price<span style='color: #009900;'>€</span></td>
                            <td>
    $generatorname</td>
                            <td>
    $length</td>
                            <td>
    $accounts</td>
                            <td>
    $gen_history</td>
                            <td>
                            "
    .'<form method="POST" action="purchase.php">
                                            <input type="hidden" name="purchase" value="'
    .$row['id'].'"/>
                                                            <button type="submit" class="btn btn-info waves-effect waves-light m-t-20"
                                                            
                                                            '
    ;
                            if (
    $subscription != "0" || $_SESSION['rank'] == "5"){
                                echo 
    "disabled";
                            }
                            echo 
    '
                                                            
                                                            >Kaufen!</button>
                                                            </form>'
    ."
                            </td>
                        
                            </tr>
                            "
    ;
                        }
                        
    ?>
                                                </tbody></table>
            </div> </div>
        </div> </div>
        
              <div class="col-lg-12">
                            <div class="card card-outline-info">
                                <div class="card-header">
                                    <h4 class="m-b-0 text-white">Ihr Abonnement</span></h4>
                                </div>
                                <div class="card-block">
                                        <div class="form-body">
                                      <p>
                                          <table class="table table-hover">
                              <thead>
                                <tr>
                                  <th>Paket ID</th>
                                  <th>Gekauft mit</th>
                                  <th>Preis</th>
                                  <th>Läuft ab</th>
                                  <th>Status</th>
                                  <th>Bestellt</th>
                                </tr>
                              </thead>
                                  <tbody>
                                  <?php
                      $result 
    mysqli_query($con"SELECT * FROM `subscriptions` WHERE `username` = '$username' ORDER BY `id` DESC ");
                      while (
    $row mysqli_fetch_assoc($result)) {
                      echo 
    '
                        <tr>
                          <td><b>'
    .$row['package'].'</b></td>
                          <td>'
    $row['payment'] .'</td>
                          <td>'
    $row['price'] .'</td>
                          <td>'
    $row['expires'] .'</td>';
                                                        if(
    $row['active'] == "1"){echo '<td><span class="badge badge-success">Active</span></td>';}elseif($row['active'] == "0"){echo '<td><span class="badge badge-red">Ended</span></td>';}else{echo '<td></td>';}
                                                echo 
    '
                          <td><b> '
    humanTiming($row['time']) .' ago</b></td>
                        </tr>
                      '
    ;
                      }
                    
    ?>
                                  </tbody>
                              </table>
                                      </p>
                                </div>
                            </div>
                        </div>
                        </div>
                   
                   
                   
    </div> </div></div> </div>
     <?php include("noob/footer.php"); ?>
    Und in Zeile 23 habe ich mal "https://www.paypal.com/cgi-bin/webscr?cmd=_xclick&amount=" durch meine
    PayPal Adresse ersetzt. Und dann passierte das halt mit den mittleren Button, bezahlung ging aber er erhielt
    keinen Rang bzw. Package. Aber der untere Button und oberer ging nicht. Und bei den Originalen Source kam das
    Code:
    PayPal - Leider ist ein Systemfehler aufgetreten. Versuchen Sie es später noch einmal.
    Hier ein paar Screens von der ganzen Situation:
    https://ibb.co/jzHNGqK
    https://ibb.co/JcssFST
    https://ibb.co/s9k2ccN

    Wenn es notwendig ist, kann ich den ganzen Source auch vom Template hochladen.. nur bescheid geben.
    Ansonsten wer sich das ganze mal ansehen möchte, kann ich auch die Webseite geben, dann Privat. Weil
    ich keine Werbung machen möchte.

    Ich bedanke mich schon mal im vorraus. Als hilfe wenn alles klappt, gibt es auch eine Belohnung.

  2. #2

    Registriert seit
    28.10.2011
    Beiträge
    625
    Thanked 279 Times in 168 Posts

    Standard AW: [HILFE] GEN-Template PayPal Kaufabwicklung funktioniert nicht

    Ich würde dir empfehlen keinerlei Zahlungsmethoden zu verwenden, wenn du noch Anfänger bist!
    Schon alleine nutzt du die IPN Uraltschnittstelle, die höchst Anfällig ist zu cracken.

    Das erkennst du daran, dass du Zahlungsdaten inklusiver deiner anzusteueren URL nutzt und dem Nutzer weitergibst.

    Du solltest dich dafür entscheiden, die PDT-Variante zu nutzen! Denn hier erstellst du >>SERVERSEITIG<< alles, bekommst von PayPal einen Token und wickelst ausschließlich über diesen Token alles ab.

    Da du IPN verwendest und das ganze schön via URL weitergibst, kann der Nutzer einfach ein HTML-Form erstellen und gefakte Daten an deiner IPN-Schnittstelle (deiner ipn.php) senden und erhält dadurch Zugriff auf irgendwelchen Premium-Diensten, die du anbieten willst.

    Im übrigen liegt dein Fehler in der URL, die du erstellst. Du solltest >>Deine<< URL's encoden, sonst werden diese zu einem Teil von der PayPal URL. Außerdem empfehle ich dir, eine simple Methode zu verwenden um die Parameter besser zu strukturieren. Denn dafür gibt es extra http_build_query, dann sparst du dir auch das urlencode:
    PHP-Code:
    <?php
        $paypalurl 
    sprintf('https://www.paypal.com/cgi-bin/webscr?%s'http_build_query([
            
    'cmd'            => '_xclick',
            
    'amount'        => $packageprice,
            
    'business'        => $paypal,
            
    'page_style'    => 'primary',
            
    'item_name'        => $packagename,
            
    'rm'            => 2,
            
    'custom'        => $custom,
            
    'mc_currency'    => 'USD',
            
    'return'        => sprintf('https://%s%s/purchase.php?%s'$_SERVER['SERVER_NAME'], dirname($_SERVER['REQUEST_URI']), http_build_query([
                
    'action'    => 'buy-success'
            
    ])),
            
    'notify_url'    => sprintf('https://%s%s/lib/ipn.php'$_SERVER['SERVER_NAME'], dirname($_SERVER['REQUEST_URI'])),
            
    'cancel_return'    => sprintf('https://%s%s/purchase.php?%s'$_SERVER['SERVER_NAME'], dirname($_SERVER['REQUEST_URI']), http_build_query([
                
    'action'    => 'buy-error'
            
    ]))
        ]));
    ?>
    Geändert von Bubble Gum (25.05.2019 um 01:13 Uhr)

  3. The Following User Says Thank You to Bubble Gum For This Useful Post:

    sl33p (28.05.2019)

  4. #3

    Registriert seit
    27.02.2017
    Beiträge
    39
    Thanked 2 Times in 2 Posts

    Standard AW: [HILFE] GEN-Template PayPal Kaufabwicklung funktioniert nicht

    Vielen dank, Bubble Gum. Das habe ich auch gerade gemerkt. Das ganze wurde nun behoben und funktioniert nun einwandfrei.

Ähnliche Themen

  1. Antworten: 8
    Letzter Beitrag: 19.05.2019, 23:35
  2. HILFE! HDMI Output funktioniert nicht.
    Von h00r4y im Forum Hardware
    Antworten: 1
    Letzter Beitrag: 26.02.2015, 13:59
  3. Paypal-Zahlung per Lastschrift funktioniert nicht
    Von Silent im Forum Finanzen & Zahlungsmittel
    Antworten: 2
    Letzter Beitrag: 26.12.2014, 10:49
  4. [S] Ebay Template (.png) [B] PayPal / PSC
    Von Blizzard im Forum Angebot & Nachfrage
    Antworten: 1
    Letzter Beitrag: 16.02.2013, 18:47
  5. Prozessor, hilfe funktioniert das?
    Von Grammatikfehler im Forum Hardware
    Antworten: 5
    Letzter Beitrag: 14.01.2013, 23:19
Diese Seite nutzt Cookies, um das Nutzererlebnis zu verbessern. Klicken Sie hier, um das Cookie-Tracking zu deaktivieren.