User Tools

Site Tools


en:girocheckout:creditcard_3ds2:start

Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Both sides previous revision Previous revision
Next revision
Previous revision
en:girocheckout:creditcard_3ds2:start [2020/12/18 14:23]
michaelheumann
— (current)
Line 1: Line 1:
-====== Credit Card 3D Secure 2.0 ====== 
-**This is the future version of the creditcard API that includes the new fields for 3D Secure 2.0. This API is not yet available for testing on our server! These docs are only a preview of the upcoming API.** 
- 
-New in these docs are mostly the fields whose names start with "tds2", see transaction initialization below. 
- 
-<WRAP center round info 70%> 
-The parameters related to 3D Secure 2.0 are subject to changes due to modifications in the EMVCo 3-D Secure specs. 
-</WRAP> 
- 
-===== Test data ===== 
-{{page>en:testdata:creditcard_3ds2&noheader&nofooter}} 
- 
-===== Transaction types ===== 
-Detailed information on the [[en:girocheckout:transactiontypes:start|transaction types]].  
- 
-==== Reservation (AUTH) ==== 
-{{page>en:girocheckout:transactiontypes:descriptions#auth.desc&noheader&nofooter}} 
- 
-<uml> 
-left to right direction 
-skinparam packageStyle rect 
- 
-rectangle AUTH { 
-  (AUTH) --> (CAPTURE) 
-  (AUTH) --> (VOID ) 
-  (CAPTURE) --> (VOID ) 
-  (CAPTURE) --> (REFUND ) 
-  (REFUND ) --> (VOID ) 
-} 
-</uml> 
- 
-==== Sale ==== 
-{{page>en:girocheckout:transactiontypes:descriptions#sale.desc&noheader&nofooter}} 
- 
-<uml> 
-left to right direction 
-skinparam packageStyle rect 
- 
-rectangle SALE{ 
-  (SALE) --> (REFUND) 
-  (SALE) --> (VOID) 
-  (REFUND) --> (VOID) 
-} 
-</uml> 
- 
-===== Initialize credit card payment ===== 
- 
-After a successful initialization the merchant receives a reference number and a redirect link. The redirect link leads to the payment page. The customer (buyer) must be redirected to this link. This can be achieved by an HTTP redirect header, an HTML page with a corresponding meta tag or a JavaScript redirect.  
- 
-**Provided by:** GiroCheckout \\ 
-**Called by:** merchant 
- 
-===== Workflow ===== 
- 
-<uml> 
-hide footbox 
- 
-participant "Customer" as customer 
-participant "Shop" as shop 
-participant "GiroCheckout" as girocheckout 
-participant "Credit Card Processor" as cc 
- 
-autonumber 
- 
-customer -> shop:  
-shop -> girocheckout:  
-girocheckout -> cc:  
-cc -> girocheckout:  
-girocheckout -> shop:  
-shop -> customer:  
-customer -> cc: 
-cc -> customer:  
-customer -> cc: 
-cc -> cc:  
-cc -> girocheckout: 
-girocheckout -> shop 
-shop -> shop:  
-shop -> girocheckout:  
-girocheckout -> cc:  
-cc -> shop:  
- 
- 
-center footer (c)2016 by GiroSolution AG 
-</uml> 
- 
-  - Buyer selects payment type "credit card" 
-  - Shop initializes credit card transaction ([[en:girocheckout:creditcard:start#initialize_credit_card_payment|Initialization]]) 
-  - GiroCheckout initializes transaction at CC processor 
-  - Credit card processor transmits result to GiroCheckout 
-  - Shop receives response about transaction outcome (transaction ends in case of error) 
-  - Shop sends redirect URL to customer browser 
-  - Customer browser redirects to credit card processor 
-  - Credit card processor displays payment form 
-  - Customer authorizes transaction 
-  - Credit card processor carries out transaction 
-  - Credit card processor transmits result to GiroCheckout 
-  - GiroCheckout notifies Shop about transaction outcome ([[en:girocheckout:creditcard:start#notification_about_the_payment_result|Notification]]) 
-  - Shop processes transaction outcome 
-  - Shop sends HTTP status code to GiroCheckout 
-  - GiroCheckout sends merchant redirect (return to merchant page) to Credit card processor 
-  - Customer clicks "Back to shop" ([[en:girocheckout:creditcard:start#redirection_of_the_customer_to_merchant|Return]]) 
- 
-===== API functions ===== 
- 
-==== Overview ===== 
- 
-As shown in the workflow, different API calls are involved in a credit card transaction. During the payment process a 3D-Secure check may be applied as well, but this depends solely on the credit card issuing institute and does not affect merchant or PSP in any way. 
- 
-  - Initialize transaction 
-  - 3D-Secure check (optional) 
-  - Payment result notification to merchant 
-  - Buyer redirection to the merchant (triggered by buyer) 
- 
-==== Reservation/Sale ==== 
- 
-=== POST parameters === 
-^Name           ^Mandatory  ^Type        ^Description   ^ 
-|merchantId     |yes       |Integer     |merchant ID | 
-|projectId      |yes       |integer     |project ID | 
-|merchantTxId   |yes       |String(255) |unique transaction id of the merchant | 
-|amount         |yes       |Integer     |if a decimal currency is used, the amount has to be in the smallest unit of value, eg. Cent, Penny | 
-|currency       |yes       |String(3)   |currency\\ EUR = Euro| 
-|purpose        |yes       |String(27)  |purpose | 
-|type           |optional  |String(4)   |transaction type (see [[en:girocheckout:transactiontypes:start]]) \\ SALE = Immediate booking (default) \\ AUTH = Reservation of amount| 
-|locale         |optional |String(4)   |language of the credit card payment page \\ de = German (default) \\ en = English \\ es = Spanish \\ fr = French \\ it = Italian \\ ja = Japanese \\ pt = Portuguese \\ nl = Dutch \\ cs = Czech \\ sv = Swedish \\ da = Danish \\ pl = Polish \\ spde = German donation \\ spen = English donation \\ de_DE_stadtn = German communes | 
-|mobile         |optional |Boolean     |optimised payment page for mobile devices \\ 0 = no (default) \\ 1 = yes | 
-|pkn            |optional |String(50)  |This field is used process a transaction without re-entering the card data. \\ create = generate a new pseudo card number \\ [pseudo card number] = pkn of the masked card data (see [[en:girocheckout:creditcard:start#pseudo_card_number_pkn|pseudo card number]])\\  | 
-|recurring      |optional |Boolean     |recurring payment \\ 0 = no (default) \\ 1 = yes  | 
-|urlRedirect    |yes       |String      |URL, where the buyer has to be sent after payment | 
-|urlNotify      |yes       |String      |URL, where the notification has to be sent after payment | 
-|tds2Address |optional |String | For 3D Secure 2.0: Main address line (usually street and number) of the card holder's billing address, Format A-Z, a-z, 0-9, Blank, [-/().,&'], max. 50. When specified, you must also specify the tds2-fields, except for tds2Optional.  | 
-|tds2Postcode |optional |String | For 3D Secure 2.0: Postal code of the card holder's billing address, Format A-Z, a-z, 0-9, Blank, [-], max. 11. When specified, you must also specify the tds2-fields, except for tds2Optional.  | 
-|tds2City |optional |String | For 3D Secure 2.0: City of the card holder's billing address, Format A-Z, a-z, 0-9, Blank, [-/().,&'], max. 50. When specified, you must also specify the tds2-fields, except for tds2Optional.  | 
-|tds2Country |optional |String | For 3D Secure 2.0: Country of the card holder's billing address, Format A-Z, max. 2. Zweibuchstabiges Länderkürzel nach dem aktuell gültigen Standard ISO 3166. When specified, you must also specify the tds2-fields, except for tds2Optional. | 
-|tds2Optional |optional |String | For 3D Secure 2.0: JSON-String that contains further optional fields. A complete list of the available fields can be found underneath this table under  [[en:girocheckout:creditcard_3ds2:start#d_secure_20_optional_fields_tds2optional|3D Secure 2.0 Optional Fields (tds2Optional)]]. | 
-|hash           |yes       |String      |HMAC MD5 hash (see [[en:girocheckout:general:start#hash_generation|hash generation]]) | 
- 
-=== 3D Secure 2.0 Optional Fields (tds2Optional) === 
-This is a JSON formatted object that has a hierarchical structure (2 levels) and contains the following sub-objects: 
- 
-  * billingAddress 
-  * shippingddress 
-  * homePhoneNumber 
-  * mobilePhoneNumber  
-  * workPhoneNumber 
-  * cardholderAccountInfo 
-  * tdsMerchantRiskIndicators 
-  * tdsRequestorAuthenticationInformation 
-  * tdsTransactionAttributes 
- 
-Generally, the following fields (all optional) are available (fields in sub-objects are displayed as [sub-object name].[field]): 
- 
-^Name           ^Type      ^Description   ^ 
-|email |String | The card holder's email address, Format A-Z, a-z, 0-9, [_.+-@], max. 254. | 
-|addressesMatch |Boolean  | Specifies if the shipping address and billing address are the same (true) or not (false). Not a sub-object but a field directly in the main object. | 
-^**//billingAddress//**  ^^^ 
-|billingAddress.line2 |String | Second line of the billing address. Format A-Z, a-z, 0-9, Blank, [-/().,&'], max. 50 | 
-|billingAddress.line3 |String | Third line of the billing address. Format A-Z, a-z, 0-9, Blank, [-/().,&'], max. 50 | 
-|billingAddress.state |String | Subdivision (state, province or the like) of a country according to ISO 3166-2. Format A-Z, max. 3. | 
-^**//shippingAddress//**  ^^^ 
-|shippingAddress.line1 |String | First line of the shipping address. Format A-Z, a-z, 0-9, Blank, [-/().,&'], max. 50 | 
-|shippingAddress.line2 |String | Second line of the shipping address. Format A-Z, a-z, 0-9, Blank, [-/().,&'], max. 50 | 
-|shippingAddress.line3 |String | Third line of the shipping address. Format A-Z, a-z, 0-9, Blank, [-/().,&'], max. 50 | 
-|shippingAddress.postcode |String |Postal code of the shipping address, Format A-Z, a-z, 0-9, Blank, [-], max. 11 | 
-|shippingAddress.city |String | City of the shipping address, Format A-Z, a-z, 0-9, Blank, [-/().,&'], max. 50 | 
-|shippingAddress.state |String | Subdivision (state, province or the like) of a country according to ISO 3166-2. Format A-Z, max. 3 | 
-|shippingAddress.country |String | Country of the shipping address, Format A-Z, max. 2. Two-letter country code according to the currently applicable standard ISO 3166. | 
-^**//homePhoneNumber//**  ^^^ 
-|homePhoneNumber.country |Integer | Country code of the telephone number without leading zeroes. Format 0-9, max. 3. e.g. 49 for Germany. | 
-|homePhoneNumber.regional |String | Telephone number without country code and without leading 0 (area code and local number). Format 0-9, max. 15, e.g. 73482984938. | 
-^**//mobilePhoneNumber//**  ^^^ 
-|mobilePhoneNumber.country |Integer | Country code of the mobile phone number without leading zeroes. Format 0-9, max. 3. e.g. 49 for Germany. | 
-|mobilePhoneNumber.regional |String | Telephone number without country code and without leading 0 (area code and local number). Format 0-9, max. 15, e.g. 73482984938. | 
-^**//workPhoneNumber//**  ^^^ 
-|workPhoneNumber.country |Integer | Country code of the work phone number without leading zeroes. Format 0-9, max. 3. e.g. 49 for Germany. | 
-|workPhoneNumber.regional |String | Telephone number without country code and without leading 0 (area code and local number). Format 0-9, max. 15, e.g. 73482984938. | 
-^**//cardholderAccountInfo//**  ^^^ 
-|cardholderAccountInfo.accountAgeIndicator |String | Indicates when the customer's payment account was created. Possible values: "never" - customer has no payment account, is e.g. shopping as a guest, "now" - customer created the payment account during the current shopping session, "less30" - payment account created less than 30 days ago, "more30less60" - payment account created at least 30 but less than 60 days ago, "more60" - payment account created at least 60 days ago. | 
-|cardholderAccountInfo.passwordChangeIndicator |String | Indicates when the password of the customer account was changed the last time. Possible values: "never" - the customer never changed his password, "now" - password changed during the current shopping session, "less30" - password changed less than 30 days ago, "more30less60" - password changed at least 30 but less than 60 days ago, "more60" - password has not been chan- ged for at least 60 days. | 
-|cardholderAccountInfo.paymentAccountAgeIndicator |String | Indicates when the customer's payment account was created. Possible values: "never" - customer has no payment account, is e.g. shopping as a guest, "now" - customer created the payment account during the current shopping session, "less30" - payment account created less than 30 days ago, "more30less60" - payment account created at least 30 but less than 60 days ago, "more60" - payment account created at least 60 days ago. | 
-|cardholderAccountInfo.accountChange |String | Indicates when the customer account in the shop was last modified, e.g. address change or new payment data. Possible values: "now" - Customer has changed his account during the current purchase, "less30" - Account was modified less than 30 days ago, "more30less60" - Account was modified at least 30 days ago but less than 60 days ago, "more60" - Customer account hasn't been changed in at least 60 days. | 
-|cardholderAccountInfo.shippingAddressAgeIndicator |String | Indicates when the customer first used the current shipping address. Possible values: "now" - customer uses shipping address for the first time, "less30" - shipping address first used less than 30 days ago, "more30less60" - shipping address first used at least 30 but less than 60 days ago, "more60" - shipping address first used at least 60 days ago. | 
-|cardholderAccountInfo.shippingNameIndicator |String | Specifies if the card holder's name is the same as the name of the shipping address. Possible values: "identical" - names are identical, "different" - names are different. | 
-|cardholderAccountInfo.suspiciousAccountActivity |Boolean | Indicates if the shop experienced suspicious activities of the card holder (true) or not (false). | 
-|cardholderAccountInfo.provisioningDayCount |Integer | Number of "add card" attempts within the last 24 hours. Format 0-9, max. 3. | 
-^**//tdsMerchantRiskIndicators//**  ^^^ 
-|tdsMerchantRiskIndicators.deliveryTimeframe |String | Indicates when the customer will receive the merchandise. Possible values: "electronic" - immediate electronic delivery, "moreThanOneDay", "over- night", "sameDay". | 
-|tdsMerchantRiskIndicators.deliveryEmailAddress |String | Delivery email address of the customer in case of an electronic delivery. Format A-Z, a-z, 0-9, [_.+-@], max. 254. | 
-|tdsMerchantRiskIndicators.giftCardAmount |Integer | Amount of a gift card in major currency unit, e.g. 123,45 EUR is 123. Format 0-9, max. 10. | 
-|tdsMerchantRiskIndicators.giftCardCount |Integer | Total count of gift cards purchased. Format 0-9, max. 2. | 
-|tdsMerchantRiskIndicators.giftCardCurrency |Integer | Currency code of a gift card according to ISO 4217. Format A-Z, max. 3. | 
-|tdsMerchantRiskIndicators.preOrderDate |Date | In the case of a pre-ordered purchase: date when the merchandise is expected to be available. | 
-|tdsMerchantRiskIndicators.preOrderPurchaseIndicator |String | Possible values: "available" - the merchandise is already available, "future" - the merchandise will be available in the future.| 
-|tdsMerchantRiskIndicators.reorderItemsIndicator |String | Indicates if the customer is reordering previously purchased merchandise: "first" - first time ordered, "reordered". | 
-|tdsMerchantRiskIndicators.shippingIndicator |String | Specifies where the merchandise is delivered to. Possible values: "digital" - di- gital delivery, "billingAddress" - to the billing address, "differentAddress" - to a different address, "verifiedAddress" - to a verfied address, "store" - to a store, "other" - something else. | 
-^**//tdsRequestorAuthenticationInformation//**  ^^^ 
-|tdsRequestorAuthenticationInformation.authenticationData |String | Authentication data of the customer. Format A-Z, a-z, 0-9 [!"#$%$'()*+,./:;<=>?@[\]%%^%%`{%%|%%}~-], max. 2048 | 
-|tdsRequestorAuthenticationInformation.authenticationTimestamp |DateTime | Date and time when the customer authenticated in the shop. Format JJJJ-MM-TTTHH:mm:ss | 
-|tdsRequestorAuthenticationInformation.authenticationMethod |String | Specifies how the customer authenticated to the shop. Possile values: "none" - not at all, e.g. the customer is shopping as a guest, "ownCredentials" - the customer authenticated with his credentials, e.g. login name and password, "federatedId", "issuerCredentials", "thirdParty", "fido", "fidoSigned", "srcAs- surance". | 
-^**//tdsTransactionAttributes//**  ^^^ 
-|tdsTransactionAttributes.purchaseInstalmentData |Integer | Maximum number of authorisations permitted for instalment payments. Format 0-9, max. 3, Wert muss > 1 sein. | 
-|tdsTransactionAttributes.recurringExpiry |Date | Date after which no further authorisations shall be carried out. Format YYYY-MM-DD. | 
-|tdsTransactionAttributes.recurringFrequency |Integer | Minimum number of days between authorisations. Format 0-9, max. 4. | 
-|tdsTransactionAttributes.type |String | Type of 3-D Secure 2.0 payment. Possible values: "purchase", "checkAccep- tance", "accountFunding", "quasiCash", "prepaidActivation". | 
- 
-== Example of a tds2Optional string (formatted for demonstration purposes, should normally be specified in one line) == 
-<code> 
-{ 
-  "email": "myemail@example.com", 
-  "addressesMatch": "false", 
-  "billingAddress": { 
-    "line2": "Beim Nachbarn klingeln", 
-    "line3": "zw. 22-24 Uhr", 
-    "state": "BW" 
-  }, 
-  "shippingAddress": { 
-    "city": "Berlin", 
-    "country": "DE", 
-    "line1": "Unter den Linden 1", 
-    "line2": "Brandenburger Tor", 
-    "line3": "(linker Bogen)", 
-    "state": "BER" 
-  }, 
-  "homePhoneNumber": { 
-    "country": "49", 
-    "regional": "75519209309" 
-  }, 
-  "mobilePhoneNumber": { 
-    "country": "49", 
-    "regional": "17093902978" 
-  }, 
-  "workPhoneNumber": { 
-    "country": "49", 
-    "regional": "8938928938" 
-  }, 
-  "cardholderAccountInfo": { 
-    "accountAgeIndicator": "more30less60", 
-    "passwordChangeIndicator": "never", 
-    "paymentAccountAgeIndicator": "less30", 
-    "accountChange": "now", 
-    "shippingAddressAgeIndicator": "more60", 
-    "shippingNameIndicator": "different", 
-    "suspiciousAccountActivity": "false", 
-    "provisioningDayCount": 10 
-  }, 
-  "tdsMerchantRiskIndicators": { 
-    "deliveryTimeframe": "overnight", 
-    "deliveryEmailAddress": "hans-mueller@example.com", 
-    "giftCardAmount": 0, 
-    "giftCardCount": 2, 
-    "giftCardCurrency": "EUR", 
-    "preOrderDate": "2020-12-20", 
-    "preOrderPurchaseIndicator": "available", 
-    "reorderItemsIndicator": "first", 
-    "shippingIndicator": "store" 
-  }, 
-  "tdsRequestorAuthenticationInformation": { 
-    "authenticationData": "123Hdajkd/dasjdkk", 
-    "authenticationTimestamp": "2020-11-09T12:09:09", 
-    "authenticationMethod": "ownCredentials" 
-  }, 
-  "tdsTransactionAttributes": { 
-    "purchaseInstalmentData": 2, 
-    "recurringExpiry": "2020-11-30", 
-    "recurringFrequency": 1234, 
-    "type": "quasiCash" 
-  } 
-} 
-</code> 
- 
-== Example of a transaction initialization == 
-{{page>codesamples:creditcard#transactionstart.request&noheader&nofooter}} 
- 
-=== Reply === 
-The reply is a JSON encoded string. The field rc contains the response code. If it is 0 the transaction was successfully initialized. The response also includes a transaction id and a redirect URL to the payment page. 
- 
-== Parameters == 
-^Name           ^Mandatory  ^Type      ^Description   ^ 
-|rc             |yes       |Integer   |[[en:girocheckout:errorcodes|response code]] | 
-|msg            |yes       |String    |additional information about the response code | 
-|reference      |optional |String    |unique GiroCheckout transaction ID | 
-|redirect       |optional |String    |redirect URL to the payment page| 
-^HEADER parameter^^^^ 
-|hash           |yes       |String    |HMAC MD5 hash on the complete JSON string. (see [[en:girocheckout:general:start#api_call_reply_to_the_merchant|api call reply]]) | 
- 
-== Example in case of success == 
-{{page>codesamples:creditcard#transactionstart.response.true&noheader&nofooter}} 
- 
-== Example in case of error == 
-{{page>codesamples:creditcard#transactionstart.response.false&noheader&nofooter}} 
- 
-==== Notification about the payment result ==== 
- 
-The result of an initialized transaction will be submitted to the merchant through URL specified in the //urlNotify// parameter. This notification should be used to update the order status in the merchant's system. 
- 
-The result of the payment is contained in the field //gcResultPayment// 
- 
-=== Request === 
-**URL:** notifyUrl of the previous init transaction call \\ 
-**Provided by:** Merchant \\ 
-**Called by:** GiroCheckout 
- 
-== GET parameters == 
-^Name             ^Mandatory    ^Type        ^Description   ^ 
-|gcReference      |yes       |String      | unique GiroCheckout transaction ID | 
-|gcMerchantTxId   |yes       | String     | merchant transaction ID | 
-|gcBackendTxId    |yes       |String      | payment processor transaction ID | 
-|gcAmount         |yes       |Integer     | if a decimal currency is used, the amount has to be in the smallest unit of value, eg. Cent, Penny | 
-|gcCurrency       |yes       |String      | currency | 
-|gcResultPayment  |yes       |Integer     | [[en:girocheckout:resultcodes#result_codes_payment|Payment result codes]]| 
-|gcHash           |yes       |String      | HMAC MD5 hash (see [[en:girocheckout:general:start#hash_generation|hash generation]]) | 
- 
-=== Reply === 
-As a reply to the GET request, one of the following HTTP status codes is expected.  
- 
-^HTTP status code    ^Description     ^ 
-|200 (OK)           | The notification was processed correctly.  | 
-|400 (Bad Request)  |The merchant did not process the notification and does not wish to be notified again.  | 
-|All others       |The notification is repeated no more than 10 times every 30 minutes until the merchant returns the status code 200 or 400. | 
- 
-==== Redirection of the customer to merchant ==== 
-After completing the payment, the customer may return to the merchant through a link. This return only happens once the customer clicks the "cancel" or "return to shop" button and is not done automatically.  
- 
-=== Request === 
-**URL:** redirectUrl of the previous init transaction call \\ 
-**Provided by:** Merchant \\ 
-**Called by:** GiroCheckout 
- 
-== GET parameters == 
-^Name             ^Mandatory    ^Type        ^Description   ^ 
-|gcReference      |yes       |String      | unique GiroCheckout transaction ID | 
-|gcMerchantTxId   |yes       |String      | merchant transaction ID | 
-|gcBackendTxId    |yes       |String      | payment processor transaction ID | 
-|gcAmount         |yes       |Integer     | if a decimal currency is used, the amount has to be in the smallest unit of value, e.g. Cent, Penny | 
-|gcCurrency       |yes       |String      | Currency | 
-|gcResultPayment  |yes       |Integer     | [[en:girocheckout:resultcodes#result_codes_payment|Payment result codes]]| 
-|gcHash           |yes       |String      | HMAC MD5 hash (see [[en:girocheckout:general:start#hash_generation|hash generation]]) | 
- 
- 
-===== Other transaction types ===== 
-These transactions reference a previous transaction.  They are based on a server to server communication and require no customer interaction (data entry). 
- 
-**Provided by:** GiroCheckout \\ 
-**Called by:** Merchant \\ 
- 
-==== Workflow ==== 
- 
-<uml> 
-hide footbox 
- 
-participant "Shop" as shop 
-participant "GiroCheckout" as girocheckout 
-participant "Credit Card Processor" as cc 
- 
-autonumber 
- 
-shop -> girocheckout:  
-girocheckout -> cc:  
-cc -> girocheckout:  
-girocheckout -> shop:  
- 
-center footer (c)2016 by GiroSolution AG 
-</uml> 
- 
-  - Shop sends reference to previous credit card transaction 
-  - GiroCheckout sends transaction to credit card processor 
-  - credit card processor transmits result to GiroCheckout 
-  - Shop receives reply on transaction outcome ([[en:girocheckout:creditcard:start#notification_about_the_payment_result|Notification]]) 
- 
-==== Capture ==== 
-{{page>en:girocheckout:transactiontypes:descriptions#capture.desc&noheader&nofooter}} 
- 
-==== Refund ==== 
-{{page>en:girocheckout:transactiontypes:descriptions#refund.desc&noheader&nofooter}} 
- 
-=== POST Parameters === 
-URL CAPTURE: https://payment.girosolution.de/girocheckout/api/v2/transaction/capture \\ 
-URL REFUND: https://payment.girosolution.de/girocheckout/api/v2/transaction/refund 
- 
-^Name           ^Mandatory  ^Type        ^Description   ^ 
-|merchantId     |yes       |Integer     |Merchant ID | 
-|projectId      |yes       |Integer     |Project ID| 
-|merchantTxId   |yes       |String(255) |Unique transaction id of the merchant | 
-|amount         |yes       |Integer     |If a decimal currency is used, the amount has to be in the smallest unit of value, e.g. Cent, Penny | 
-|currency       |yes       |String(3)   |Currency according to [[http://de.wikipedia.org/wiki/ISO_4217#Aktuell_g.C3.BCltige_W.C3.A4hrungen|ISO 4217]].\\ EUR = Euro | 
-|reference      |yes       |String      |GiroCheckout transaction ID from a previous transaction, which the capture or refund is for | 
-|purpose        |optional  |String      |Purpose of the refund. This information is printed on the credit card statement. | 
-|hash           |yes       |String      |HMAC MD5 hash on the complete call. See [[en:girocheckout:general:start#hash_generation|hash generation]] | 
- 
-== Example == 
-{{page>codesamples:creditcard#capture.request&noheader&nofooter}} 
- 
-=== Reply === 
-The reply is a JSON encoded string. The field rc contains the response code. If it is 0 the transaction was successfully initialized. The response also includes a transaction id and other information about the transaction. 
- 
-== Parameters == 
-^Name             ^Mandatory  ^Type        ^Description   ^ 
-|rc             |yes       |Integer   |[[en:girocheckout:errorcodes|response code]] | 
-|msg            |yes       |String    |Additional information about the response code | 
-|reference      |yes       |String    |Unique GiroCheckout transaction ID | 
-|merchantTxId   |yes       |String      | Unique transaction id of the merchant | 
-|backendTxId    |yes       |String      | Payment processor transaction ID | 
-|amount         |yes       |Integer     | If a decimal currency is used, the amount has to be in the smallest unit of value, e.g. Cent, Penny | 
-|currency       |yes       |String      | Currency | 
-|resultPayment  |yes       |Integer     | [[en:girocheckout:resultcodes#result_codes_payment|Payment result codes]]| 
-^HEADER parameter^^^^ 
-|hash           |yes       |String    |HMAC MD5 hash on the complete JSON string. (see [[en:girocheckout:general:start#api_call_reply_to_the_merchant|api call reply]]) | 
- 
-== Example in case of success == 
-{{page>codesamples:creditcard#capture.response.true&noheader&nofooter}} 
- 
-== Example in case of error == 
-{{page>codesamples:creditcard#capture.response.false&noheader&nofooter}} 
- 
-==== Void ==== 
-{{page>en:girocheckout:transactiontypes:descriptions#void.desc&noheader&nofooter}} 
- 
-=== POST Parameters === 
-URL VOID: https://payment.girosolution.de/girocheckout/api/v2/transaction/void 
- 
-^Name           ^Mandatory  ^Type      ^Description   ^ 
-|merchantId     |Yes       |Integer     |Merchant ID of a credit card project | 
-|projectId      |Yes       |Integer     |Project ID of a credit card project | 
-|merchantTxId   |Yes       |String(255) |Unique transaction ID of the merchant | 
-|reference      |Yes       |String      |GiroCheckout transaction ID that is to be voided | 
-|hash           |Yes       |String      |HMAC MD5 hash on the complete JSON string. (see [[en:girocheckout:general:start#api_call_reply_to_the_merchant|api call reply]])| 
- 
-== Example == 
-{{page>codesamples:creditcard#void.request&noheader&nofooter}} 
- 
-=== Reply === 
-The reply is a JSON encoded string. The field rc contains the response code. If it is 0 the call was successful. The response includes a transaction number and other information. 
- 
-== Parameters == 
-^Name           ^Mandatory  ^Type      ^Description   ^ 
-|rc             |yes       |Integer   |[[en:girocheckout:errorcodes|response code]] | 
-|msg            |yes       |String    |Additional information about the response code | 
-|reference      |yes       |String    |Unique GiroCheckout transaction ID | 
-|referenceParent      |yes       |String      | GiroCheckout transaction ID of the original base transaction | 
-|merchantTxId   |yes       |String      | Unique transaction id of the merchant | 
-|backendTxId    |yes       |String      | Payment processor transaction ID | 
-|amount         |yes       |Integer     | Voided amount, if a decimal currency is used, the amount has to be in the smallest unit of value, e.g. Cent, Penny | 
-|currency       |yes       |String      | Currency | 
-|resultPayment  |yes       |Integer     | [[en:girocheckout:resultcodes#result_codes_payment|Payment result codes]]| 
-^HEADER parameter^^^^ 
-|hash           |yes       |String    |HMAC MD5 hash on the complete JSON string. (see [[en:girocheckout:general:start#api_call_reply_to_the_merchant|api call reply]]) | 
- 
-== Example in case of success == 
-{{page>codesamples:creditcard#void.response.true&noheader&nofooter}} 
- 
-== Example in case of failure == 
-{{page>codesamples:creditcard#void.response.false&noheader&nofooter}} 
- 
-===== Pseudo card numbers (PKN) ===== 
-<WRAP center round important 60%> 
-This function requires a separate implementation on PSP side which also generate a one-time implementation fee. 
-</WRAP> 
-A pseudo card number is a reference to a credit card that has been used recently by the buyer (card number and expiration date). This reference allows the merchant to offer a previously used credit card for reuse by the customer. If the PKN is transmitted along during the initialization of a credit card transaction, the card number and expiration date is pre-filled in the payment form. The customer needs only to enter the validation code and may then carry out the payment. 
- 
-==== Query pseudo card information ==== 
-This function allows access to PKN information.  It returns as a result both the PKN and the saved credit card information (masked credit card number, expiration date), which were used for a previous transaction. 
- 
-**URL:** https://payment.girosolution.de/girocheckout/api/v2/creditcard/pkninfo \\ 
-**Provided by:** GiroCheckout \\ 
-**Called by:** Merchant 
- 
-==== POST Parameters ==== 
-^Name           ^Mandatory  ^Type      ^Description   ^ 
-|merchantId     |yes       |Integer   | Merchant ID | 
-|projectId      |yes       |Integer   | Project ID | 
-|reference      |yes       |String(36)| Unique reference to a GiroCheckout transaction | 
-|hash           |yes       |String(32)| HMAC MD5 hash on the complete JSON string. (see [[en:girocheckout:general:start#api_call_reply_to_the_merchant|api call reply]])| 
- 
-== Example == 
-{{page>codesamples:creditcard#pkninfo.request&noheader&nofooter}} 
- 
-==== Reply ==== 
-The reply is a JSON encoded string. The field rc contains the response code. If it is 0 the call was successful. The response includes the PKN number, the (masked) credit card number and the expiration date. 
- 
-== Parameters == 
-^Name           ^Mandatory  ^Type      ^Description   ^ 
-|rc             |yes       |Integer   |[[en:girocheckout:errorcodes|response code]] | 
-|msg            |yes       |String    |Additional information about the response code | 
-|pkn            |yes       |String    |Pseudo card number | 
-|cardnumber     |yes       |String    |Masked credit card number, e.g. 411111%%******%%1111 | 
-|expiremonth    |yes       |String    |Month of the credit card's expiration date | 
-|expireyear     |yes       |String    |Year of the credit card's expiration date | 
-^HEADER Parameter^^^^ 
-|hash           |yes       |String    |HMAC MD5 hash on the complete JSON string. (see [[en:girocheckout:general:start#api_call_reply_to_the_merchant|api call reply]]) | 
- 
-== Example in case of success == 
-{{page>codesamples:creditcard#pkninfo.response.true&noheader&nofooter}} 
- 
-== Example in case of error == 
-{{page>codesamples:creditcard#pkninfo.response.false&noheader&nofooter}} 
- 
-===== Recurring credit card payment ===== 
- 
-The transaction data is transmitted and the result of the credit card payment is returned immediately. This function is used for recurring credit card payments, such as subscriptions. 
- 
-The following steps are necessary to implement a recurring payment: 
- 
-  - Carry out a normal credit card transaction (see [[#initialize_credit_card_payment|Initialize Payment]]) 
-  - Obtain pseudo card number (PKN) (see [[#pseudo-query_pseudo_card_information|Query PKN information]]) 
-  - Store this PKN 
-  - On the next recurring payment, initialize a payment transaction (use correct end point, see [[#recurring_or_pkn_transaction|Recurring or PKN transaction]]), but set parameter pkn and let recurring=1. 
- 
-===== Recurring transaction ===== 
- 
-In order to carry out a recurring payment without customer intervention, use the following function.  
- 
-==== POST Parameters ==== 
-URL https://payment.girosolution.de/girocheckout/api/v2/transaction/payment  
- 
-^Name           ^Mandatory  ^Type      ^Description   ^ 
-|merchantId     |yes       |Integer     |merchant ID | 
-|projectId      |yes       |integer     |project ID | 
-|merchantTxId   |yes       |String(255) |unique transaction id of the merchant | 
-|amount         |yes       |Integer     |if a decimal currency is used, the amount has to be in the smallest unit of value, eg. Cent, Penny | 
-|currency       |yes       |String(3)   |currency\\ EUR = Euro| 
-|purpose        |yes       |String(27)  |purpose | 
-|type           |optional  |String(4)   |transaction type (see [[en:girocheckout:transactiontypes:start]]) \\ SALE = Immediate booking (default) \\ AUTH = Reservation of amount| 
-|pkn            |optional |String(50)  |This field is used process a transaction without re-entering the card data. \\ [pseudo card number] = pkn of the masked card data (see [[en:girocheckout:creditcard:start#pseudo_card_number_pkn|pseudo card number]])\\  | 
-|recurring      |optional |Boolean     |recurring payment \\ 0 = no (default) \\ 1 = yes  | 
-|urlNotify      |yes       |String      |URL, where the notification has to be sent after payment | 
-|hash           |yes       |String      |HMAC MD5 hash (see [[en:girocheckout:general:start#hash_generation|hash generation]]) | 
- 
-== Example == 
-{{page>codesamples:creditcard#recurringpayment.request&noheader&nofooter}} 
- 
-==== Reply ==== 
-The reply is a JSON encoded string. The field rc contains the response code. If it is 0 the call was successful. 
- 
-=== Parameters === 
-^Name           ^Mandatory  ^Type      ^Description   ^ 
-|rc             |yes       |Integer   |[[en:girocheckout:errorcodes|response code]] | 
-|msg            |yes       |String    |Additional information about the response code | 
-|reference      |yes       |String    |Unique GiroCheckout transaction ID | 
-|backendTxId    |yes       |String      | Payment processor transaction ID | 
-|resultPayment  |yes       |Integer     | [[en:girocheckout:resultcodes#result_codes_payment|Payment result codes]]| 
-^HEADER parameter^^^^ 
-|hash           |yes       |String    |HMAC MD5 hash on the complete JSON string. (see [[en:girocheckout:general:start#api_call_reply_to_the_merchant|api call reply]]) | 
- 
-== Example in case of success == 
-{{page>codesamples:creditcard#recurringpayment.response.true&noheader&nofooter}} 
- 
-== Example in case of error == 
-{{page>codesamples:creditcard#recurringpayment.response.false&noheader&nofooter}} 
  
en/girocheckout/creditcard_3ds2/start.1608297822.txt.gz · Last modified: 2021/04/12 14:32