Um eine Zahlung über die Plattform zu erstellen, haben Sie die Wahl zwischen der payment page integration,
bei der der Kunde auf unsere Zahlungsseite weitergeleitet wird, der iframe integration, bei der das Zahlungsformular
über unsere JavaScript-Integration in einem iframe platziert wird, oder der lightbox integration, um eine nahtlose und
PCI-DSS-konforme Integration in Ihrem Checkout zu erreichen.
Der Ablauf der Zahlungsseite ist wie folgt (vereinfacht):
Erstellen Sie ein transaction object über unsere API.
Fragen Sie die URL der Zahlungsseite an.
Leiten Sie den Benutzer auf die Zahlungsseite weiter.
Verarbeiten Sie die eingehende Webhook-Anfrage, um die Transaktion in der Händleranwendung zu autorisieren.
Bevor Sie mit der Integration der Zahlungsseite beginnen, sollten Sie:
Einen Anwendungsbenutzer unter Account > Benutzer > Anwendungsbenutzer erstellen.
Lernen, wie Sie sich bei unserem Webservice authentifizieren und verbinden.
|
Note
|
Werfen Sie bitte einen Blick auf unser GitHub-Repository, in dem wir
SDK in verschiedenen Sprachen zum Download anbieten, die Ihren Integrationsaufwand drastisch reduzieren.
|
Wir bieten Ihnen ausserdem einen API Client, mit dem Sie die an die API gesendeten Anfragen testen und die Antworten einsehen können.
Wenn der Kunde den Checkout abschliesst, erstellen Sie eine Bestellung in Ihrem Shop.
Sie müssen ein transaction object mit der create
Methode des Transaction Service erstellen.
Verwenden Sie den build payment page URL Service, um die URL der Zahlungsseite zu erstellen, und leiten Sie den Kunden auf diese URL weiter. Der Kunde gibt die Zahlungsdaten auf der Zahlungsseite ein. Je nach Zahlart wird er bei Bedarf weitergeleitet.
Wenn die Transaktion auf unserer Seite verarbeitet wurde oder fehlgeschlagen ist, wird der Kunde auf die successUrl oder
failedUrl weitergeleitet, die beim Erstellen des Transaktionsobjekts definiert wurde.
Warten Sie auf die Benachrichtigung, um die Bestellung im Händlersystem als authorized oder failed zu markieren.
Sie können diesen Ablauf verbessern, indem Sie den Kunden die Zahlart bereits in der Händleranwendung auswählen lassen. Mit der
fetch possible payment methods Operation des Transaction Service bieten wir die Möglichkeit,
die aktivierten Zahlarten für einen bestimmten Space abzurufen. Da wir hier den Integrationsmodus der Zahlungsseite beschreiben, müssen Sie payment_page als Integrationsmodus übergeben.
Als Ergebnis liefert die Methode die möglichen Zahlarten zurück. Diese Zahlarten bilden die Grundlage der Liste der Zahlarten,
die dem Kunden angezeigt werden. Die Eigenschaft allowedPaymentMethods des Transaktionsobjekts erlaubt es,
die zulässigen Zahlarten für die jeweilige Transaktion auf die zuvor vom Kunden getroffene Auswahl einzuschränken.
Um ein Transaktionsobjekt zu erstellen, müssen Sie die
Operation zum Erstellen einer Transaktion verwenden.
Hier übergeben Sie die Ihnen vorliegenden Kundendaten einschliesslich der Positionen und Preise.
Dadurch wird eine Transaktion im Zustand pending in Ihrem Space erstellt.
Anfrage
{
"billingAddress":{
"city":"Winterthur",
"commercialRegisterNumber":"",
"country":"CH",
"dateOfBirth":"",
"emailAddress":"some-buyer@wallee.com",
"familyName":"Test",
"gender":"",
"givenName":"Sam",
"mobilePhoneNumber":"",
"organizationName":"Wallee AG",
"phoneNumber":"",
"postCode":"8400",
"salesTaxNumber":"",
"salutation":"",
"socialSecurityNumber":"",
"state":"",
"street":"Neuwiesenstrasse 15"
},
"currency":"EUR",
"language":"de-CH",
"lineItems":[
{
"amountIncludingTax":"11.87",
"name":"Barbell Pull Up Bar",
"quantity":"1",
"shippingRequired":"true",
"sku":"barbell-pullup",
"type":"PRODUCT",
"uniqueId":"barbell-pullup"
},
{
"amountIncludingTax":"559",
"name":"Rowing Machine",
"quantity":"1",
"shippingRequired":"true",
"sku":"rowing-machine",
"type":"PRODUCT",
"uniqueId":"rowing-machine"
},
{
"amountIncludingTax":"17.98",
"name":"Super Whey Protein",
"quantity":"4",
"shippingRequired":"true",
"sku":"super-whey",
"taxes":[
{
"rate":"10",
"title":"VAT"
},
{
"rate":"3.5",
"title":"Supplement Fee"
}
],
"type":"PRODUCT",
"uniqueId":"super-whey"
},
{
"amountIncludingTax":"12.5",
"name":"Special Chär Test",
"quantity":"1",
"shippingRequired":"false",
"sku":"special-chär-test",
"type":"SHIPPING",
"uniqueId":"special-chär-test"
},
{
"amountIncludingTax":"12.5",
"name":"Standard Shipping",
"quantity":"1",
"shippingRequired":"false",
"sku":"standard-shipping",
"type":"SHIPPING",
"uniqueId":"standard-shipping"
},
{
"amountIncludingTax":"-10",
"name":"Spring Discount",
"quantity":"1",
"shippingRequired":"false",
"sku":"spring-discount",
"type":"DISCOUNT",
"uniqueId":"spring-discount"
}
],
"merchantReference":"DEV-2630",
"shippingAddress":{
"city":"Winterthur",
"commercialRegisterNumber":"",
"country":"CH",
"dateOfBirth":"",
"emailAddress":"some-buyer@wallee.com",
"familyName":"Test",
"gender":"",
"givenName":"Sam",
"mobilePhoneNumber":"",
"organizationName":"Wallee AG",
"phoneNumber":"",
"postCode":"8400",
"salesTaxNumber":"",
"salutation":"",
"socialSecurityNumber":"",
"state":"",
"street":"Neuwiesenstrasse 15"
}
}
Antwort
Die Antwort, die Sie erhalten, enthält die id (im folgenden Beispiel 109472), die nun verwendet wird,
um weitere Operationen mit dieser Transaktion durchzuführen.
{
"allowedPaymentMethodBrands": [],
"allowedPaymentMethodConfigurations": [],
"authorizationAmount": 603.85,
"authorizationTimeoutOn": "2017-12-07T08:44:09.119Z",
"autoConfirmationEnabled": true,
"chargeRetryEnabled": true,
"confirmedBy": 0,
"createdBy": 0,
"createdOn": "2017-12-07T08:14:09.119Z",
"currency": "EUR",
"customersPresence": "VIRTUAL_PRESENT",
"endOfLife": "2017-12-21T08:14:09.119Z",
"group": {
"id": 109478
},
"id": 109472,
"language": "de-CH",
"linkedSpaceId": 396,
"merchantReference": "DEV-2630",
"metaData": {},
"plannedPurgeDate": "2017-12-21T08:14:09.119Z",
"refundedAmount": 0,
"state": "PENDING",
"timeZone": "Z",
"version": 1
}
Transaktionseigenschaften können aktualisiert werden, solange sich die Transaktion nicht im Zustand confirmed befindet.
Verwenden Sie dazu die update Operation des Transaction-Service.
|
Note
|
Werfen Sie einen Blick auf den Abschnitt Objektversionierung / Sperrung,
der beschreibt, wie Sie mit der Eigenschaft version umgehen müssen, um Konflikte durch optimistisches Sperren zu vermeiden.
|
Anfrage
Im folgenden Beispiel aktualisieren wir die Positionen und entfernen die Rabattposition, die wir im obigen Beispiel hinzugefügt haben.
{
"billingAddress": {
"city": "Winterthur",
"country": "CH",
"emailAddress": "some-buyer@wallee.com",
"familyName": "Test",
"givenName": "Sam",
"postCode": "8400",
"street": "Neuwiesenstrasse 15"
},
"currency": "EUR",
"id": 109472,
"language": "de-CH",
"lineItems": [
{
"amountIncludingTax": "11.87",
"name": "Barbell Pull Up Bar",
"quantity": "1",
"sku": "barbell-pullup",
"type": "PRODUCT",
"uniqueId": "barbell-pullup"
},
{
"amountIncludingTax": "559",
"name": "Rowing Machine",
"quantity": "1",
"sku": "rowing-machine",
"type": "PRODUCT",
"uniqueId": "rowing-machine"
},
{
"amountIncludingTax": "17.98",
"name": "Super Whey Protein",
"quantity": "4",
"sku": "super-whey",
"type": "PRODUCT",
"uniqueId": "super-whey"
},
{
"amountIncludingTax": "12.5",
"name": "Special Chär Test",
"quantity": "1",
"sku": "special-chär-test",
"type": "SHIPPING",
"uniqueId": "special-chär-test"
},
{
"amountIncludingTax": "12.5",
"name": "Standard Shipping",
"quantity": "1",
"sku": "standard-shipping",
"type": "SHIPPING",
"uniqueId": "standard-shipping"
}
],
"merchantReference": "DEV-2630",
"shippingAddress": {
"city": "Winterthur",
"country": "CH",
"emailAddress": "some-buyer@wallee.com",
"familyName": "Test",
"givenName": "Sam",
"postCode": "8400",
"street": "Neuwiesenstrasse 15"
},
"version": 3
}
Antwort
Die Antwort enthält das aktualisierte Transaktionsobjekt.
{
"currency": "EUR",
"id": 109472,
"language": "de-CH",
"merchantReference": "DEV-2630",
"version": 3
}
Für eine bessere Integration ist es hilfreich, wenn Sie Ihren Kunden bereits im Checkout anzeigen, welche Zahlarten auf Basis der Daten im Transaktionsobjekt verfügbar wären. Die Antwort sollte gerendert und als Zahlungsoptionen in Ihrem Checkout angezeigt werden.
Um die Zahlart auf der Transaktion vorauszuwählen,
sollten Sie die Transaktion wie zuvor gezeigt aktualisieren, indem Sie die
allowedPaymentMethodConfiguration ID übergeben, die von
fetchPossiblePaymentMethods für die jeweilige Transaktion zurückgegeben wird.
Antwort
Die Antwort liefert die möglichen Zahlarten für die jeweilige Transaktion zurück.
{
"data": [{
"dataCollectionType": "ONSITE",
"description": {
"en-US": ""
},
"id": 510,
"imageResourcePath": null,
"linkedSpaceId": 396,
"name": "Credit / Debit Card",
"oneClickPaymentMode": "ALLOW",
"paymentMethod": {
"id": 1457546097597
},
"plannedPurgeDate": null,
"resolvedDescription": {
"en-US": "Pay conveniently with your credit or debit card."
},
"resolvedImageUrl": "https://staging-wallee.com/s/396/resource/icon/payment/method/credit-debit-card.svg",
"resolvedTitle": {
"en-US": "Credit / Debit Card"
},
"sortOrder": 1,
"spaceId": 396,
"state": "ACTIVE",
"title": {
"en-US": ""
},
"version": 2
}],
"hasMore": false,
"limit": 1
}
Nun können Sie diese Informationen verwenden, um die Zahlartenauswahl
in Ihrem Shop darzustellen. Sobald der Kunde die Zahlart gewählt hat, können Sie
die obige Transaktion aktualisieren, indem Sie die allowedPaymentMethodConfigurations
mit der update Operation des Transaction-Service übergeben.
Anfrage
{
"allowedPaymentMethodConfigurations": [
{
"id": 507
}
],
"id": 109472,
"version": 4
}
Um den Kunden auf die Zahlungsseite weiterzuleiten, verwenden Sie die URL der Zahlungsseite erstellen Operation, die die URL der Zahlungsseite zurückliefert, auf die der Kunde weitergeleitet werden soll.
|
Note
|
Wir bieten viel Flexibilität, um das Erscheinungsbild der Zahlungsseite mit unserem Ressourceneditor zu gestalten. Weitere Informationen finden Sie in der Dokumentation zu Ressourcen und Anpassung. |
Um über den Transaktionsstatus informiert zu bleiben, sollten Sie auf Ihrer Seite Webhook-Benachrichtigungen registrieren. Die Webhooks informieren Sie über Statusänderungen der ausgewählten Entitäten und sollten Ihre Anwendung veranlassen, die Transaktionsergebnisse weiterzuverarbeiten.
Weitere Informationen zu Webhooks, Webhook-Listenern und deren Konfiguration finden Sie in der Webhooks-Dokumentation.