MoneyIn3DInit
How it works
Payment with a New Card
- By calling Initiate a Direct Payment (PCI-DSS compliant only), you receive an Authentication URL and a Transaction Id. If you want to register a card to use the card several times or subscription payments set registerCard=1.
- With the Authentication URL, you are able to redirect the end-user to the ACS (Bank Authentication Server) Page.
- After 3D Secure Authentication, you will be called back on the ReturnURL
- If the authentication was done then, you then need to call Finalize a Direct Payment (PCI-DSS compliant only) specifying the returned Transaction Id to finalize the payment.
Payment with a Registered Card
- Ensure you have a cardId then call Initiate a Direct Payment (PCI-DSS compliant only) specifying the cardID parameter (cardId and CVV (optional)). If you want to improve the transaction success rate add the CVV code in the parameters.
- Refer to steps 2, 3, and 4 as stated above.
Did you know?
You require a cardId to make a transaction on a registered card. This id is displayed when you finalized your first payment with the registered card using Finalize a Direct Payment (PCI-DSS compliant only)
Important
To ensure that the client’s card has been registered, call the following method before you initiative payments on a registered card: MoneyInGetCard
Subscription Payments
A prerequisite to setting up a subscription is that you have previously made a payment with a card and registered the card using MoneyIn3DInit.
Important
When creating recurring payment that are one shot, ensure that you use the correct format One_shot as stated in the API.
Warning
When creating a recurring payment the recurringAvgAmount must be higher than totalAmount. If a lower amount is entered for recurringAvgAmount you will receive a directkit error message:
368: recurringAvgAmount stating that the amount should be greater than the transaction amount.
Did you know?
Initial transaction for a subscription can be for a predetermined or an undetermined length of time.
After you have registered a card refer to MoneyInWithCardId to begin setting up a subscription or payment by the delivery system.
Important
To ensure the likelihood of frictionless payments you must set up payments of equal recurring amounts.
XML
<MoneyIn3DInit xmlns="Service_mb">
<wlLogin>string</wlLogin>
<wlPass>string</wlPass>
<cardId>string</cardId>
<language>string</language>
<version>string</version>
<walletIp>string</walletIp>
<walletUa>string</walletUa>
<wallet>string</wallet>
<paymentPattern>
<Recurring>string</ Recurring>
<One_shot>string</One_shot>
</paymentPattern>
<amountTot>string</amountTot>
<recurringAvgAmount>string</recurringAvgAmount>
<amountCom>string</amountCom>
<comment>string</comment>
<wkToken>string</wkToken>
<registerCard>string</registerCard>
<cardType>string</cardType>
<cardNumber>string</cardNumber>
<cardCode>string</cardCode>
<cardDate>string</cardDate>
<autoCommission>string</autoCommission>
<returnUrl>string</returnUrl>
<challengeMode>string</challengeMode>
<billingAddress>
<city>string</city>
<country>string</country>
<addressAdditional1>string</addressAdditional1>
<addressAdditional2>string</addressAdditional2>
<addressAdditional3>string</addressAdditional3>
<zipCode>string</zipCode>
<state>string</state>
</billingAddress>
<holder>
<firstName>string</firstName>
<lastName>string</lastName>
<email>string</email>
<phone>string</phone>
<mobile>string</mobile>
<workPhone>string</workPhone>
</holder>
<deliveryAddress>
<city>string</city>
<country>string</country>
<addressAdditional1>string</addressAdditional1>
<addressAdditional2>string</addressAdditional2>
<addressAdditional3>string</addressAdditional3>
<zipCode>string</zipCode>
<state>string</state>
</deliveryAddress>
<deliveryAdditionalInfo>
<contact><email>string</email>
<numberOfItemsBasket>string</numberOfItemsBasket>
<addressDeliveryBillingMatchIndicator>boolean</addressDeliveryBillingMatchIndicator>
<deliveryAddressCreationDate>YYYY/MM/DD</deliveryAddressCreationDate>
<estimatedDeliveryDelay>string</estimatedDeliveryDelay>
<deliveryMode>string</deliveryMode>
</deliveryAdditionalInfo>
<customerAccountInfo>
<customerAccountId>string</customerAccountId>
<numberOfPurchase180Days>int</numberOfPurchase180Days>
<numberOfTransactionYear>int</numberOfTransactionYear>
<customerAccountCreationDate>YYYY/MM/DD</customerAccountCreationDate>
<suspiciousActivityIndicator>boolean <suspiciousActivityIndicator>
<numberOfTransaction24Hours>int</numberOfTransaction24Hours>
<customerAccountChangeDate>YYYY/MM/DD</customerAccountChangeDate>
<passwordChangeDate>YYYY/MM/DD</passwordChangeDate>
<addPaymentMeanDate>YYYY/MM/DD</addPaymentMeanDate>
</customerAccountInfo>
<authentication>
<merchantCustomerAuthentMethod>string</merchantCustomerAuthentMethod>
<merchantCustomerAuthentDateTime>ISO8601 date time format<merchantCustomerAuthentDateTime>
</authentication>
</MoneyIn3DInit>
<?xml version="1.0" encoding="utf-8"?>
<MONEYIN3DINIT>
<ACS>
<actionUrl>string</actionUrl>
<actionMethod>string</actionMethod>
<pareqFieldName>string</pareqFieldName>
<pareqFieldValue>string</pareqFieldValue>
<termurlFieldName>string</termurlFieldName>
<mdFieldName>string</mdFieldName>
<mdFieldValue>string</mdFieldValue>
<mpiResult>string</mpiResult>
</ACS>
<TRANS>
<HPAY>
<ID>string</ID>
<MLABEL>string</MLABEL>
<DATE>string</DATE>
<SEN>string</SEN>
<REC>string</REC>
<DEB>string</DEB>
<CRED>string</CRED>
<COM>string</COM>
<MSG>string</MSG>
<STATUS>string</STATUS>
</HPAY>
</TRANS>
</MONEYIN3DINIT>
JSON
{
"wlLogin":"string",
"wlPass":"string",
"cardId":"string",
"language":"string",
"version":"string",
"walletIp":"string",
"walletUa":"string",
"wallet":"string",
"paymentPattern": {
"Recurring": "string",
"One_shot": "string",
},
"amountTot":"string",
"recurringAvgAmount":"string",
"amountCom":"string",
"comment":"string",
"wkToken":"string",
"registerCard":"string",
"cardType":"string",
"cardNumber":"string",
"cardCode":"string",
"cardDate":"string",
"autoCommission":"string",
"returnUrl":"string"
"challengeMode": "string"
"billingAddress": {
"city": "string",
"country": "string",
"addressAdditional1": "string",
"addressAdditional2": "string",
"addressAdditional3": "string",
"zipCode": "string",
"state": "string"
},
"holder": {
"firstName": "string",
"lastName": "string",
"email": "string",
"phone": "string",
"mobile": "string",
"workPhone": "string"
},
"deliveryAddress": {
"city": "string",
"country": "string",
"addressAdditional1": "string",
"addressAdditional2": "string",
"addressAdditional3": "string",
"zipCode": "string",
"state": "string"
},
"deliveryAdditionalInfo": {
"contact": {
"email": "string",
"numberOfItemsBasket": "string",
"addressDeliveryBillingMatchIndicator": "boolean",
"deliveryAddressCreationDate": "YYYY/MM/DD",
"estimatedDeliveryDelay": "YYYY/MM/DD",
"deliveryMode": "string"
},
"customerAccountInfo": {
"customerAccountId": "string",
"numberOfPurchase180Days": "int",
"numberOfTransactionYear": "int",
"customerAccountCreationDate": "YYYY/MM/DD",
"numberOfAttemptsAddCard24Hours": "int",
"suspiciousActivityIndicator": "boolean",
"numberOfTransaction24Hours": "int",
"customerAccountChangeDate": "YYYY/MM/DD",
"passwordChangeDate": "YYYY/MM/DD",
"addPaymentMeanDate": "YYYY/MM/DD"
},
"authentication": {
"merchantCustomerAuthentMethod": "string",
"merchantCustomerAuthentDateTime": "ISO8601 date time format"
}
}
}
{
"MONEYIN3DINIT":{
"ACS":{
"actionUrl":"string",
"actionMethod":"string",
"pareqFieldName":"string",
"pareqFieldValue":"string",
"termurlFieldName":"string",
"mdFieldName":"string",
"mdFieldValue":"string",
"mpiResult":"string"
},
"TRANS":{
"HPAY":{
"ID":"string",
"MLABEL":"string",
"DATE":"string",
"SEN":" string",
"REC":"string",
"DEB":"string",
"CRED":"string",
"COM":"string",
"MSG":"string",
"STATUS":"string"
}
}
}
}
Parameters
Item | Description | Mandatory | Format | Example |
---|---|---|---|---|
challengeMode | If you would like to enforce 3D Secure for your client then use the challenge mode. Possible values are: No_preference (default value). The card holder's bank will decide whether or not to challange and CHALLENGE | No | string | no_preference |
wallet | Wallet ID to credit | Yes | [0 : 256] char | 33612345678 ou taxi67 |
amountTot | Amount to debit from card | Yes | 2 decimals | 15 |
amountCom | Fee amount for you | No | 2 decimals | 1 |
comment | Comment | No | [0 :140] char | Order number 2457765AX2 |
wkToken | Unique ID of the call, generated by your server. This ID can be used as a search field when looking for operation details | No | [0 : 50] char | 5652772 |
cardType | Card type | Yes | [1] char | 0: CB |
1: Visa | ||||
2: Mastercard | ||||
cardNumber | Card number | Yes | [13 :19] char | 4.972E+15 |
cardCode | CVV Code at the back of the card | Yes | [3] char | 123 |
cardDate | Card expiration date | Yes | MM/yyyy | Dec-13 |
autoCommission | This should be set to No (0). | Yes | [1] char | 0: No (by «default) |
If yes: | 1: Yes | |||
[amountCom] will be ignored and will be replaced with Lemonway's fee | You will not receive any fee | |||
returnUrl | URL of return of the 3D Secure website. Your client will be redirected on this URL, which should be your website URL. | Yes if Atos contract | https://www.mysite.com/payment/?id=356 | |
specialConfig | Leave empty | No | [0 :max] char | |
paymentPattern | Recurring: If a payment follows a recurring amount or One shot: (when there is no future recurring payments) | No | possible values: Recurring or One_shot | |
recurringAvgAmount | Average Amount of future recurring payments to cover recurring payments with variable amounts - only if the recurring amount is higher than the amount of the first transaction | No | string |
Additional Optional Inputs to Enable Frictionless Payments
The following table displays the fields that are considered to have high importance for the card and banks ranking system. They recommend that they be populated if the information is available. The most important fields are ranked from R1 (being the most important) to R4.
Object | Field | Format | Descriptions | Example | Priority |
---|---|---|---|---|---|
billingAddress | billingAddress.city | string | Billing address | Paris | R2 |
billingAddress.country | string | FRA | |||
billingAddress.addressAdditional1 | string | 5 Avenue Anatole France | |||
billingAddress.addressAdditional2 | string | Etage 2 | |||
billingAddress.addressAdditional3 | string | ||||
billingAddress.zipcode | string | 75007 | |||
billingAddress.state | string | Paris | |||
holder | holder.firstName | string | Holder contact information | Michel | R1 |
holder.lastName | string | Dupont | R1 | ||
holder.email | string | MDupont@email.fr | R1 | ||
holder.phone | string | +33100000000 | R3 | ||
holder.mobile | string | +33100000000 | R3 | ||
holder.workPhone | string | +33100000000 | R3 | ||
deliveryAddress | deliveryAddress.city | string | Delivery address information | Paris | R1 |
deliveryAddress.country | string | France | |||
delivery | string | ||||
Address.addressAdditional1 | string | 5 Avenue Anatole France | |||
deliveryAddress.addressAdditional2 | string | Etage 2 | |||
deliveryAddress.addressAdditional3 | string | ||||
deliveryAddress.zipcode | string | 75007 | |||
(postal code) | |||||
deliveryAddress.state | string | ||||
deliveryAdditionalInfo | deliveryAdditionalInfo.Contact.email | string | Delivery contact email | MDupont@email.fr | R2 |
numberOfItemsBasket | string | Number of items in shopping cart | 8 | R4 | |
deliveryAdditionalInfo.DeliveryBillingMatch | boolean | Describes delivery and billing addresses are the same. Possible values: true or false | true | R4 | |
deliveryAdditionalInfo.deliveryAddressCreationDate | YYYY/MM/DD | Creation date of delivery address | 2020/05/05 | R4 | |
deliveryAdditionalInfo.estimatedDeliveryDelay | YYYY/MM/DD | Estimated delivery date | 2021/06/21 | R4 | |
deliveryAdditionalInfo.deliveryMode | string | Delivery Method for example: Postal Office or Amazon box | Amazon Box | R4 | |
authentication | Authentication.merchantCustomerAuthentMethod | string | Authentication method used to authenticate the buyer before making the payment. | 3 | R4 |
Possible merchantCustomerAuthentMethod Values: - NOAUTHENT = 1 (No authentication of the customer by the merchant), - OWNCREDENTIAL = 2 (Customer authentication by the merchant using his own system), - FEDERATEDID = 3 (Customer authentication by the merchant using an identifier federated (facebook, ...) (e.g. Facebook)), - ISSUERID = 4 (Customer authentication by the merchant using information of the issuer's payment mean), - THIRDPARTY = 5 (Customer authentication by the merchant using a third system), - FIDO = 6 (Customer authentication by the merchant with FIDO (Fast IDentity Online) system) | |||||
Authentication.merchantCustomerAuthentDateTime | ISO8601 date time format | Date and time of the cardholder authentication | 2021-05-24T06:00Z | R4 | |
customerAccountInfo | customerAccountInfo.customerAccountId | string | Additional information about the account optionally provided by the 3-D Secure Requestor. | Customer for 1 year | R4 |
customerAccountInfo.numberOfPurchase180Days | int | The amount of customer transactions made over the last six months (last 180 days) | 10 | R4 | |
customerAccountInfo.numberOfPurchase180Days | int | The amount of customer transactions made over the last six months (last 180 days) | 10 | R4 | |
customerAccountInfo.numberOfTransactionYear | int | Number of accepted or abandoned transactions in the last year on the merchant's customer account. | 100 | R4 | |
customerAccountInfo.customerAccountCreationDate | YYYY/MM/DD | When the customer account was originally created. | 2020/05/05 | R4 | |
customerAccountInfo.numberOfAttemptsAddCard24Hours | int | Number of distinct cards used by the merchant's account in the last 24 hours. | 1 | R4 | |
customerAccountInfo.suspiciousActivityIndicator | boolean | Notes if a suspicious activity is detected on customer account in the merchant's website. | false | R4 | |
customerAccountInfo.numberOfTransaction24Hours | string | How many transactions did the customer make in the last 24hours | 1 | R4 | |
customerAccountInfo.customerAccountChangeDate | YYYY/MM/DD | Last date the customer account was changed | 2020/07/14 | R4 | |
customerAccountInfo.passwordChangeDate | YYYY/MM/DD | Date of last change of password of the customer account | 2020/07/14 | R4 | |
customerAccountInfo.addPaymentMeanDate | YYYY/MM/DD | Date of last added form of payment made to account. For example a new card registered to the account | 2020/05/05 | R4 |
ACS and Transaction Descriptions
Item | Description | Example |
---|---|---|
ACS | Encapsulate data sent by the system that emits the card | |
ACS > actionUrl | Redirect URL for the Client on the 3D Secure web site | https://acs.modirum.com/mdpayacs/pareq |
ACS > actionMethod | Only if Payxpert contract. Method to use to transmit information to the 3DS authentication platform using GET or POST | POST |
ACS > pareqFieldName | Only if Payxpert contract. Name of the field to use to transmit "pareq" data | PaReq |
ACS > pareqFieldValue | Only if Payxpert contract. Pareq data to send | eJxVkdtSwjAQhl+F4QGapPTILJlBYZQZW7XCoNxl2tVWe4C0tfD2JqWIXmW/PWX3X1inEnHxgnErkUOAdS0+cJQls7FLKaMeG3N4mkd44PCNss6qkjODGiaQC6oiGaeibDiI+HCzCrnlu67jAhkQCpSrBWcOZd7EtphNXZ/6QM5uKEWB/ |
ACS > termurlFieldName | Only if Payxpert contract. Field name to use to transmit your return URL | TermUrl |
ACS > mdFieldName | Only if Payxpert contract. Name of the field to transmit the "md" variable | MD |
ACS > mdFieldValue | Only if Payxpert contract. "md" variable to transmit | 18V64ziCeuvLFKPdne7G |
ACS > mpiResult | Not used anymore | |
TRANS > HPAY | Encapsulate a summary of the initialized transaction | |
TRANS > HPAY > ID | Transaction ID, to save at confirmation step | 677 |
TRANS > HPAY > MLABEL | Non-used for your brand | |
TRANS > HPAY > DATE | Init date | |
TRANS > HPAY > SEN | Non-used | |
TRANS > HPAY > REC | Wallet to credit | Pizza56 |
TRANS > HPAY > DEB | 0.00 in this case | 0 |
TRANS > HPAY > CRED | Amount to credit to the wallet (total less fee) | 15 |
TRANS > HPAY > COM | Your fee | 2 |
TRANS > HPAY > MSG | Comment | Order number 2457765AX2 |
TRANS > HPAY > STATUS | Non-used in your KIT | 0 |
Response Ouput Description
Version | Element | Description | Example |
---|---|---|---|
1 | TOKEN | Payment Token to pass to WebKit URL using GET | 1wGaBwkdOmOxWT0s4t1Z1364815 |
> = 1.2 | ID | Transaction ID | 3232 |
> =1.3 | CARDID | Card ID if registerCard=1 | 34 |
Example of form to use to redirect the client on the authentication website:
PayXpert:
'<form action="https://acs.modirum.com/mdpayacs/pareq" method="post">
<input type="text" name="'.$pareqFieldName .'" value="'.$pareqFieldValue.'">
<input type="text" name="'.$termurlFieldName.'" value="'.$myReturnUrl.'">
<input type="text" name="'.$mdFieldName.'" value="'.$mdFieldValue.'">
<input type="submit" name="submit" class="submit" value="Go to 3DS"></form>'
Mercanet (simple redirection to actionUrl):
<?php
/*
$actionUrl : URL to 3DS authentication website
*/
header('Location: '.$actionUrl);
?>