logo Mercanet

Release 24.5

go directly to content

Search by keywords

In-App - SDK Android

To search in the page use Ctrl+F on your keyboard

It is advised to read the following documents before

  • Recommended

    Sips In-App JSON

    Functional, technical documentation and user guides to help you to integrate Mercanet online payment solution.

    Open in new tab Sips In-App JSON

Mercanet is a secure multi-channel e-commerce payment solution that complies with the PCI DSS standard. It allows you to accept and manage payment transactions by taking into account business rules related to your activity (payment upon shipping, deferred payment, recurring payment, payment in instalments, etc.).

The purpose of this document is to explain the implementation steps of the solution up to live operations.

This document is intended for merchants wishing to subscribe to the Mercanet offer and integrate payment as part of their Android mobile application.

It is an implementation guide for your technical team.

To get an overview of the Mercanet solution, we advise you to consult the following documents:

To get an overview of the In-App connector, we advise you to also consult the following document:

Knowledge of standards related to mobile programming languages used today is necessary to develop a Android mobile application connected to the SDK proposed by In-App.

Before implementing the SDK, you should have followed In-App connector implementation steps (cf. In-App documentation).

Note: all code sections in this document are provided as samples, you will need to adapt them to your mobile application for them to be fully operable.
IMPORTANT: the In-App SDK must be used with at least a 4.4 version of Android system.

You can download our Android SDK via this link.

SDK checksums are in the table below.

Type Checksum
MD5 40fea6b163e48659cf289561339125e8
SHA256 93521df24b3eedd902ba3f7bb61a88e8c2db0657afb54e955625fdfd6655dc39
SHA512 a604722120aaf811b9c10636847dbf1415ca8417aedfc083b285b19847d48e477ff31d2157aff8d27e0412bc8e4b64ba0076ddccd39eec375afd2699bafa7f0c
Version Date Description
24.1.0 January 2024

Remove dependencies. (Replaced by Android API native methods)

Fix Sonar vulnerabilities

23.1.0 January 2023

Add field paymentMeanCoBadgingBrandList on getWalletData method

22.5.0 July 2022

Add field issuingCountryCode on responses

21.5.2 July 2021

Use Activity instead of Context

21.4.1 June 2021

Add fields paymentMeanBrand and paymentMeanBrandSelectionStatus on walletOrder, walletCheckEnrollment and addCard methods

21.3.2 April 2021

Add paymentTokenGenerate service

GDPR: Delete fields Email, AndroidId, SimSerialNumber, deviceName and IMEI from deviceContext

21.2.0 February 2021

Change paymentMeanId format from String to Integer

To use this library in your Java application, add the JAR of the SDK to the project compilation folder.

  • Right click on your project:
    • Select Properties;
    • Click on Java Build Path;
    • In Libraries tab, click on Add JARs;
    • Select the JAR of the SDK, then click on OK.

To use this library in your Android Studio and Gradle applications, add the AAR file of the SDK to the libs folder.

  • in the file build.gradle, add the following code to the repositories section;
flatDir {
            dirs 'libs'
            }
  • add the following dependency:
compile(name: 'sdk-24.1.0', ext: 'aar')
        

Add the following entries to the Android manifest of the application:


      <uses-permission android:name="android.permission.INTERNET"/>
      <uses-permission android:name="android.permission.READ_PHONE_STATE"/>
    
Note: READ_PHONE_STATE permission is optional.

The SDK needs these permissions to retrieve the telephone information:

Device information As from version Comments
Debugger detector 1.0
Emulator detector 1.0
Service provider 1.0
Rooted telephone 1.0
Screen switched on? 1.0
Android API version 1.0

All the necessary methods are in the PaymentManager public class.

Tip: these methods carry out network calls, so they must be called asynchronously.
Tip: before using a function, make sure you have the rights to use it on your shop by contacting the Mercanet technical support.

This function allows you to carry out a card payment.
It has to be called after a request from your server to In-App orderInitialize service, with sdkOperationName=CARDORDER.

cardOrder request format

Fields Presence Type Comments
activity Mandatory Activity Used to retrieve phone data from the Android Activity context
cardCSCValue Optional NSString Visual card security code
cardExpiryDate Mandatory NSString Card expiry date
cardNumber Optional NSString Card number
paymentMeanBrand Optional NSString Name of the payment method that is used
paymentMeanBrandSelectionStatus Optional NSString Status of the processing of the brand application selection
publicKeyValue Mandatory NSString Value of the public key used to encrypt the data sent to through the SDK Retrieved from initialization request
redirectionData Mandatory NSString Context of the transaction sent during initialization
redirectionUrl Mandatory NSString URL of the next SDK service to call
redirectionVersion Mandatory NSString Interface version

cardOrder response format (OrderResponse object)

Fields Type Comments
acquirerResponseCode NSString Acquirer response code
amount NSString Transaction amount
authentExemptionReasonList List of NSString Exemption fixed by the issuer
authorisationId NSString Authorisation ID returned by the acquirer if the authorisation request is accepted
authorisationTypeLabel NSString Label of the authorisation request type
authorMessageReference NSString Identifier shared with the acquirer during the authorisation process
captureDay NSString Capture delay
captureMode NSString Capture mode
cardData CardData Contains specific information regarding a card (Cf part Containers)
cardExpiryDate NSString (yyyyMM) Card expiry date
currencyCode NSString Currency code
customerId NSString Customer ID
errorFieldName NSString Request field name which originated the error
guaranteeIndicator NSString Transaction's guarantee level
guaranteeLimitDateTime NSString Deadline for application of the payment guarantee
holderAuthentMethod NSString Name of the method applied to authenticate a payment mean holder
holderAuthentProgram NSString Authentication program
holderAuthentRelegationCode NSString Code indicating whether the issuer accepts or refuses the transfer of responsibility
holderAuthentResponseCode NSString Response code of the authentication process
holderAuthentStatus NSString Result of the authentication process
holderAuthentType NSString Cardholder authentication type applied by the issuer of the card. Field valued in 3-D Secure v2.
inAppResponseCode NSString Mercanet response code
invoiceReference NSString Invoice reference
issuerWalletInformation NSString Information given by the wallet provider intended for the merchant in response to a transaction creation request
maskedPan NSString Masked card number
merchantId NSString Mercanet identifier of your shop
merchantWalletId NSString Customer's Wallet identifier
orderChannel NSString Order channel
orderId NSString Order ID
panEntryMode NSString Card number reading mode
paymentMeanBrand NSString Brand of the card
paymentMeanBrandSelectionStatus NSString Status of the processing of the brand application selection
paymentMeanType NSString Payment method type (card, transfer, withdrawal, etc). It groups together a set of paymentMeanBrand.
paymentPattern NSString Type of payment (per operation, 1st recurring payment etc).
returnContext NSString Value sent in the request
s10TransactionReference S10TransactionReference Contains the identification of the original transaction (to be compliant with Mercanet 1.0 (Cf Containers part)
statementReference NSString Reference provided by the merchant which is sent in the payment collection flow. This reference appears on the account statements of the cardholder.
transactionDateTime NSString Date and time the transaction was processed on the Mercanet server (expressed in the Mercanet server time zone)
transactionOrigin NSString Origin of a transaction (for example: name of the program), set by the merchant
transactionPlatform NSString Platform where the transaction has been executed
transactionReference NSString Transaction reference
walletType NSString Wallet type

This function allows you to carry out a wallet payment.
It has to be called after a request from your server to In-App orderInitialize service, with sdkOperationName=WALLETORDER.

walletOrder request format

Fields Presence Type Comments
activity Mandatory Activity Used to retrieve phone data from the Android Activity context
cardCSCValue Optional NSString Visual card security code
paymentMeanBrand Optional NSString Selected brand of the payment mean. If not sent, value stored in the Wallet will be used.
paymentMeanBrandSelectionStatus Optional NSString Status of the processing of the brand application selection. If not sent, value stored in the wallet will be used.
paymentMeanId Mandatory NSString ID of the selected card in the Wallet
publicKeyValue Mandatory NSString Value of the public key used to encrypt the data sent to through the SDK Retrieved from initialization request
redirectionData Mandatory NSString Context of the transaction sent during initialization
redirectionUrl Mandatory NSString URL of the next SDK service to call
redirectionVersion Mandatory NSString Interface version

walletOrder response format (OrderResponse object)

Fields Type Comments
acquirerResponseCode NSString Acquirer response code
amount NSString Transaction amount
authentExemptionReasonList List of NSString Exemption fixed by the issuer
authorisationId NSString Authorisation ID returned by the acquirer if the authorisation request is accepted
authorisationTypeLabel NSString Label of the authorisation request type
authorMessageReference NSString Identifier shared with the acquirer during the authorisation process
captureDay NSString Capture delay
captureMode NSString Capture mode
cardData CardData Contains specific information regarding a card (Cf part Containers)
cardExpiryDate NSString (yyyyMM) Card expiry date
currencyCode NSString Currency code
customerId NSString Customer ID
errorFieldName NSString Request field name which originated the error
guaranteeIndicator NSString Transaction's guarantee level
guaranteeLimitDateTime NSString Deadline for application of the payment guarantee
holderAuthentMethod NSString Name of the method applied to authenticate a payment mean holder
holderAuthentProgram NSString Authentication program
holderAuthentRelegationCode NSString Code indicating whether the issuer accepts or refuses the transfer of responsibility
holderAuthentResponseCode NSString Response code of the authentication process
holderAuthentStatus NSString Result of the authentication process
holderAuthentType NSString Cardholder authentication type applied by the issuer of the card. Field valued in 3-D Secure v2.
inAppResponseCode NSString Mercanet response code
invoiceReference NSString Invoice reference
issuerWalletInformation NSString Information given by the wallet provider intended for the merchant in response to a transaction creation request
maskedPan NSString Masked card number
merchantId NSString Mercanet identifier of your shop
merchantWalletId NSString Customer's Wallet identifier
orderChannel NSString Order channel
orderId NSString Order ID
panEntryMode NSString Card number reading mode
paymentMeanBrand NSString Brand of the card
paymentMeanBrandSelectionStatus NSString Status of the processing of the brand application selection
paymentMeanType NSString Payment method type (card, transfer, withdrawal, etc). It groups together a set of paymentMeanBrand.
paymentPattern NSString Type of payment (per operation, 1st recurring payment etc).
returnContext NSString Value sent in the request
s10TransactionReference S10TransactionReference Contains the identification of the original transaction (to be compliant with Mercanet 1.0 (Cf Containers part)
statementReference NSString Reference provided by the merchant which is sent in the payment collection flow. This reference appears on the account statements of the cardholder.
transactionDateTime NSString Date and time the transaction was processed on the Mercanet server (expressed in the Mercanet server time zone)
transactionOrigin NSString Origin of a transaction (for example: name of the program), set by the merchant
transactionPlatform NSString Platform where the transaction has been executed
transactionReference NSString Transaction reference
walletType NSString Wallet type

This function allows you to get the BCMC Intent URL to be called to carry out a BCMC payment.
It has to be called after a request from your server to In-App orderInitialize service, with sdkOperationName=PAYMENTPROVIDERORDER and paymentMeanBrand=BCMCMOBILE.

paymentProviderOrder request format

Fields Presence Type Comments
activity Mandatory Activity Used to retrieve phone data from the Android Activity context
publicKeyValue Mandatory NSString Value of the public key used to encrypt the data sent to through the SDK Retrieved from initialization request
redirectionData Mandatory NSString Context of the transaction sent during initialization
redirectionUrl Mandatory NSString URL of the next SDK service to call
redirectionVersion Mandatory NSString Interface version

paymentProviderOrder response format (PaymentProviderResponse object)

Fields Type Comments
errorFieldName NSString Request field name which originated the error
inAppResponseCode NSString Mercanet response code
outerRedirectionUrl NSString Redirection URL to an outer payment application (here: BCMC mobile application)
redirectionUrl NSString URL of the next SDK service to call
transactionContextData NSString Transaction context
transactionContextVersion NSString Transaction context version

This function allows you to check the status of the ongoing BCMC transaction once the BCMC application has been called.
It has to be called following a request to In-App paymentProviderOrder, when the BCMC application calls back the merchant application.

getTransactionData request format

Fields Presence Type Comments
activity Mandatory Activity Used to retrieve phone data from the Android Activity context
transactionContextData Mandatory NSString Transaction context Retrieved from paymentProviderOrder response
transactionContextVersion Mandatory NSString Transaction context version
redirectionUrl Mandatory NSString URL of the next SDK service to call

getTransactionData response format (GetTransactionDataResponse object)

Fields Type Comments
acquirerResponseCode NSString Acquirer response code
authentExemptionReasonList List of NSString Exemption fixed by the issuer
authorisationId NSString Authorisation ID returned by the acquirer if the authorisation request is accepted
authorisationTypeLabel NSString Label of the authorisation request type
authorMessageReference NSString Identifier shared with the acquirer during the authorisation process
captureLimitDate NSString Date from which the transaction will be sent for settlement. Beyond this date, you can no longer validate or cancel the transaction.
captureMode NSString Capture mode
cardData CardData Contains specific information regarding a card (Cf part Containers)
cardExpiryDate NSString (yyyyMM) Card expiry date
currencyCode NSString Currency code
customerId NSString Customer ID
errorFieldName NSString Request field name which originated the error
guaranteeIndicator NSString Transaction's guarantee level
guaranteeLimitDateTime NSString Deadline for application of the payment guarantee
holderAuthentMethod NSString Name of the method applied to authenticate a payment mean holder
holderAuthentProgram NSString Authentication program
holderAuthentRelegationCode NSString Code indicating whether the issuer accepts or refuses the transfer of responsibility
holderAuthentResponseCode NSString Response code of the authentication process
holderAuthentStatus NSString Result of the authentication process
holderAuthentType NSString Cardholder authentication type applied by the issuer of the card. Field valued in 3-D Secure v2.
inAppResponseCode NSString Mercanet response code
invoiceReference NSString Invoice reference
issuerWalletInformation NSString Information given by the wallet provider intended for the merchant in response to a transaction creation request
maskedPan NSString Masked card number
merchantId NSString Mercanet identifier of your shop
merchantWalletId NSString Customer's Wallet identifier
orderChannel NSString Order channel
orderId NSString Order ID
originAmount NSString Original amount of the transaction
panEntryMode NSString Card number reading mode
paymentMeanBrand NSString Brand of the card
paymentMeanBrandSelectionStatus NSString Status of the processing of the brand application selection
paymentMeanType NSString Payment method type (card, transfer, withdrawal, etc). It groups together a set of paymentMeanBrand.
paymentPattern NSString Type of payment (per operation, 1st recurring payment etc).
returnContext NSString Value sent in the request
s10TransactionReference S10TransactionReference Contains the identification of the original transaction (to be compliant with Mercanet 1.0 (Cf Containers part)
statementReference NSString Reference provided by the merchant which is sent in the payment collection flow. This reference appears on the account statements of the cardholder.
transactionDateTime NSString Date and time the transaction was processed on the Mercanet server (expressed in the Mercanet server time zone)
transactionOrigin NSString Origin of a transaction (for example: name of the program), set by the merchant
transactionPlatform NSString Platform where the transaction has been executed
transactionReference NSString Transaction reference
transactionStatus NSString Status of the transaction
walletType NSString Wallet type

This function is used to prepare a 3-D Secure payment. It allows you to get the paReq (Payer Authentication Request) message and the ACS (Access Control Server) URL you will use to redirect the customer for authentication.
It has to be called after a request from your server to In-App orderInitialize service, with sdkOperationName=THREEDSECUREANDORDER.

cardCheckEnrollment request format

Fields Presence Type Comments
activity Mandatory Activity Used to retrieve phone data from the Android Activity context
cardCSCValue Optional NSString Visual card security code
cardExpiryDate Mandatory NSString Card expiry date
cardNumber Optional NSString Card number
paymentMeanBrand Optional NSString Name of the payment method that is used
paymentMeanBrandSelectionStatus Optional NSString Status of the processing of the brand application selection
publicKeyValue Mandatory NSString Value of the public key used to encrypt the data sent to through the SDK Retrieved from initialization request
redirectionData Mandatory NSString Context of the transaction sent during initialization
redirectionUrl Mandatory NSString URL of the next SDK service to call
redirectionVersion Mandatory NSString Interface version

cardCheckEnrollment response format (CardCheckEnrollmentResponse object)

Fields Type Comments
authentRedirectionUrl NSString ACS redirection URL
errorFieldName NSString Request field name which originated the error
maskedPan NSString Masked card number
paReqMessage NSString PaReq message used for ACS authentication
redirectionStatusCode NSString Mercanet response code
redirectionUrl NSString URL of the next SDK service to call
tokenPan NSString Unique ID for a PAN
transactionContextData NSString Transaction context
transactionContextVersion NSString Transaction context version

Depending on the result, your application must redirect the customer to the ACS (refer to POST form to the ACS).

This function allows you to prepare a 3-D Secure payment from a card already stored in Mercanet Wallet. It allows you to get the paReq (Payer Authentication Request) message and the ACS (Access Control Server) URL you will use to redirect the customer for authentication.
It has to be called after a request from your server to In-App orderInitialize service, with sdkOperationName=THREEDSECUREANDWALLETORDER.

walletCheckEnrollment request format

Fields Presence Type Comments
activity Mandatory Activity Used to retrieve phone data from the Android Activity context
cardCSCValue Optional NSString Visual card security code
paymentMeanBrand Optional NSString Selected brand of the payment mean. If not sent, value stored in the Wallet will be used.
paymentMeanBrandSelectionStatus Optional NSString Status of the processing of the brand application selection. If not sent, value stored in the wallet will be used.
paymentMeanId Mandatory NSString ID of the selected card in the Wallet
publicKeyValue Mandatory NSString Value of the public key used to encrypt the data sent to through the SDK Retrieved from initialization request
redirectionData Mandatory NSString Context of the transaction sent during initialization
redirectionUrl Mandatory NSString URL of the next SDK service to call
redirectionVersion Mandatory NSString Interface version

walletCheckEnrollment response format (WalletCheckEnrollmentResponse object)

Fields Type Comments
authentRedirectionUrl NSString ACS redirection URL
errorFieldName NSString Request field name which originated the error
maskedPan NSString Masked card number
paReqMessage NSString PaReq message used for authentication
paymentMeanBrand NSString Brand of the card
paymentMeanBrandSelectionStatus NSString Status of the processing of the brand application selection
redirectionStatusCode NSString Mercanet response code
redirectionUrl NSString URL of the next SDK service to call
tokenPan NSString Unique ID for a PAN
transactionContextData NSString Transaction context
transactionContextVersion NSString Transaction context version

Depending on the result, your application must redirect the customer to the ACS (refer to POST form to the ACS).

This function allows you to validate customer's authentication, and perform the payment.
It has to be called following a request to In-App cardCheckEnrollment or walletCheckEnrollment, once the ACS returns the PARes message."URL Encode" algorithm must be applied to the PARes message before being supplied to the SDK.

cardValidateAuthenticationAndOrder request format

Fields Presence Type Comments
activity Mandatory Activity Used to retrieve phone data from the Android Activity context
paResMessage Mandatory NSString Customer authentication result. Standard "URL Encode" algorithm must be applied to paResMessage field received from ACS.
transactionContextData Mandatory NSString Transaction context Retreived from cardCheckEnrollment or walletCheckEnrollment response
transactionContextVersion Mandatory NSString Transaction context version
redirectionUrl Mandatory NSString URL of the next SDK service to call

cardValidateAuthenticationAndOrder response (OrderResponse object)

Fields Type Comments
acquirerResponseCode NSString Acquirer response code
amount NSString Transaction amount
authentExemptionReasonList List of NSString Exemption fixed by the issuer
authorisationId NSString Authorisation ID returned by the acquirer if the authorisation request is accepted
authorisationTypeLabel NSString Label of the authorisation request type
authorMessageReference NSString Identifier shared with the acquirer during the authorisation process
captureDay NSString Capture delay
captureMode NSString Capture mode
cardData CardData Contains specific information regarding a card (Cf part Containers)
cardExpiryDate NSString (yyyyMM) Card expiry date
currencyCode NSString Currency code
customerId NSString Customer ID
errorFieldName NSString Request field name which originated the error
guaranteeIndicator NSString Transaction's guarantee level
guaranteeLimitDateTime NSString Deadline for application of the payment guarantee
holderAuthentMethod NSString Name of the method applied to authenticate a payment mean holder
holderAuthentProgram NSString Authentication program
holderAuthentRelegationCode NSString Code indicating whether the issuer accepts or refuses the transfer of responsibility
holderAuthentResponseCode NSString Response code of the authentication process
holderAuthentStatus NSString Result of the authentication process
holderAuthentType NSString Cardholder authentication type applied by the issuer of the card. Field valued in 3-D Secure v2.
inAppResponseCode NSString Mercanet response code
invoiceReference NSString Invoice reference
issuerWalletInformation NSString Information given by the wallet provider intended for the merchant in response to a transaction creation request
maskedPan NSString Masked card number
merchantId NSString Mercanet identifier of your shop
merchantWalletId NSString Customer's Wallet identifier
orderChannel NSString Order channel
orderId NSString Order ID
panEntryMode NSString Card number reading mode
paymentMeanBrand NSString Brand of the card
paymentMeanBrandSelectionStatus NSString Status of the processing of the brand application selection
paymentMeanType NSString Payment method type (card, transfer, withdrawal, etc). It groups together a set of paymentMeanBrand.
paymentPattern NSString Type of payment (per operation, 1st recurring payment etc).
returnContext NSString Value sent in the request
s10TransactionReference S10TransactionReference Contains the identification of the original transaction (to be compliant with Mercanet 1.0 (Cf Containers part)
statementReference NSString Reference provided by the merchant which is sent in the payment collection flow. This reference appears on the account statements of the cardholder.
transactionDateTime NSString Date and time the transaction was processed on the Mercanet server (expressed in the Mercanet server time zone)
transactionOrigin NSString Origin of a transaction (for example: name of the program), set by the merchant
transactionPlatform NSString Platform where the transaction has been executed
transactionReference NSString Transaction reference
walletType NSString Wallet type

This function allows you to retrieve the content of a customer's Mercanet Wallet.
It has to be called after a request from your server to In-App walletInitialize service, with sdkOperationName=GETWALLETDATA.

getWalletData request format

Fields Presence Type Comments
activity Mandatory Activity Used to retrieve phone data from the Android Activity context
publicKeyValue Mandatory NSString Value of the public key used to encrypt the data sent to through the SDK Retrieved from initialization request
redirectionData Mandatory NSString Context of the transaction sent during initialization
redirectionUrl Mandatory NSString URL of the next SDK service to call
redirectionVersion Mandatory NSString Interface version

getWalletData response format (GetWalletDataResponse format)

Fields Type Comments
errorFieldName NSString Request field name which originated the error
inAppResponseCode NSString Mercanet response code
walletCreationDateTime NSString Wallet creation date
walletPaymentMeanData List of WalletPaymentMeanData List of a customer's Wallet registered cards (Cf Containers part)

This function allows you to add a new card to a customer's Mercanet Wallet.
It has to be called after a request from your server to In-App walletInitialize service, with sdkOperationName=ADDCARD.

addCard request format

Fields Presence Type Comments
activity Mandatory Activity Used to retrieve phone data from the Android Activity context
cardExpiryDate Mandatory NSString Card expiry date
cardNumber Mandatory NSString Card number
paymentMeanAlias Mandatory NSString Alias of the card stored in the Wallet
paymentMeanBrand Optional NSString Brand of the card
paymentMeanBrandSelectionStatus Optional NSString Status of the processing of the brand application selection
publicKeyValue Mandatory NSString Value of the public key used to encrypt the data sent to through the SDK Retrieved from initialization request
redirectionData Mandatory NSString Context of the transaction sent during initialization
redirectionUrl Mandatory NSString URL of the next SDK service to call
redirectionVersion Mandatory NSString Interface version

addCard response format (AddCardResponse object)

Fields Type Comments
errorFieldName NSString Request field name which originated the error
inAppResponseCode NSString Mercanet response code
paymentMeanId NSString ID of the payment mean in the Wallet
maskedPan NSString Masked card number
walletActionDateTime NSString Date of the last action done on the Wallet

This function allows you to delete a payment mean from a customer's Mercanet Wallet.
It has to be called after a request from your server to In-App walletInitialize service, with sdkOperationName=DELETEPAYMENTMEAN.

deletePaymentMean request format

Fields Presence Type Comments
activity Mandatory Activity Used to retrieve phone data from the Android Activity context
paymentMeanId Mandatory NSString ID of the payment mean to delete from the Wallet
publicKeyValue Mandatory NSString Value of the public key used to encrypt the data sent to through the SDK Retrieved from initialization request
redirectionData Mandatory NSString Context of the transaction sent during initialization
redirectionUrl Mandatory NSString URL of the next SDK service to call
redirectionVersion Mandatory NSString Interface version

deletePaymentMean response format (DeletePaymentMeanResponse object)

Fields Type Comments
errorFieldName NSString Request field name which originated the error
inAppResponseCode NSString Mercanet response code
walletActionDateTime NSString Date of the last action done on the Wallet

This function allows you to get information linked to a PAN or a card BIN. For example, it will allow you to propose to the customer to choose the brand to apply on a payment while his card is linked to several brands.
It has to be called after a request from your server to In-App paymentMeanInfoInitialize service, with sdkOperationName=GETCARDDATA.

getCardData request format

Fields Presence Type Comments
activity Mandatory Activity Used to retrieve phone data from the Android Activity context
cardIIN Optional NSString Card IIN At least one of these fields must be sent in the request
cardNumber Optional NSString Card number
publicKeyValue Mandatory NSString Value of the public key used to encrypt the data sent to through the SDK Retrieved from initialization request
redirectionData Mandatory NSString Context of the transaction sent during initialization
redirectionUrl Mandatory NSString URL of the next SDK service to call
redirectionVersion Mandatory NSString Interface version

getCardData response format (GetCardDataResponse object)

Fields Type Comments
cardDataList List of CardData List of CardData container containing information about a card (in case of card cobadged several occurrences may appear - example: CB / Visa card). (Cf Containers part)
errorFieldName NSString Request field name which originated the error
inAppResponseCode NSString Mercanet response code

CardData

Fields Type Comments
cardBrand NSString Card brand
cardCorporateIndicator NSString Indicates whether the card is an Enterprise / Commercial card or not
cardEffectiveDateIndicator NSString Indicator of existence of a card effective date (Y/N/Empty)
cardProductCode NSString Product code of the card
cardProductName NSString Product name of the card
cardProductProfile NSString Profile code of the card
cardProductUsageLabel NSString Profile name of the card which is displayed on payment electronic ticket in accordance with MPADS requirements
cardScheme NSString Network name associated with the card
cardSeqNumberIndicator NSString Indicator of existence of an issue number
issuerCode NSString Issuer code of the card
issuerCountryCode NSString Country code of the card issuer
issuerName NSString Issuer name of the card
issuerRegionCode NSString Region code of the card issuer
issuingCountryCode NSString Country code in which the card has been issued
panCheckAlgorithm NSString Control algorithm applied on the PAN (L/V/N/Empty)
panLengthMax NSString Maximum length of the PAN
panLengthMin NSString Minimal length of the PAN

S10TransactionReference

Fields Type Comments
s10TransactionId NSString Alternative identifier for the transaction to be compliant with Mercanet 1.0

The couple s10TransactionId/s10TransactionIdDate ensures the unicity of the 1.0 transaction.
The use of this couple instead of transactionReference depends on an option in the merchant configuration.

s10TransactionIdDate NSString Date of the transaction (expressed in the Mercanet server time zone)

WalletPaymentMeanData

Fields Type Comments
maskedPan NSString Masked card number
panExpiryDate NSString Card expiry date
paymentMeanAlias NSString Card alias
paymentMeanBrand NSString Card brand
paymentMeanId NSString Payment mean ID in the customer's wallet
POST redirection form
POST form to the ACS
Depending on enrollment check result, your mobile application must redirect the customer to the ACS by POSTing the following parameters to the received authentRedirectionUrl:
  • PaReq message: returned by the previous call in paReqMessage field;
  • MD (Merchant Data) : field containing merchant status data which must be returned to the merchant. This field must be used to retrieve the session on your website;
  • TermUrl : merchant URL used to receive the customer authentication result (PaRes and MD response fields). It must be a URL from your website where the customer is redirected to.
IMPORTANT: The MD field must contain ASCII characters in the range 0x20 to 0x7E only; If other data are needed, the field must be Base64 encoded. Size of the field (after Base64 encoding, if applicable) is limited to 1024 bytes. If confidential data are included (as the PAN), they must be encrypted.

On Android, an Android function can be called in a WebView from JavaScript code. Therefore, TermUrl can be a web page that pushes the received POST fields to the merchant's Android application, using a JavascriptInterface method.

Sample AcsWebViewActivity that gets the PaRes from an ACS authentication:

public class AcsWebViewActivity extends Activity {
  public static final String EXTRA_ACS_URL = "EXTRA_ACS_URL";
  public static final String EXTRA_PARES = "EXTRA_PARES";
  public static final String EXTRA_PAREQ = "EXTRA_PAREQ";
  public static final String EXTRA_MD = "EXTRA_MD";
  private WebView webView;
  final Handler myHandler = new Handler();

  public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_acs_web_view);

    final JavaScriptInterface myJavaScriptInterface = new JavaScriptInterface();

    webView = (WebView) findViewById(R.id.webView);
    webView.getSettings().setJavaScriptEnabled(true);
    webView.addJavascriptInterface(myJavaScriptInterface, "AndroidFunction");
    webView.getSettings().setLoadWithOverviewMode(true);
    webView.setWebViewClient(new WebViewClient() {
      @Override
      public boolean shouldOverrideUrlLoading(WebView  view, String  url) {
        return false;
      }
    });
    
    String data = "<script>window.onload = function(){"
        + "document.forms['acs'].submit();}</script>"
        + "Please wait..."
        + "<form method=\"POST\" name=\"acs\" action=\"" + getIntent().getStringExtra(EXTRA_ACS_URL) + "\" style=\"display:none;\">"
        + "<input type=\"text\" name=\"MD\" value=\"" + getIntent().getStringExtra(EXTRA_MD) + "\">"
        + "<input type=\"text\" name=\"TermUrl\" value=\"http://inappmerchantserverdemo-mobilepayments.apps.zone52.org/displayAcsResponse.jsp\">"
        + "<input type=\"text\" name=\"PaReq\" value=\"" + getIntent().getStringExtra(EXTRA_PAREQ) + "\">"
        + "<input type=\"submit\" value=\"Submit\">" 
        + "</form>";
    webView.loadDataWithBaseURL(null, data, "text/html", "utf-8", null);
  }

  public class JavaScriptInterface {
    @JavascriptInterface
    public void putPaRes(String paRes) {
      // Url encode algorithm to apply on the pares received
      // Call cardValidateAuthentication with paRes message encoded
    }
  }
}

The table below gives you the generic response codes for all operations. Refer to the data dictionary for details of response codes by function.

Status Response fields Action to be performed
Function performed responseCode = 00 The requested function has been successfully completed (for example a refund with the refund function).
Declined following a technical problem responseCode = 90, 99 Temporary technical problem when the function was processed. Try to execute the function again later.
Unauthorised function responseCode = 40 You do not have the rights to execute this function. Please contact the technical support centre to request that this right be activated if your purchasing contract allows it.
Function not performed Any other responseCode The function could not be performed because one of the parameters is incorrect. Please consult the data dictionary for the details of each error code and for the format of each parameter.

In order to test your developments on the tests environment, and to go to production, you must have finalize the server-to-server implementation part described in the In-App documentation. Then, you may go back to "test on the validation environment" step of this last documentation.