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>
Lesezeichen