Payment

Mit dem Payment-API kann der Browser-Native Payment-Dialog benutzt werden um Kartenzahlungen zu vereinfachen. Zurzeit wird nur BasicCard unterstützt, darüber kann hier weitergelesen werden. Mit dem API kann der Benutzer nach all seinen Karten-Informationen abgefragt werden, diese können dann vom Server überprüft werden und falls nötig, können dann die invaliden Felder für den Benutzer markiert werden.

Beispiel:

// Erstellt das Payment-Objekt und hängt dieses an unser HTML-Dokument an. final Payment payment = new Payment(this); // Hier setzen wir fest, welche Karten wir unterstützen. Notiz: Zurzeit wird nur basic-card unterstützt. final List<CardNetworkIdentifier> supportedCards = Arrays.asList(CardNetworkIdentifier.visa, CardNetworkIdentifier.mastercard); final List<PaymentRequestMethodData> methodData = Arrays.asList(new PaymentRequestMethodData("basic-card", new BasicCardRequest(supportedCards))); // Als nächstes setzen wir die Artikel fest, damit der Benutzer sehen kann, wie viel er und für was er zahlt. final List<PaymentItem> items = Arrays.asList( new PaymentItem("Rubber Ducky", new PaymentAmount("EUR", "1.00")), new PaymentItem("Shower Head", new PaymentAmount("EUR", "5.79")), new PaymentItem("Toilet Paper", new PaymentAmount("EUR", "0.90"))); // Dann wie viel gesamt gezahlt werden muss (Diese Zahlen werden nicht überprüft, aber diese sollten natürlich dynamisch richtig kalkuliert werden) final PaymentItem total = new PaymentItem("Total cost", new PaymentAmount("EUR", "7.69")); // Diese Optionen stellen fest, wie die Artikel versendet werden sollen final List<PaymentShippingOption> shippingOptions = Arrays.asList( new PaymentShippingOption("standard-shipping", "Standard Shipping", new PaymentAmount("EUR", "5.30"), true)); final PaymentRequestDetails requestDetails = new PaymentRequestDetails(total, items, shippingOptions); // Diese Optionen geben an, welche Felder Pflichtfelder sind und ob der Benutzer den Shipping-Type auswählen kann final PaymentRequestOptions requestOptions = new PaymentRequestOptions() .setRequestPayerName(true) .setRequestPayerEmail(true) .setRequestPayerPhone(false) .setRequestShipping(true) .setShippingType(ShippingType.shipping); final Consumer<PaymentResult> onResultReceived = result -> { // Hier können die Felder validiert werden, wenn alles geklappt hat, kann payment.complete(Result.success) aufgerufen werden // Falls etwas nicht valide ist kann wie folgt vorgegangen werden: final PayerError payerError = new PayerError() .setEmail("The email is not valid!"); final BasicCardErrors cardError = new BasicCardErrors() .setCardNumber("The card number is not valid!"); final AddressErrors addressErrors = new AddressErrors(); // Nothing wrong so don't set anything final PaymentValidationError errors = new PaymentValidationError("Some fields are not valid!", payerError, cardError, addressErrors); // Anstatt lambdas könnte für den error und success callback auch Methoden angegeben werden. Dann könnten wir diese einfach rekursiv nochmal aufrufen. payment.retry(errors, this::dummyOnSuccess, error -> { // Falls das Payment abgebrochen werden soll, kann payment.complete(Result.fail) aufgerufen werden. payment.complete(Result.fail, (error) -> { /* Exception oder so einfach ausgeben oder weiter bearbeiten */}); }); }; final Consumer<JavascriptError> onErrorReceived = error -> { System.err.println("An error ocurred: " + error.getMessage()); }; // Zuletzt müssen wir einfach den Payment-Dialog öffnen payment.requestPayment(methodData, requestDetails, requestOptions, onResultReceived, onErrorReceived);

 

XDEV Software Corp. - One Embarcadero Center, San Francisco, CA 94111, US
Copyright © 2015. XDEV Software Corp. All rights reserved.