Ergebnis 1 bis 16 von 16

Thema: Paymill Zahlungsmodul

  1. #1
    Contao-Nutzer Avatar von blu.plane
    Registriert seit
    28.08.2009.
    Ort
    Düsseldorf
    Beiträge
    87
    Partner-ID
    5399

    Frage Paymill Zahlungsmodul

    Hallo zusammen,
    wir versuchen hier, für einen Kunden den Zahlungsanbieter Paymill als Modul für isotope einzubinden. Wenn's klappt, würden wir dies allgemein zur Verfügung stellen.
    Leider kommen wir aber nicht weiter...

    Das Template mit dem Zahlungsformular wird korrekt aufgerufen, beim klicken auf Submit werden aber die Funktionen processPayment und processPostSale nicht aufgerufen, sondern die Seite "/order/step/process.html" lädt einfach neu.

    Hat da jemand eine Idee?
    Eine Anleitung für Paymill findet sich hier: https://www.paymill.com/de-de/dokume...ung/index.html


    Code:
    	public function checkoutForm()
    	{
    		$objOrder = new IsotopeOrder();
    		if (!$objOrder->findBy('cart_id', $this->Isotope->Cart->id))
    		{
    			$this->redirect($this->addToUrl('step=failed', true));
    		}
    		$objAddress = $this->Isotope->Cart->billingAddress;
    		$strFailedUrl = $this->Environment->base . $this->addToUrl('step=failed', true);
    		$objTemplate = new FrontendTemplate('iso_payment_paymillform');
    		$objTemplate->paymill_public_key = $this->paymill_public_key;
    		return $objTemplate->parse();
    	}
    Code:
      <link rel="stylesheet" href="https://netdna.bootstrapcdn.com/twitter-bootstrap/2.2.1/css/bootstrap.no-responsive.no-icons.min.css">
      <script type="text/javascript">
          var PAYMILL_PUBLIC_KEY = '<?php echo $this->paymill_public_key; ?>';
      </script>
    
      <div class="container span8">
        <!-- START: Payment form -->
        <div class="controls">
          <div class="span4">
            <div class="payment-errors text-error"></div>
          </div>
        </div>
        <div class="clearfix"></div>
        <div class="well span5">
          <div class="controls controls-row">
            <div class="btn-group span4">
              <button id="btn-paymenttype-cc"  class="paymenttype btn btn-primary disabled" value="cc">Credit card</button>
              <button id="btn-paymenttype-elv" class="paymenttype btn" value="elv">ELV</button>
            </div><br /><br />
          </div>
     
          <form id="payment-form" method="POST">
            <div class="clearfix"></div>
            <div id="payment-form-cc">
    			<input type="hidden" name="FORM_SUBMIT" value="<?php echo $this->formSubmit; ?>">
    			<input type="hidden" name="REQUEST_TOKEN" value="{{request_token}}">
              <input class="card-amount-int" type="hidden" value="15"/>
              <input class="card-currency" type="hidden" value="EUR"/>
              <div class="controls controls-row">
                <div class="span3"><label>Card number</label>
                    <input class="card-number span3" type="text" size="20" value="4111111111111111"/>
                </div>
                <div class="span1"><label>CVC</label>
                    <input class="card-cvc span1" type="text" size="4" value="111"/>
                </div>
              </div>
              <div class="controls">
                <div class="span4">
                  <label>Card holder</label>
                  <input class="card-holdername span4" type="text" size="20" value="Max Mustermann"/>
                </div>
              </div>
              <div class="controls">
                <div class="span3">
                  <label>Valid until (MM/YYYY)</label>
                  <input class="card-expiry-month span1" type="text" size="2" value="12"/>
                  <span> / </span>
                  <input class="card-expiry-year span1" type="text" size="4" value="2015"/>
                </div>
              </div>
            </div>
            <div id="payment-form-elv" style="display: none;">
              <div class="controls">
                <div class="span3">
                  <label>Account holder</label>
                  <input class="elv-holdername span3" type="text" size="20" value="Max Mustermann"/>
                </div>
              </div>
              <div class="controls controls-row">
                <div class="span3"><label>Account number</label>
                    <input class="elv-account span3" type="text" size="20" value="1234567890"/>
                </div>
              </div>
              <div class="controls">
                <div class="span3">
                  <label>Bank code</label>
                  <input class="elv-bankcode span3" type="text" size="20" value="40050150"/>
                </div>
              </div>
            </div>
            <div class="controls">
              <div class="span3">
    	          <input type="submit" class="submit button btn-primary" value="Buy Now" />
              </div>
            </div>
          </form>
        </div>
        <!-- END: Payment form -->
      </div>
      <script src="https://ajax.googleapis.com/ajax/libs/jquery/1.7.2/jquery.min.js"></script>
      <script src="https://netdna.bootstrapcdn.com/twitter-bootstrap/2.2.1/js/bootstrap.min.js"></script>
      <script src="https://bridge.paymill.com/"></script>
      <script language="javascript" type="text/javascript">
          $(document).ready(function () {
              function PaymillResponseHandler(error, result) {
                  if (error) {
                      // Show the error message above the form
                      $(".payment-errors").text(error.apierror);
                  } else {
                      $(".payment-errors").text("");
                      var form = $("#payment-form");
                      // Token
                      var token = result.token;
                      // Insert token into the payment form
                      form.append("<input type='hidden' name='paymillToken' value='" + token + "'/>");
                      form.get(0).submit();
                  }
                  $(".btn-primary").removeAttr("disabled");
              }
     
              $("#payment-form").submit(function (event) {
                  // Deactivate the submit button to avoid further clicks
                  $('.btn-primary').attr("disabled", "disabled");
                  if (false == paymill.validateCardNumber($('.card-number').val())) {
                      $(".payment-errors").text("Invalid card number");
                      $(".btn-primary").removeAttr("disabled");
                      return false;
                  }
     
                  if (false == paymill.validateExpiry($('.card-expiry-month').val(), $('.card-expiry-year').val())) {
                      $(".payment-errors").text("Invalid date of expiry");
                      $(".btn-primary").removeAttr("disabled");
                      return false;
                  }
     
                  paymenttype = $('.paymenttype.disabled').length ? $('.paymenttype.disabled').val() : 'cc';
                  switch (paymenttype) {
                      case "cc":
                          var params = {
                              amount_int:     $('.card-amount-int').val(),  // E.g. "15" for 0.15 Eur
                              //amount:         $('.card-amount').val(),    // deprecated!
                              currency:       $('.card-currency').val(),    // ISO 4217 e.g. "EUR"
                              number:         $('.card-number').val(),
                              exp_month:      $('.card-expiry-month').val(),
                              exp_year:       $('.card-expiry-year').val(),
                              cvc:            $('.card-cvc').val(),
                              cardholdername: $('.card-holdername').val()
                          };
                          break;
     
                      case "elv":
                          var params = {
                              number:         $('.elv-account').val(),
                              bank:           $('.elv-bankcode').val(),
                              accountholder:  $('.elv-holdername').val()
                          };
                          break;
                  }
                  paymill.createToken(params, PaymillResponseHandler);
     
                  return false;
              });
     
              // Toggle buttons and forms
              $(".paymenttype").click(function (event) {
                  $(this).addClass('btn-primary disabled');
                  $('#payment-form-cc').toggle();
                  $('#payment-form-elv').toggle();
                  if($(this).val()=='cc') {
                      $('#btn-paymenttype-elv').removeClass('btn-primary disabled');
                  }
                  else {
                      $('#btn-paymenttype-cc').removeClass('btn-primary disabled');                  
                  }
              });
          });
      </script>
    Geändert von blu.plane (11.02.2013 um 10:08 Uhr)

  2. #2
    Contao Core-Team
    Association Vorstand
    Avatar von andreas.schempp
    Registriert seit
    15.06.2009.
    Ort
    Lyss
    Beiträge
    5.613
    Partner-ID
    8667
    Contao-Projekt unterstützen

    Support Contao

    Standard Paymill Zahlungsmuodul

    Interessant wäre mehr, wie dein Zahlunsmodul aussieht? Stell den aktuellen Entwicklungsstand doch auf GitHub, da lässt sich das besser einsehen.
    terminal42 gmbh
    Wir sind Contao Premium-Partner! Für Modulwünsche oder Programmierungen kannst du uns gerne kontaktieren.
    Hilfe für Isotope eCommerce kann man auch kaufen: Isotope Circle

  3. #3
    Contao-Nutzer Avatar von blu.plane
    Registriert seit
    28.08.2009.
    Ort
    Düsseldorf
    Beiträge
    87
    Partner-ID
    5399

    Standard Paymill Zahlungsmodul auf GitHub

    Hallo zusammen,
    wir haben den Quellcode des Moduls auf GitHub veröffentlicht.
    Es wäre super, wenn einer der Isotope-Experten sich das mal ansehen würde. Es dürfte sich nur um Kleinigkeiten handeln.

    Wie gesagt, beim Testen der Bezahlung (mit den vorgegebenen Testwerten) lädt die Seite einfach neu, obwohl die POST-Variable "paymillToken" submitted wird.
    Eine Paymill-Kurzanleitung hier: https://www.paymill.com/de-de/dokume...ung/index.html

    Vielen Dank für die Hilfe!

    https://github.com/bluplane/isotope_paymill

  4. #4
    Contao-Nutzer Avatar von blu.plane
    Registriert seit
    28.08.2009.
    Ort
    Düsseldorf
    Beiträge
    87
    Partner-ID
    5399

    Standard

    Hat denn keiner der Experten mal kurz Zeit, sich das anzuschauen?
    Ich würde mich sehr freuen, denn schließlich ist einer der Schwachpunkte bei Isotope die spärliche Verfügbarkeit von Zahlungsschnittstellen. Wäre doch super, wenn man das ein wenig verbessern könnte!

  5. #5
    Contao Core-Team
    Association Vorstand
    Avatar von andreas.schempp
    Registriert seit
    15.06.2009.
    Ort
    Lyss
    Beiträge
    5.613
    Partner-ID
    8667
    Contao-Projekt unterstützen

    Support Contao

    Standard

    Auf den ersten Blick sehe ich da ein paar Probleme in https://github.com/bluplane/isotope_...entPaymill.php

    Zeile 7 muss sicherlich raus

    Du erstellst in "checkoutForm" ein Formular, welches die Zahlungsdaten (Kreditkarte etc.) an deinen Server sendet (ggf. falls JavaScript deaktviert ist). Das ist gemäss PCI-Richtlinien verboten!

    Auf Zeile 65 verwendest du eine Variable $token, die es gar nicht gibt? Vermutlich zwei Zeilen darüber ein Fehler?

    PS: verwende doch 4 Leerzeichen anstelle von Tabs und eine saubere Einrückung, dann liesse sich das besser lesen ;-)
    terminal42 gmbh
    Wir sind Contao Premium-Partner! Für Modulwünsche oder Programmierungen kannst du uns gerne kontaktieren.
    Hilfe für Isotope eCommerce kann man auch kaufen: Isotope Circle

  6. #6
    Contao-Nutzer Avatar von blu.plane
    Registriert seit
    28.08.2009.
    Ort
    Düsseldorf
    Beiträge
    87
    Partner-ID
    5399

    Standard

    Hi Andreas,
    vielen Dank für die Mühe!

    Der Token soll aus dem Formular kommen, daher
    Code:
    if ($token = $_POST['paymillToken']) { ...
    in Zeile 65 bei processPostSale.

    Das in der Function "checkoutForm" erstellte Formular habe ich 1 zu 1 aus der Paymill Anleitung übernommen. Dort werden die Kreditkartendaten eben NICHT zum eigenen Server gesendet, sondern per Javascript zu Paymill (https://bridge.paymill.com/), siehe iso_payment_paymill.html5 ab Zeile 114. Zurück kommt dann bei Erfolg nur besagter Token, der wiederum per POST in der Function processPostSale landen soll. Genau das klappt aber nicht, die Seite lädt einfach neu, wobei die POST-Variable "paymillToken" aber erzeugt wird (laut FireBug).

    Es wäre wirklich prima, wenn jemand von Euch an der Stelle einen Hinweis hätte... wieso wird die Function processPostSale nicht aufgerufen?

    Beste Grüße,
    René
    Geändert von blu.plane (18.02.2013 um 13:24 Uhr)

  7. #7
    Contao Core-Team
    Association Vorstand
    Avatar von andreas.schempp
    Registriert seit
    15.06.2009.
    Ort
    Lyss
    Beiträge
    5.613
    Partner-ID
    8667
    Contao-Projekt unterstützen

    Support Contao

    Standard

    Du hast vermutlich die Funktion von processPostSale falsch verstanden. Diese wird nur ausgeführt, wenn der Paymill-Server direkt mit deinem Server kommunizieren würde (was hier wohl nicht der Fall scheint, bei PayPal ist das z.B. so).

    Ausserdem, wie erwähnt, wenn der Benutzer kein Javascript hat, würden die Daten (entsprechender der <form action=") an deinen Server gesendet (was nicht erlaubt ist).
    terminal42 gmbh
    Wir sind Contao Premium-Partner! Für Modulwünsche oder Programmierungen kannst du uns gerne kontaktieren.
    Hilfe für Isotope eCommerce kann man auch kaufen: Isotope Circle

  8. #8
    Contao-Nutzer Avatar von blu.plane
    Registriert seit
    28.08.2009.
    Ort
    Düsseldorf
    Beiträge
    87
    Partner-ID
    5399

    Standard

    Zitat Zitat von andreas.schempp Beitrag anzeigen
    Du hast vermutlich die Funktion von processPostSale falsch verstanden. Diese wird nur ausgeführt, wenn der Paymill-Server direkt mit deinem Server kommunizieren würde (was hier wohl nicht der Fall scheint, bei PayPal ist das z.B. so).
    Wie erreicht man denn aus dem Formular-Post heraus die zahlungsverarbeitende Stelle bei Isotope??

    Zitat Zitat von andreas.schempp Beitrag anzeigen
    Ausserdem, wie erwähnt, wenn der Benutzer kein Javascript hat, würden die Daten (entsprechender der <form action=") an deinen Server gesendet (was nicht erlaubt ist).
    Aha, da hast Du Recht!
    Aber bei Paymill heisst es dazu:
    Wichtige Hinweise für die Kreditkartendaten in Deinem HTML Formular
    Wichtig bei dem Zahlungsformular ist, dass du kein name Attribut bei den <input> Tags für Kreditkartendaten setzst!
    So werden die Kreditkartendaten nicht zurück an deinen Server geschickt und du bleibst außerhalb der gesetzlichen Regelungen zur Speicherung solcher Daten (PCI Compliance).
    Was hälst du davon?
    https://www.paymill.com/de-de/dokume...kurzanleitung/
    Geändert von blu.plane (18.02.2013 um 13:54 Uhr)

  9. #9
    Contao Core-Team
    Association Vorstand
    Avatar von andreas.schempp
    Registriert seit
    15.06.2009.
    Ort
    Lyss
    Beiträge
    5.613
    Partner-ID
    8667
    Contao-Projekt unterstützen

    Support Contao

    Standard

    Probier mal die processPayment methode ;-)
    terminal42 gmbh
    Wir sind Contao Premium-Partner! Für Modulwünsche oder Programmierungen kannst du uns gerne kontaktieren.
    Hilfe für Isotope eCommerce kann man auch kaufen: Isotope Circle

  10. #10
    Contao-Nutzer
    Registriert seit
    19.02.2013.
    Beiträge
    1

    Standard

    Liebe Contao-Community,

    toll, dass Ihr ein Paymill-Plugin entwickelt. Einige Hinweise zum serverseitigen Payment-Flow, d.h. was mit dem Token geschehen muss, wenn es über das Zahlungsformular generiert und an den Server übertragen wurde. Vielleicht hilft es euch, mal anzuschauen, wie es bei Magento gemacht wird: https://github.com/Paymill/Paymill-M...mentMethod.php

    Die Magie passiert ab Zeile 260. Dort geschieht folgendes: (1) Client anlegen, (2) Payment anlegen (Kreditkarte) und (3) Transaktion durchführen (denkt euch mal die ganzen Logging-Statements weg).

    Besten Gruß,
    Philipp (Paymill)

    NACHTRAG: Was die name-Attribute bei den Input-Tags angeht: Das ist nur für die Input-Tags relevant, die sensitive Nutzereingaben enthalten (Kreditkartennummer, Expiry date, CVC etc.). Lässt man das name-Attribut weg, werden die Eingaben in einem POST-Request vom Browser nicht verarbeitet. Diese sollten vorher durch die Paymill Bridge zu einem Token verschlüsselt werde, dass anstelle der Kreditkartendaten übertragen wird. Sonstige für den Flow relevante Input-Felder können natürlich übertragen werden.
    Geändert von Paymill (19.02.2013 um 09:00 Uhr)

  11. #11
    Contao-Nutzer
    Registriert seit
    17.11.2012.
    Beiträge
    29

    Standard Gibt es schon Fortschritte?

    Hallo,

    das Paymill-Modul interessiert mich auch. Gibt es da schon etwas neues?

    Danke und Grüße!

  12. #12
    Contao-Nutzer
    Registriert seit
    10.10.2013.
    Beiträge
    1

    Standard Paymill Plugin

    Liebe Contao Community!

    uns ist leider bis heute auch kein neuer Stand zu einem Plugin bekannt. Wir freuen uns sehr, wenn sich die Community daran beteiligt, unser Produkt möglichst vielen Menschen zur Verfügung zu stellen und unterstützen euch hierbei auch gerne. Wenn ihr bereits ein Plugin entwickelt habt oder entwickeln möchtet, dann kommt gerne auf uns zu, damit wir es (selbstverständlich unter Nennung eures Namens) als Community-basiertes Plugin auf unserer Website veröffentlichen können.
    Wenn ihr für euer Plugin auch Support anbieten wollt, könnt ihr auch gerne auf uns zukommen - wir finden bestimmt eine gute Lösung.

    In jedem Fall könnt ihr uns gerne jederzeit unter support@paymil.de erreichen!

    Viele Grüße
    Julian (Paymill)

  13. #13
    Contao-Urgestein Avatar von Toflar
    Registriert seit
    15.06.2009.
    Beiträge
    4.467
    Partner-ID
    8667
    User beschenken
    Wunschliste

    Standard

    E-Mail an support@paymill.de ist raus
    Contao Core-Entwickler @terminal42 gmbh
    Wir sind Contao Premium-Partner!
    Für Individuallösungen kannst du uns gerne kontaktieren.
    PS: Heute schon getrakked?

  14. #14
    Contao-Nutzer
    Registriert seit
    14.09.2010.
    Beiträge
    12

    Standard

    Hallo,

    gibt es zum Thema Paymill schon etwas neues?

    Beste Grüße

  15. #15
    Contao-Urgestein Avatar von Toflar
    Registriert seit
    15.06.2009.
    Beiträge
    4.467
    Partner-ID
    8667
    User beschenken
    Wunschliste

    Standard

    Hab leider nie Rückmeldung erhalten.
    Contao Core-Entwickler @terminal42 gmbh
    Wir sind Contao Premium-Partner!
    Für Individuallösungen kannst du uns gerne kontaktieren.
    PS: Heute schon getrakked?

  16. #16
    Alter Contao-Hase
    Registriert seit
    22.06.2009.
    Ort
    Köln
    Beiträge
    1.342

    Standard

    Gibt es hier mittlerweile Neuigkeiten?
    Ein Kunde von mir hat sich Paymill als Zahlungsanbieter rausgesucht, es gibt aber keine Integration in Isotope 2.5.
    Kann mir jemand helfen oder gibt es mittlerweile ein Modul (contao 4.4)?

    Danke

    MFG
    Christian
    Viele Grüße aus Köln
    Matu

Aktive Benutzer

Aktive Benutzer

Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1)

Lesezeichen

Lesezeichen

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •