Introduction
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.
Who does this document target?
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:
Prerequisites
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).
Download SDK
You can download our Android SDK via this link.
SDK checksums are in the table below.
Type | Checksum |
---|---|
MD5 | 40fea6b163e48659cf289561339125e8 |
SHA256 | 93521df24b3eedd902ba3f7bb61a88e8c2db0657afb54e955625fdfd6655dc39 |
SHA512 | a604722120aaf811b9c10636847dbf1415ca8417aedfc083b285b19847d48e477ff31d2157aff8d27e0412bc8e4b64ba0076ddccd39eec375afd2699bafa7f0c |
Historic Android SDK
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 |
Implementing the SDK in 3 steps
Step 1: importing the SDK in an Android project
Example with Eclipse IDE
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.
Example with Android Studio
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')
Manifest permissions
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"/>
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 |
Step 2: using available functions
All the necessary methods are in the PaymentManager public class.
Payment functions
Function cardOrder
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 |
Function walletOrder
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 |
Function paymentProviderOrder
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 |
Function getTransactionData
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 |
Function cardCheckEnrollment
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).
Function walletCheckEnrollment
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).
Function cardValidateAuthenticationAndOrder
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 |
Wallet management functions
Function getWalletData
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) |
Function addCard
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 |
Function deletePaymentMean
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 |
Card data consulting function
Function getCardData
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 |
Containers
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
- 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.
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
}
}
}
Analysing the errors caused by a function
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. |
Step 3: testing in the validation environment and going to production
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.