Aan de slag met Android SDK

  Laatst bijgewerkt: 

Voordat u verder gaat, moet u ervoor zorgen dat u aan alle vereisten voldoet
Klik hier om deze informatie in een nieuw tabblad te openen

Onze GitLab repository bevat een voorbeeld-app die demonstreert hoe u onze SDK voor betalingen in uw toepassing kunt integreren. Onze voorbeelden zijn voornamelijk geschreven in Kotlin, maar er zijn ook voorbeelden in Java. Klik hier om te bekijken.

Kenmerken

Met de Trust Payments Android SDK kun je naadloos een kant-en-klare of aangepaste UI in je app integreren om kaartbetalingen te accepteren en te voldoen aan het Strong Customer Authentication (SCA) mandaat.

Gebruik deze integratie als u een vooraf gebouwde "Drop-In" UI nodig hebt die de volgende functies ondersteunt:

  • Kaartbetalingen
  • tokenisatie betalingen
  • Aanpassing van UI-componenten aan de huisstijl van uw bedrijf
  • Lokale en aangepaste vertalingen
  • Google Pay

Met onze SDK kun je ook betalingen naar de Trust Payments verwerken, terwijl je je eigen weergave voor het afrekenen van betalingen gebruikt.

 

             

 

1. Installeer de SDK in uw app

Om de Mobile SDK in je project op te nemen, moet je gebruik maken van Gradle, een bouwautomatiseringsprogramma dat functies voor afhankelijkheidsbeheer biedt:

 

SDK artefacten integreren als een afhankelijkheid van Maven

Voeg in je app-level build.gradle bestand de volgende afhankelijkheden toe:

// Trust Payments SDK core dependency
implementation 'com.trustpayments.mobile:core:<latest_version>' // Optional UI module providing ready-to-use "drop-in" view
implementation 'com.trustpayments.mobile:ui:<latest_version>'

Om de Mobile SDK te integreren, voegt u de volgende afhankelijkheden toe aan uw app-level build.gradle bestand:

Je zult de volgende bronnen moeten raadplegen en de laatste pakketversienummers in de bovenstaande plaatsaanduidingen moeten opnemen:

Voeg in je build.gradle bestand op root-niveau de volgende afhankelijkheid toe om de Cardinal SDK te krijgen.

allprojects {
repositories {
google()
...
maven {
url "https://gitlab.com/api/v4/projects/56100229/packages/maven"
name "GitLab"
credentials(HttpHeaderCredentials) {
name = "Private-Token"
value = <gitlab_token>
}
authentication {
header(HttpHeaderAuthentication)
}
}
}
}
Vanaf release 2.8.3 moet u contact opnemen met ons ondersteuningsteam om een gitlab_token aan te vragen voor het Android SDK-project.

 

             

 

2. Initialiseer de Android SDK in uw app

De instantie configureren

Voordat je kunt beginnen met het accepteren van betalingen, moet je eerst een instantie van onze SDK aanmaken PaymentTransactionManager klasse.

PaymentTransactionManager(
context = context,
gatewayType = TrustPaymentsGatewayType.EU,
isCardinalLive = false,
merchantUsername = usernameFromTrustPayments,
cardinalStyleManager = null,
isLocationDataConsentGiven = false
)
  Parameter Beschrijving
  Verplicht context Biedt de Android
  Verplicht gatewayType

Specificeert de gateway-verwerkingsregio. Stel dit in op: TrustPaymentsGatewayType.EU

  Verplicht isCardinalLive Als dit is ingesteld op waar, worden alle 3-D Secure bewerkingen gericht op de 3D-Secure live-omgeving, anders wordt de staging-omgeving gebruikt. Stel dit in op waar bij het verwerken van live betalingen.
  Verplicht merchantUsername Gebruikersnaam verstrekt door ons ondersteuningsteam, d.w.z. uw JWT-gebruikersnaam
 Optioneel cardinalStyleManager 3D-beveiligde UI-aanpassing.
  Verplicht isLocationDataConsentGiven Als dit is ingesteld op waar , bevestigt u dat uw app toestemming heeft gekregen van de klant om de locatie van zijn apparaat vast te leggen als onderdeel van het privacybeleid van uw app.

 

Locatie Toestemming

Vanaf v2.7.10.1 van de Android SDK hebben we een extra parameter toegevoegd aan de SDK's PaymentTransactionManager klasse genaamd isLocationDataConsentGiven. Standaard, isLocationDataConsentGiven is ingesteld op false, wat betekent dat de klant niet heeft ingestemd met het privacybeleid van uw app waarin toestemming wordt gevraagd om de locatiegegevens van het apparaat vast te leggen. De informatie die nodig is om het privacybeleid aan de klant te tonen kan worden gevonden hier.

Vul het volgende in om de kans te verkleinen dat uw klanten door de kaartuitgever worden uitgedaagd voor verdere verificatie:

  1. Zodra uw klant heeft ingestemd met het privacybeleid van uw app, dat ook locatiegegevens omvat, moet de toestemming voor het privacybeleid van uw app worden doorgegeven aan de Trust Payments SDK. PaymentTransactionManager instantie door de instelling isLocationDataConsentGiven als waar. 

  2. Verzoek om GPS in te schakelen als dit momenteel is uitgeschakeld door het apparaat van de klant.
  3. Maak een locatie toestemmingsprompt wanneer uw app een instantie van de PaymentTransactionManager klasse. U moet machtigingen opnemen in het manifestbestand:
    <uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION"/>
    <uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />
    Als de klant uw app toestemming geeft voor toegang tot de apparaatlocatie, probeert de SDK de apparaatlocatie vast te leggen. Raadpleeg voor best practices voor het genereren van de toestemmingsprompt voor de apparaatlocatie De officiële best practices van Google.

Voor een voorbeeld van hoe je het privacybeleid aan klanten kunt presenteren in je app voor acceptatie door de klant, kun je onze voorbeeldtoepassingsklasse raadplegen PrivacyPolicyActivity.kt

 

Aangepaste betalingsweergave

Voor integrators die al een eigen betaalweergave hebben of van plan zijn te bouwen waarmee ze de kaartgegevens van de klant kunnen vastleggen, kunt u doorgaan naar het gedeelte 'Een betaling verwerken' waar we uitleggen hoe u een betaalsessie aanmaakt en het betalingsverzoek naar onze gateway voor betalingsverwerking uitvoert.

 

Drop-In Payment View

De SDK wordt geleverd met een eigen Drop-In Payment View waarmee je snel kaartgegevens kunt toevoegen aan je kassa. Om onze standaard Drop-In Payment View op te blazen, voeg je deze eerst toe aan een geschikt XML-bestand:

<com.trustpayments.mobile.ui.dropin.DropInPaymentView
android:id="@+id/dropInPaymentView"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:padding="20dp" />

Vervolgens moet een activiteit met betrekking tot deze lay-out de vereiste listener-interface implementeren en de methoden van de Drop-In Payment View overschrijven. Dit zorgt ervoor dat de kaartgegevensvariabelen worden bijgewerkt wanneer de kaartgegevens van de klant met succes zijn gevalideerd.

class SimpleActivity : AppCompatActivity(), DropInPaymentView.DropInPaymentViewListener {

    // Payment card details.
    private var pan = ""
    private var expiryDate = ""
    private var cvv = ""

    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        setContentView(R.layout.activity_simple)
        // Set the drop-in payment view listener
        findViewById(R.id.dropInPaymentView).dropInPaymentViewListener = this
    }

    /**
     * Captures user input from payment view and update variables if input is valid.
     * */
    override fun onInputValid(paymentInputType: PaymentInputType, input: String) {
        when (paymentInputType) {
            PaymentInputType.PAN - pan = input
            PaymentInputType.ExpiryDate - expiryDate = input
            PaymentInputType.CVV - cvv = input
        }
    }

    /**
     * Get called once card details is provided in payment view and pay button is clicked.
     * */
    override fun onPayButtonClicked() {
        processTransaction(pan = pan, expiryDate = expiryDate, cvv = cvv)
    }
}
  

 

 Een betaling verwerken

  Bij de volgende oplossing worden gevoelige betalingsgegevens verzonden. Bij het ontwikkelen van uw oplossing moet u ervoor zorgen dat uw systeem het kaartnummer, de vervaldatum of de beveiligingscode NIET opslaat of registreert. Als u dit niet doet, wordt uw PCI-compliance ongeldig.

Om een betaling aan te vragen, maak je eerst een betaalsessie aan door de optie createSession methode, die de volgende argumenten meekrijgt:

  Parameter Beschrijving
  Verplicht jwt Een JSON Web Token(JWT) ondertekend op je beveiligde merchant server en teruggestuurd naar je app, die details bevat over het bedrag van de betalingstransactie, de facturering van de klant, verzending, referentie-informatie over de bestelling, enz. Als je wilt weten hoe je een JWT construeert en wat de payload ervan is, klik je hier om meer informatie in een nieuw tabblad te openen.
  Optioneel cardPan

Het kaartnummer van de klant

  Optioneel cardExpiryDate De vervaldatum van de kaart van de klant
  Optioneel cardSecurityCode De beveiligingscode van de klant

 

Bel de uitvoerenSession methode, die de volgende argumenten meekrijgt:

  Parameter Beschrijving
  Verplicht session De details van de betaalsessie, inclusief de ondertekende JWT & klantkaartgegevens
 Conditioneel activityProvider

Bij het bellen van executeSession methode en ook het specificeren van THREEDQUERY in de JWT payload requesttypedescriptions veldlijst moet u een activityProvider. De activityProvider is een callback naar een Activity. De Activity is het venster in je Android en dit moet bekend zijn bij onze SDK voor betalingen om het 3-D Secure versie 2-uitdagingsvenster met succes weer te geven aan je klanten.

  Vanaf v2.8.0.0 - activityResultProvider mag niet worden doorgegeven als de 3e parameter aan de executeSession methode, omdat deze alleen nodig was voor 3-D Secure versie 1, die sindsdien is afgeschaft.

 private fun processTransaction(pan: String, expiryDate: String, cvv: String) {
  lifecycleScope.launch(Dispatchers.IO) {
	// Obtain generated JWT from client server, This contains payment order information that you are planning to pay.
	val jwt: String = fetchJwtFromServer()
	// Create payment session which contains order and payment information.
	val session: PaymentSession = paymentTransactionManager.createSession(
		jwtProvider = { jwt },
		cardPan = pan,
		cardExpiryDate = expiryDate,
		cardSecurityCode = cvv,
	)
	// Executes payment request using PaymentTransactionManager. Once completed response will be presented.
	val response: Response = paymentTransactionManager.executeSession(
		session = session,
		activityProvider = {
			this@SimpleActivity
		},
	)
	// Validate payment result and update screen with the transaction details.
	processResponse(response)
  }
}

 

Antwoord betaling verifiëren

De betalingsrespons komt terug als een JSON Web Token (JWT). Het is noodzakelijk dat de handtekening van het JWT-antwoord wordt gevalideerd voordat de inhoud wordt vertrouwd. Net als bij het betalingsverzoek JWT, moet de verificatie van de handtekening plaatsvinden op je beveiligde server.

Neem voor meer informatie over het valideren van de respons JWT even de tijd om het kopje 'De respons JWT-handtekening verifiëren' in onze JWT-leidraad te bekijken .

Zodra de handtekening met succes is geverifieerd en je hebt bevestigd dat het AUTH verzoek met succes is verwerkt, kun je doorgaan met het bijwerken van het app scherm om de klant op de hoogte te stellen.

/**
* Validates executed payment result and update screen with the transaction details.
* */
private suspend fun processResponse(response: Response) {
  // Verify JWT signature from response on your server
  if (verifyJwtSignatureUsingYourServer(response.responseJwtList)) {
    val parsedResult = ResponseParser.parse(response.responseJwtList)
    val transactionReference =
parsedResult?.firstOrNull() ?.customerOutput?.transactionReference withContext(Dispatchers.Main) { Toast.makeText( this@SimpleActivity, "Transaction Successful: $transactionReference", Toast.LENGTH_LONG ).show() } } }

 

Volledig voorbeeld

package com.trustpayments.mobile.exampleapp

import JwtProvider.fetchJwtFromServer
import JwtProvider.verifyJwtSignatureUsingYourServer
import android.os.Bundle
import android.widget.Toast
import androidx.appcompat.app.AppCompatActivity
import androidx.lifecycle.lifecycleScope
import com.trustpayments.mobile.core.PaymentSession
import com.trustpayments.mobile.core.services.api.TrustPaymentsGatewayType
import com.trustpayments.mobile.core.services.transaction.PaymentTransactionManager
import com.trustpayments.mobile.core.services.transaction.PaymentTransactionManager.Response
import com.trustpayments.mobile.core.util.ResponseParser
import com.trustpayments.mobile.ui.dropin.DropInPaymentView
import com.trustpayments.mobile.ui.model.PaymentInputType
import kotlinx.coroutines.Dispatchers
import kotlinx.coroutines.launch
import kotlinx.coroutines.withContext

class SimpleActivity : AppCompatActivity(), DropInPaymentView.DropInPaymentViewListener {

    // PaymentTransactionManager responsible for executing the transaction.
    private val paymentTransactionManager by lazy {
        PaymentTransactionManager(
            context = applicationContext,
            gatewayType = TrustPaymentsGatewayType.EU,
            isCardinalLive = false, // Mark this true for production mode.
            merchantUsername = BuildConfig.MERCHANT_USERNAME, // MERCHANT_USERNAME obtained through account manager
            isLocationDataConsentGiven = true,
        )
    }

    // Payment card details.
    private var pan = ""
    private var expiryDate = ""
    private var cvv = ""

    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        setContentView(R.layout.activity_simple)
        // Set the drop-in payment view listener
        findViewById(R.id.dropInPaymentView).dropInPaymentViewListener = this
    }

    /**
     * Captures user input from payment view and update variables if inputs are valid.
     * */
    override fun onInputValid(paymentInputType: PaymentInputType, input: String) {
        when (paymentInputType) {
            PaymentInputType.PAN - pan = input
            PaymentInputType.ExpiryDate - expiryDate = input
            PaymentInputType.CVV - cvv = input
        }
    }

    /**
     * Gets called once card details are provided in payment view and pay button is clicked.
     * */
    override fun onPayButtonClicked() {
        processTransaction(pan = pan, expiryDate = expiryDate, cvv = cvv)
    }

    private fun processTransaction(pan: String, expiryDate: String, cvv: String) {
        lifecycleScope.launch(Dispatchers.IO) {
            // Obtain generated JWT from client server, This contains payment order information that you are planning to pay.
            val jwt: String = fetchJwtFromServer()
            // Create payment session which contains order and payment information.
            val session: PaymentSession = paymentTransactionManager.createSession(
                jwtProvider = { jwt },
                cardPan = pan,
                cardExpiryDate = expiryDate,
                cardSecurityCode = cvv,
            )
            // Executes payment request using PaymentTransactionManager. Once completed response will be presented.
            val response: Response = paymentTransactionManager.executeSession(
                session = session,
                activityProvider = {
                    this@SimpleActivity
                },
            )
            // Validate payment result and update screen with the transaction details.
            processResponse(response)
        }
    }

    /**
     * Validates executed payment result and update screen with the transaction details.
     * */
    private suspend fun processResponse(response: Response) {
        // Verify JWT signature from response
        if (verifyJwtSignatureUsingYourServer(response.responseJwtList)) {
            val parsedResult = ResponseParser.parse(response.responseJwtList)
            val transactionReference =
                parsedResult?.firstOrNull()
                    ?.customerOutput?.transactionReference
            withContext(Dispatchers.Main) {
                Toast.makeText(
                    this@SimpleActivity,
                    "Transaction Successful: $transactionReference",
                    Toast.LENGTH_LONG
                ).show()
            }
        }
    }
}

 

             

 

3. Webhooks configureren

Het wordt sterk aanbevolen om webhooks te configureren op uw Mobile SDK-oplossing. Indien geconfigureerd, wordt URL-kennisgevingen naar uw systeem gestuurd wanneer betalingen op uw rekening worden verwerkt.

  Als u webhooks niet configureert zoals hieronder wordt uitgelegd, wordt u mogelijk niet op de hoogte gebracht van betalingen die op uw rekening zijn verwerkt, bijvoorbeeld in geval van client-side fouten die optreden voordat het antwoord wordt geretourneerd.

  1. Aanmelden bij Portal.

  2. Zoek naar uw sitereference met behulp van het zoekvak bovenaan de pagina.

  3. Wanneer u de details van uw site bekijkt, klikt u op "Regelbeheer".



  4. Selecteer het actietype "URL-kennisgeving" uit het keuzemenu en uw browser wordt omgeleid.



  5. Maak een nieuwe URL-kennisgeving regel aan:

  6. Zorg ervoor dat de regel actief is (dit wordt aangegeven met een vinkje onder het Actief kolom). Na activering wordt de regel toegepast op alle betalingssessies voor de opgegeven sitereference, en de URL-kennisgeving wordt geactiveerd wanneer aan de gespecificeerde voorwaarde wordt voldaan.

    Opmerking: Alle nieuwe regels moeten worden aangemaakt op je test sitereference en getest om er zeker van te zijn dat ze werken zoals verwacht voordat ze worden toegevoegd aan uw live sitereference.

  7. Jij moet configureer uw systeem om te reageren op alle URL-kennisgevingen ontvangen van Trust Payments met een HTTP 200 OK response.
    Bijvoorbeeld: “HTTP/1.0 200 OK”.
    Uw systeem moet binnen 8 seconden na ontvangst van een melding antwoorden.

Zodra u de bovenstaande stappen hebt voltooid, raden wij u aan terug te keren naar de Aan de slag voor meer informatie over het inschakelen van add-ons, het testen van uw oplossing en het live gaan.

Klik hier om de Aan de slag-pagina te openen.

 

Was dit artikel nuttig?
0 van de 0 vonden dit nuttig