Ταυτοποίηση 3D Secure

Η ταυτοποίηση 3D Secure (3DS) έχει σχεδιαστεί για να προστατεύει τις ηλεκτρονικές αγορές από απάτη μέσω πιστωτικών καρτών, επιτρέποντάς σας να επαληθεύσετε την ταυτότητα του πληρωτή πριν υποβάλετε μια συναλλαγή AUTHORIZE ή PAY. Η δυνατότητα 3DS της πύλης και ο έλεγχος ταυτότητας εντός του Mobile SDK περιορίζονται μόνο στο 3DS2. Αν το 3DS δεν είναι διαθέσιμο, ο έλεγχος ταυτότητας δεν συνεχίζεται. Ωστόσο, μπορείτε να συνεχίσετε την πληρωμή αν η πύλη σάς προτείνει να το κάνετε. Για περισσότερες πληροφορίες σχετικά με τη δυνατότητα 3DS της πύλης γενικά, βλ. Ταυτοποίηση 3D Secure.

    Για να ελέγξετε την ταυτότητα του πληρωτή:
  1. Χρησιμοποιήστε τον διακομιστή σας για να ενημερώσετε τη περίοδο λειτουργίας (session) με όλες τις σχετικές λεπτομέρειες που μπορούν να βοηθήσουν την ταυτοποίηση να προχωρήσει πιο ομαλά.
  2. Ζητήστε από το SDK να εκτελέσει την ταυτοποίηση.
  3. Ερμηνεύστε τα αποτελέσματα που επιστρέφονται από το SDK.

Ενημέρωση της περίοδος λειτουργίας με (session) λεπτομέρειες ταυτοποίησης

Όταν εκτελείτε ταυτοποίηση Mobile SDK (επαλήθευση της ταυτότητας ενός κατόχου κάρτας σε εφαρμογή για κινητές συσκευές), το Mobile SDK συλλέγει μετρήσεις συσκευής για αποστολή στην πύλη μαζί με τις πληροφορίες συναλλαγής σας.

Παρέχετε όσο το δυνατόν περισσότερες πληροφορίες σχετικά με τον πληρωτή και τη συναλλαγή για να αυξήσετε την πιθανότητα επιτυχούς ταυτοποίησης. Μπορείτε να προσθέσετε τα πεδία στον παρακάτω πίνακα στην περίοδο λειτουργίας σας με ένα αίτημα UPDATE SESSION.

Προαιρετικά πεδία UPDATE SESSION

Πεδίο Περιγραφή
order.merchantCategoryCode

Κωδικός κατηγορίας εμπόρου.

Αυτή η τιμή απαιτείται μόνο αν διαφέρει από τον κωδικό που έχει οριστεί για τον σύνδεσμο σε τράπεζα εμπόρου στο προφίλ εμπόρου σας.

Αντικείμενο billing.address

Διεύθυνση χρέωσης του πληρωτή.

Συνιστάται ιδιαίτερα η συμπερίληψη στο αίτημά σας όποτε είναι δυνατόν.

Αντικείμενο shipping.address

Διεύθυνση όπου θα αποσταλεί αυτή η παραγγελία.

Συνιστάται ιδιαίτερα η συμπερίληψη στο αίτημά σας όποτε είναι δυνατόν.

Αντικείμενο customer

Πληροφορίες που σχετίζονται με τον λογαριασμό του πληρωτή.

Συνιστάται ιδιαίτερα η συμπερίληψη στο αίτημά σας όποτε είναι δυνατόν.

Το αντικείμενο device που ορίζεται στην Αναφορά API είναι σχετικό μόνο για πληρωμές μέσω browser. Μην το χρησιμοποιείτε για ταυτοποίηση πληρωτών βάσει κινητού.

Τα παραπάνω πεδία βοηθούν το σύστημα να προσδιορίσει πώς ή αν θα πρέπει να ταυτοποιηθεί ο κάτοχος της κάρτας. Κατά τη διάρκεια της ταυτοποίησης, ο χρήστης περνά από μία από τις ακόλουθες ροές ταυτοποίησης:

  • Ροή Frictionless:

    Ο διακομιστής ελέγχου πρόσβασης (ACS) έχει συγκεντρώσει αρκετές πληροφορίες σχετικά με τον κάτοχο της κάρτας για την ταυτοποίηση του. Δεν απαιτείται άλλη ενέργεια από τον χρήστη.

  • Ροή Challenge:

    Ο ACS απαιτεί από τον κάτοχο της κάρτας να ολοκληρώσει ένα πρόσθετο βήμα ταυτοποίησης, που είναι η εισαγωγή ενός κωδικού πρόσβασης μίας χρήσης, η είσοδος στην τράπεζα έκδοσης ή κάτι παρόμοιο. Το ενσωματωμένο Mobile SDK χειρίζεται την εμφάνιση μιας εγγενούς διεπαφής συσκευής για αυτήν την πρόκληση. Το περιβάλλον εργασίας χρήστη για αυτές τις οθόνες μπορεί να προσαρμοστεί διαβιβάζοντας πεδία προσαρμογής του περιβάλλοντος εργασίας χρήστη στο Mobile SDK κατά την προετοιμασία.

Για περισσότερες πληροφορίες, βλ. Ροή ταυτοποίησης 3DS.

Το αντικείμενο για authentication.PSD2.exemption δεν υποστηρίζεται επί του παρόντος στο SDK.

Εκτέλεση ταυτοποίησης

Η ταυτοποίηση πληρωτή θεωρείται συναλλαγή από μόνη της στην πύλη και επομένως χρειάζεται ένα μοναδικό ID συναλλαγής.

Αν συλλέγετε μια πληρωμή για μια παραγγελία:

  • Μπορείτε να συσχετίσετε μια πληρωμή και μια συναλλαγή ταυτοποίησης χρησιμοποιώντας το ίδιο αναγνωριστικό παραγγελίας για κάθε συναλλαγή (για παράδειγμα, UUID).
  • Κάθε συναλλαγή εμφανίζεται ως ξεχωριστή συναλλαγή στο Merchant Administration.

Για να ξεκινήσετε τη διαδικασία ταυτοποίησης στο SDK, καλέστε τη συνάρτηση authenticate().

Παράδειγμα κώδικα για iOS


let request = AuthenticationRequest (navController: navController,
            apiVersion: apiVersion,
            sessionId: sessionId,
            orderId: orderId,
            transactionId: authenticationTxnId)
AuthenticationHandler.shared.authenticate(request) { (response) in
    // handle response
}
authenticationTxnId είναι ένα μοναδικό αναγνωριστικό για αυτήν τη συναλλαγή που τη διακρίνει από οποιαδήποτε άλλη συναλλαγή εντός της ίδιας παραγγελίας. Όταν στέλνετε το πραγματικό αίτημα συναλλαγής πληρωμής (π.χ. PAY), η πύλη χρησιμοποιεί αυτό το αναγνωριστικό για να αναζητήσει τα αποτελέσματα ταυτοποίησης που αποθηκεύονται όταν ζητάτε από το SDK να ταυτοποιήσει τον πληρωτή. Η πύλη διαβιβάζει τα αποτελέσματα της ταυτοποίησης στην τράπεζα εμπόρου μαζί με το αίτημα συναλλαγής πληρωμής.

Παράδειγμα κώδικα για Android


AuthenticationHandler.authenticate(activityContext, session, "your-auth- transaction-id", callback)
your-auth-transaction-id είναι ένα μοναδικό αναγνωριστικό για αυτήν τη συναλλαγή που τη διακρίνει από οποιαδήποτε άλλη συναλλαγή εντός της ίδιας παραγγελίας. Όταν στέλνετε το πραγματικό αίτημα συναλλαγής πληρωμής (π.χ. PAY), η πύλη χρησιμοποιεί αυτό το αναγνωριστικό για να αναζητήσει τα αποτελέσματα ταυτοποίησης που αποθηκεύονται όταν ζητάτε από το SDK να ταυτοποιήσει τον πληρωτή. Η πύλη διαβιβάζει τα αποτελέσματα της ταυτοποίησης στην τράπεζα εμπόρου μαζί με το αίτημα συναλλαγής πληρωμής.

Ερμηνεία της απόκρισης

Η συνάρτηση authenticate επιστρέφει ένα αντικείμενο AuthenticationResponse που περιέχει:

  • Σημαντικές πληροφορίες για το αποτέλεσμα
  • Ενέργειες που πραγματοποιήθηκαν κατά τη διάρκεια της επέμβασης.

Το πιο σημαντικό πεδίο που πρέπει να ελέγξετε είναι το response.recommendation. Μπορεί να περιέχει τις ακόλουθες τιμές:

  • PROCEED: Μπορείτε να συνεχίσετε με πληρωμή ή έγκριση.
  • DO_NOT_PROCEED: Κάτι απέτυχε κατά την πράξη ταυτοποίησης. Χρησιμοποιήστε το AuthenticationError αντικείμενο για να μάθετε περισσότερα.

Από την έκδοση Gateway API 70 και μετά, μπορεί να λάβετε τα ακόλουθα σφάλματα:

  • AuthenticationError.recommendation_ResubmitWithAlternativePaymentDetails: Πρέπει να ζητήσετε από τον πληρωτή εναλλακτικές λεπτομέρειες πληρωμής, για παράδειγμα, μια νέα κάρτα ή άλλον τρόπο πληρωμής και να υποβάλετε ξανά το αίτημα με τα νέα στοιχεία.
  • AuthenticationError.recommendation_AbandonOrder: Ο πάροχος υπηρεσιών πληρωμών (PSP), το σύστημα ή ο εκδότης απαιτεί από εσάς να εγκαταλείψετε την παραγγελία.
  • AuthenticationError.recommendation_DoNotProceed: Η πύλη αποτυγχάνει στο αίτημα και δεν υπάρχει τρόπος να πετύχει αυτή η συναλλαγή.

Αν η ταυτοποίηση αποτύχει, μπορείτε επίσης να εξετάσετε το response.error για περισσότερες πληροφορίες σχετικά με τυχόν άλλα σφάλματα που αποστέλλονται από την πύλη.

Παράδειγμα κώδικα για iOS


AuthenticationHandler.shared.authenticate(request) { (response) in
    DispatchQueue.main.async {
        switch response.recommendation {
        case .doNotProceed:
            if let error = response.error {
            print ("SDK Error:\(error.localizedDescription)")
            if let authError = error as? AuthenticationError,
            authError ==
        .recommendation_ResubmitWithAlternativePaymentDetails {
                //"Authentication not successful, re-enter card details"
              }
            }
        // "Authentication not successful"
        case .proceed:
            // Proceed to submit the payment, authorization etc
            }
        }
    }

Παράδειγμα κώδικα για Android


AuthenticationHandler.authenticate(activityContext, session, "your-auth-transaction-id") { response ->
    when(response.recommendation) {
        AuthenticationRecommendation.PROCEED -> {
            // continue to payment/authorization
    }
    AuthenticationRecommendation.DO_NOT_PROCEED -> {
            if (response.error !=null) {
                if (response.error is AuthenticationError.RecommendationResubmitWithAlternativePaymentDetails) {
                    // "Authentication not successful, re-enter card details
                     }
            } else {
              // "Authentication not successful"
           }
        }
    }
}