Touch’n Go Test Data

For Touch’n Go payment method there aren’t any test data available, but you can see how it works with the payment flow given below.

Touch’n Go Payment Flow

  1. The customer enters his Email Address, Name and Phone Number.

    1 Enter customer details

  2. The customer confirms the payment after reviewing all the details of the payment.

    1 Print Boleto

  3. The customer can pay now with his Touch’n Go Wallet. Download and register for the Touch ‘n Go eWallet app, tap on the “Scan” icon and scan the QR code here to complete the payment.

    1 Print Boleto

Fawry Wallet Test Data

For Fawry Wallet payment method there aren’t any test data available, but you can see how it works with the payment flow given below.

Fawry Payment Flow

  1. The customer enters his Email Address and his Social Security Number (SSN).

    1 Enter customer details

  2. The customer receives the necessary information to make the payment, including a reference number. The customer will use the reference number to pay through Fawry channels and outlets within the specified time.

    1 Print Boleto

  3. Upon completion of the payment flow the customer is redirected back to your ReturnURL.

    1 Return page when the redirection status is Processing

Loterica Test Data

For Loterica payment method there aren’t any test data available, but you can see how it works with the payment flow given below.

Loterica Payment Flow

  1. The customer enters his Email Address, Name and CPF/CNPJ.
    Please note that for Brazil the Customer Social Security Number parameter consists of CPF/CNPJ. For more information about the CPF/CNPJ please click here.

    1 Enter customer details

  2. The customer confirms the payment after reviewing all the details of the payment.

    1 Print Boleto

  3. The customer receives the code necessary to make the payment. He will also receive via email all the payment data. In order to complete the payment, he needs to go to a physical bank branch in his area in 3 days time. The payment will be approved in less than one hour..

    1 Print Boleto

  4. Upon completion of the payment flow the customer is redirected back to your ReturnURL.

    1 Return page when the redirection status is Processing

Marketplace Split Card Payments API – (preview)

  1. Authorize a payment with Splits

    Definition: POST /v1/payments

    Split Card Payments is a unique feature that allows you to split a payment to several SiteIDs previously linked to your merchant account. Initiate a payment with one or more Splits objects depending on the SiteID. The Split object must contain the following parameters: SiteID, APIKey, Amount, MerchantTransactionID and the OriginatorTransactionID.

    Please keep in mind that the Authorization header of the request must use the SiteID and APIKey of the Marketplace.

    A 201 HTTP response (Created) is returned if the payment was correctly initialized.

    Request:

    POST https://securetest.smart2pay.com/v1/payments
    Authorization: Basic MTAxMDpnYWJp
    
    { 
      "Payment": {  
      "MerchantTransactionID": "s2p_test1a",
      "Amount": "100",
      "Currency": "EUR",
        "ReturnURL": "http://demo.smart2pay.com/redirect.php",
        "Description": "Split Payment test",
        "StatementDescriptor": "card payment",
        "OriginatorTransactionID":"s2p_teste123",
        "ClientIP": "82.208.151.136",
        "BillingAddress": {
          "City": "Iasi",
          "ZipCode": "7000-49",
          "State": "Iasi",
          "Street": "Sf Lazar",
          "StreetNumber": "37",
          "HouseNumber1": "5A",
          "HouseExtension1": "-",
          "Country": "BR"
        },
        "ShippingAddress": {
          "City": "Iasi",
          "ZipCode": "700049",
          "State": "Iasi",
          "Street": "Sf Lazar",
          "StreetNumber": "37",
          "HouseNumber": "-",
          "HouseExtension": "-",
          "Country": "BR"
        },
        "Customer" : {
          "FirstName":"John",
          "LastName":"Dow",
          "Email": "challenge@challenge.com",
          "SocialSecurityNumber": "00003456789"
        },
       "Card": {
          "HolderName": "Johnn Snow",
          "Number": "4000023104662535", 
          "ExpirationMonth": "12",
          "ExpirationYear": "2023",
          "SecurityCode": "554",
          "RequireSecurityCode1": false
        },
    
        "Capture": false,
        "Retry": false,
        "GenerateCreditCardToken": false,
        "3DSecure": false,
    
         "Splits": [
          {
          "SiteID": 1000,
          "APIKey": "a8913f1b-0211",
          "Amount": "60",
          "MerchantTransactionID" : "s2p_test1ad", 
          "OriginatorTransactionID": "89128810-f754-415f-9887-eae6cd444d8e"
        },
        {
          "SiteID": 1061,
          "APIKey": "MDYxM2RjYjAtZDgxMy00",
          "Amount": "40",
          "MerchantTransactionID" : "s2p_test1233", 
          "OriginatorTransactionID": "89128810-f754-415f-9887-eae6cd444d8e"
        }
      ]
      }
    }
    

    Response:

    HTTP/1.1 201 Created
    Content-Type: application/json; charset=utf-8
    
    {
        "Payment": {
            "ID": 428473,
            "ClientIP": "82.208.151.136",
            "SkinID": null,
            "Created": "20200702132836",
            "MerchantTransactionID": "s2p_test1a",
            "OriginatorTransactionID": "s2p_teste123",
            "Amount": "100",
            "Currency": "EUR",
            "CapturedAmount": "0",
            "ReturnURL": "http://demo.smart2pay.com/redirect.php",
            "Description": "Split Payment test",
            "StatementDescriptor": "card payment",
            "MethodID": 6,
            "MethodOptionID": null,
            "SiteID": 66789,
            "NotificationDateTime": null,
            "Customer": {
                "ID": 2766,
                "MerchantCustomerID": null,
                "Email": "challenge@challenge.com",
                "FirstName": "John",
                "LastName": "Dow",
                "Gender": null,
                "SocialSecurityNumber": "00003456789",
                "Phone": null,
                "Company": null
            },
            "BillingAddress": {
                "ID": 2963,
                "City": "Iasi",
                "ZipCode": "7000-49",
                "State": "Iasi",
                "Street": "Sf Lazar",
                "StreetNumber": "37",
                "HouseNumber": null,
                "HouseExtension": null,
                "Country": "BR"
            },
            "ShippingAddress": {
                "ID": 2614,
                "City": "Iasi",
                "ZipCode": "700049",
                "State": "Iasi",
                "Street": "Sf Lazar",
                "StreetNumber": "37",
                "HouseNumber": "-",
                "HouseExtension": "-",
                "Country": "BR"
            },
            "Articles": null,
            "Card": {
                "HolderName": "Johnn Snow",
                "Number": "Visa-2535",
                "ExpirationMonth": "12",
                "ExpirationYear": "2023"
            },
            "CreditCardToken": null,
            "Status": {
                "ID": 9,
                "Info": "Authorized",
                "Reasons": []
            },
            "MethodTransactionID": "111067",
            "AuthorizationCode": "111067",
            "PaymentTokenLifetime": 10,
            "Capture": false,
            "CaptureDetails": null,
            "Retry": false,
            "RedirectURL": null,
            "3DSecure": false,
            "3DSecureData": null,
            "DeviceInfo": null,
            "ScaExemption": null,
            "CardOnFile": null,
            "Fraud": {
                "Status": "Accept",
                "Score": 31,
                "Reason": "No decision provided"
            },
            "AddressVerification": null,
            "Splits": [
                {
                    "ID": 446,
                    "PaymentID": 428473,
                    "SiteID": 1000,
                    "MerchantTransactionID": "s2p_test1ad",
                    "OriginatorTransactionID": "89128810-f754-415f-9887-eae6cd444d8e",
                    "Created": "20200702132840",
                    "Amount": "60",
                    "Currency": "EUR",
                    "CapturedAmount": "0",
                    "StateDetails": {
                        "ID": 9,
                        "Info": "Authorized",
                        "Reasons": []
                    }
                },
                {
                    "ID": 447,
                    "PaymentID": 428473,
                    "SiteID": 1061,
                    "MerchantTransactionID": "s2p_test1233",
                    "OriginatorTransactionID": "89128810-f754-415f-9887-eae6cd444d8e",
                    "Created": "20200702132840",
                    "Amount": "40",
                    "Currency": "EUR",
                    "CapturedAmount": "0",
                    "StateDetails": {
                        "ID": 9,
                        "Info": "Authorized",
                        "Reasons": []
                    }
                }
            ]
        }
    }

  2. Capture a Split

    Definition: Full Capture – POST /v1/payments/{id}/capture

    Where:
    • {id} – GlobalPay Payment ID

    Once the payment has an Authorized status, you can capture either the full amount or a partial amount of the initial authorized amount for the transaction depending on the Split ID provided and the amount. You only need to sent in the Request the Split ID and the amount desired to be captured. Checkout the below example of a captured split payment.

    Request:

    POST https://securetest.smart2pay.com/v1/payments/428473/capture
    Authorization: Basic MTAxMDpnYWJp
    
    {
        "Payment": {
            "Split": {
                "ID": 446,
                "Amount": 60,
                "OriginatorTransactionID": "s2p_teste123"
            }
        }
    }

    Response:

    HTTP/1.1 200 OK
    Content-Type: application/json; charset=utf-8
    
    {
        "Payment": {
            "ID": 428473,
            "ClientIP": "82.208.151.136",
            "SkinID": null,
            "Created": "20200702132836",
            "MerchantTransactionID": "s2p_test1a",
            "OriginatorTransactionID": "s2p_teste123",
            "Amount": "100",
            "Currency": "EUR",
            "CapturedAmount": "60",
            "ReturnURL": "http://demo.smart2pay.com/redirect.php",
            "Description": "Split Payment test",
            "StatementDescriptor": "card payment",
            "MethodID": 6,
            "MethodOptionID": null,
            "SiteID": 66789,
            "NotificationDateTime": null,
            "Customer": null,
            "BillingAddress": null,
            "ShippingAddress": null,
            "Articles": null,
            "Card": {
                "HolderName": "Johnn Snow",
                "Number": "Visa-2535",
                "ExpirationMonth": "12",
                "ExpirationYear": "2023"
            },
            "CreditCardToken": null,
            "Status": {
                "ID": 35,
                "Info": "PartiallyCaptured",
                "Reasons": []
            },
            "MethodTransactionID": null,
            "AuthorizationCode": "111067",
            "PaymentTokenLifetime": null,
            "Capture": false,
            "CaptureDetails": null,
            "Retry": false,
            "RedirectURL": null,
            "3DSecure": false,
            "3DSecureData": null,
            "DeviceInfo": null,
            "ScaExemption": null,
            "CardOnFile": null,
            "Fraud": null,
            "AddressVerification": null,
            "Split": {
                "ID": 446,
                "PaymentID": 428473,
                "SiteID": 1000,
                "MerchantTransactionID": "s2p_test1ad",
                "OriginatorTransactionID": "89128810-f754-415f-9887-eae6cd444d8e",
                "Created": "20200702132840",
                "Amount": "60",
                "Currency": "EUR",
                "CapturedAmount": "60",
                "StateDetails": {
                    "ID": 11,
                    "Info": "Captured",
                    "Reasons": []
                },
                "CaptureDetails": {
                    "ID": 29035,
                    "PaymentID": 428473,
                    "SiteID": 66789,
                    "Created": "20200702141826",
                    "MerchantTransactionID": "s2p_test1a",
                    "OriginatorTransactionID": null,
                    "Amount": "60",
                    "Currency": "EUR",
                    "Status": {
                        "ID": 2,
                        "Info": "Success",
                        "Reasons": []
                    }
                }
            }
        }
    }

  3. Refund a Split

    Definition: POST /v1/payments/{id}/splits/{id}/captures/{id}/refunds

    Where:
    • payments/{id} – GlobalPay Payment ID
    • splits/{id} – The ID of the split payment
    • captures/{id} – The ID of the captured payment

    When you are initiating a refund you need to provide the Refund Amount and the Merchant Transaction ID, that is automatically generated. You can change this ID by introducing your ID value.

    A 201 HTTP response (Created) is returned if the refund was correctly initialized.

    Request:

    POST https://securetest.smart2pay.com/v1/payments/428473/splits/446/captures/29035/refunds
    Authorization: Basic MTAxMDpnYWJp
    
    {
      "Refund": {
          "MerchantTransactionID": "s2p_test_refund1",
          "Amount": 60,
          "Description": "refund for x",
          "StatementDescriptor": "refund for product X",
          "OriginatorTransactionID": "s2p_teste123"
      }
    }

    Response:

    HTTP/1.1 201 Created
    Content-Type: application/json; charset=utf-8
    
    {
        "Refund": {
            "ID": 23742,
            "SiteID": 66789,
            "Created": "20200702143342",
            "MerchantTransactionID": "s2p_test_refund1",
            "OriginatorTransactionID": "s2p_teste123",
            "InitialPaymentID": 428473,
            "SplitID": 446,
            "Amount": "60",
            "Currency": "EUR",
            "Description": "refund for x",
            "StatementDescriptor": "refund for product X",
            "Customer": null,
            "BillingAddress": null,
            "BankAddress": null,
            "Articles": null,
            "Status": {
                "ID": 2,
                "Info": "Success",
                "Reasons": []
            },
            "MethodTransactionID": "196244198"
        }
    }

  4. Cancel a full payment

    Definition: POST /v1/payments/{id}/cancel

    Where:
    • {id} – GlobalPay Payment ID

    A payment can be cancelled if it has an Authorized or an Open status. Only the full payment with an Authorized status will support cancellation. If one of its splits payments has been previously captured, the payment changed its status in PartiallyCaptured so it will no longer support cancellation.

    A 200 HTTP response (OK) is returned if the request was completed successfully.

    POST https://securetest.smart2pay.com/v1/payments/428480/cancel
    Authorization: Basic MTAxMDpnYWJp

    Response:

    HTTP/1.1 200 OK
    Content-Type: application/json; charset=utf-8
    
    {
        "Payment": {
            "ID": 428480,
            "ClientIP": "82.208.151.136",
            "SkinID": null,
            "Created": "20200702145229",
            "MerchantTransactionID": "s2p_test1c",
            "OriginatorTransactionID": "s2p_teste123",
            "Amount": "100",
            "Currency": "EUR",
            "CapturedAmount": "0",
            "ReturnURL": "http://demo.smart2pay.com/redirect.php",
            "Description": "Split Payment test",
            "StatementDescriptor": "card payment",
            "MethodID": 6,
            "MethodOptionID": null,
            "SiteID": 66789,
            "NotificationDateTime": null,
            "Customer": null,
            "BillingAddress": null,
            "ShippingAddress": null,
            "Articles": null,
            "Card": {
                "HolderName": "Johnn Snow",
                "Number": "Visa-2535",
                "ExpirationMonth": "12",
                "ExpirationYear": "2023"
            },
            "CreditCardToken": null,
            "Status": {
                "ID": 3,
                "Info": "Cancelled",
                "Reasons": []
            },
            "MethodTransactionID": null,
            "AuthorizationCode": "111738",
            "PaymentTokenLifetime": null,
            "Capture": false,
            "CaptureDetails": null,
            "Retry": false,
            "RedirectURL": null,
            "3DSecure": false,
            "3DSecureData": null,
            "DeviceInfo": null,
            "ScaExemption": null,
            "CardOnFile": null,
            "Fraud": null,
            "AddressVerification": null,
            "Splits": [
                {
                    "ID": 449,
                    "PaymentID": 428480,
                    "SiteID": 1000,
                    "MerchantTransactionID": "s2p_test1123",
                    "OriginatorTransactionID": "89128810-f754-415f-9887-eae6cd444d8e",
                    "Created": "20200702145229",
                    "Amount": "60",
                    "Currency": "EUR",
                    "CapturedAmount": "0",
                    "StateDetails": {
                        "ID": 3,
                        "Info": "Cancelled",
                        "Reasons": []
                    }
                },
                {
                    "ID": 450,
                    "PaymentID": 428480,
                    "SiteID": 1061,
                    "MerchantTransactionID": "s2p_test1244",
                    "OriginatorTransactionID": "89128810-f754-415f-9887-eae6cd444d8e",
                    "Created": "20200702145229",
                    "Amount": "40",
                    "Currency": "EUR",
                    "CapturedAmount": "0",
                    "StateDetails": {
                        "ID": 3,
                        "Info": "Cancelled",
                        "Reasons": []
                    }
                }
            ]
        }
    }

Dana (Alipay OSP) Recurring Payment

Definition: POST /v1/payments/recurrent

A recurring payment is created in the same manner a one-off payment is created. In addition, you need to send the PreapprovalID (the PreapprovalID received when you created/opened a preapproval) and the information specific to each payment method.

For Dana (1136), you need to send the PreapprovalID (the PreapprovalID received when you created/opened a preapproval) and the Amount to be captured.

Checkout the below example of a recurring payment request for Dana (1136) that is based on the PreapprovalID. Please send in the payment request the Description parameter and Country parameter that should be the same with the ones sent in the Preapproval request.

Request:

POST https://paytest.smart2pay.com/v1/payments/recurrent
Authorization: Basic MzAyMDE6aEo1Um9iWXg5cjdGZk53Q3ZIWTlMWEhxcXIrRkV6cmM3YUp2UVFrNEdhejFtZzdSeXk=

{
  "Payment": {
    "PreapprovalID": 22265,
    "MerchantTransactionID": "reccuringPayin-DanaRecurrent",
    "Amount": 100,
    "Currency": "IDR",
    "MethodID": 1136,
    "Description": "recurring payment",
    "BillingAddress": {
      "Country": "ID"
    }
  }
}

Response:

HTTP/1.1 201 Created
Content-Type: application/json; charset=utf-8

{
    "Payment": {
        "ID": 4937474,
        "SkinID": null,
        "ClientIP": null,
        "Created": "20200330142936",
        "MerchantTransactionID": "reccuringPayin-DanaRecurrent",
        "OriginatorTransactionID": null,
        "Amount": "100",
        "Currency": "IDR",
        "CapturedAmount": null,
        "ReturnURL": null,
        "Description": "recurring payment",
        "MethodID": 1136,
        "MethodOptionID": null,
        "IncludeMethodIDs": null,
        "ExcludeMethodIDs": null,
        "PrioritizeMethodIDs": null,
        "SiteID": 30597,
        "NotificationDateTime": null,
        "Customer": null,
        "BillingAddress": {
            "ID": 657,
            "City": null,
            "ZipCode": null,
            "State": null,
            "Street": null,
            "StreetNumber": null,
            "HouseNumber": null,
            "HouseExtension": null,
            "Country": "ID"
        },
        "ShippingAddress": null,
        "Articles": null,
        "Details": null,
        "ReferenceDetails": null,
        "CustomParameters": null,
        "PreapprovalID": 22265,
        "Status": {
            "ID": 1,
            "Info": "Open",
            "Reasons": null
        },
        "Fraud": null,
        "MethodTransactionID": null,
        "TokenLifetime": null,
        "Capture": null,
        "PreapprovalDetails": null,
        "RedirectURL": null
    }
}

We will notify you about the new status of the payment to the Notification URL you setup in the Merchant Dashboard. The format of the received notification has the same structure as the response of the initial request.

You need to respond with HTTP code 204 (No Content)!

Payment notification format:

Authorization: Basic MzAyMDE6aEo1Um9iWXg5cjdGZk53Q3ZIWTlMWEhxcXIrRkV6cmM3YUp2UVFrNEdhejFtZzdSeXk=

{
  "Payment": {
    "ID": 4937474,
    "SkinID": null,
    "ClientIP": null,
    "Created": "20200330142936",
    "MerchantTransactionID": "reccuringPayin-DanaRecurrent",
    "OriginatorTransactionID": null,
    "Amount": "100",
    "Currency": "IDR",
    "CapturedAmount": null,
    "ReturnURL": "",
    "Description": "recurring payment",
    "MethodID": 1136,
    "MethodOptionID": null,
    "IncludeMethodIDs": null,
    "ExcludeMethodIDs": null,
    "PrioritizeMethodIDs": null,
    "SiteID": 30597,
    "NotificationDateTime": null,
    "Customer": null,
    "BillingAddress": {
      "ID": 657,
      "City": null,
      "ZipCode": null,
      "State": null,
      "Street": null,
      "StreetNumber": null,
      "HouseNumber": null,
      "HouseExtension": null,
      "Country": "ID"
    },
    "ShippingAddress": null,
    "Articles": null,
    "Details": null,
    "ReferenceDetails": null,
    "CustomParameters": null,
    "PreapprovalID": 22265,
    "Status": {
      "ID": 2,
      "Info": "Success",
      "Reasons": null
    },
    "Fraud": null,
    "MethodTransactionID": null,
    "TokenLifetime": null,
    "Capture": null,
    "PreapprovalDetails": null,
    "RedirectURL": null
  }
}

Dana (Alipay OSP) Preapproval Notification

We will notify you about the new status of the preapproval to the Notification URL you setup in the Merchant Dashboard. The format of the received notification has the same structure as the response of the initial request.

You need to respond with HTTP code 204 (No Content)!

Preapproval notification format:

Authorization: Basic MzAyMDE6aEo1Um9iWXg5cjdGZk53Q3ZIWTlMWEhxcXIrRkV6cmM3YUp2UVFrNEdhejFtZzdSeXk=

{
  "Preapproval": {
    "ID": 22265,
    "Created": "20200330142046",
    "MethodID": 1136,
    "SiteID": 30597,
    "MerchantPreapprovalID": "s2ptest_Dana_Preapproval",
    "RecurringPeriod": 0,
    "PreapprovedMaximumAmount": null,
    "Currency": null,
    "ReturnURL": "http://demo.smart2pay.com/redirect.php",
    "Description": "1 year subscription",
    "Customer": {
      "ID": 2622497,
      "MerchantCustomerID": null,
      "Email": "jdoe@gmail.com",
      "FirstName": "John",
      "LastName": "Doe",
      "Gender": null,
      "SocialSecurityNumber": null,
      "Phone": null,
      "Company": null,
      "DateOfBirth": null
    },
    "BillingAddress": {
      "ID": 657,
      "City": null,
      "ZipCode": null,
      "State": null,
      "Street": null,
      "StreetNumber": null,
      "HouseNumber": null,
      "HouseExtension": null,
      "Country": "ID"
    },
    "Status": {
      "ID": 2,
      "Info": null,
      "Reasons": null
    },
    "RedirectURL": null,
    "MethodOptionID": 0,
    "PreapprovedFrequency": null,
    "MandateReference": null,
    "Details": null
  }
}

Dana (Alipay OSP) Preapproval Request

Definition: POST /v1/preapprovals

To initiate a preapproval, you must create a preapproval object. The parameters of the preapproval are sent in the message body as a JSON object. See below an example of a preapproval request for Dana (1136).

Request:

POST https://paytest.smart2pay.com/v1/preapprovals
Authorization: Basic MzAyMDE6aEo1Um9iWXg5cjdGZk53Q3ZIWTlMWEhxcXIrRkV6cmM3YUp2UVFrNEdhejFtZzdSeXk=

{
 "Preapproval": {
   "MerchantPreapprovalID": "s2ptest_Dana_Preapproval",
   "Currency": "IDR",
   "Description": "1 year subscription",
   "ReturnURL": "http://demo.smart2pay.com/redirect.php",
   "MethodID": 1136,
   "Customer": {
      "FirstName": "John",
      "LastName": "Doe",
      "Email": "jdoe@gmail.com"
     },
   "BillingAddress": {
      "Country": "ID"
      }
   }
}

Response:

HTTP/1.1 201 Created
Content-Type: application/json; charset=utf-8

{
    "Preapproval": {
        "ID": 22265,
        "Created": "20200330142046",
        "MethodID": 1136,
        "SiteID": 30597,
        "MerchantPreapprovalID": "s2ptest_Dana_Preapproval",
        "RecurringPeriod": 0,
        "PreapprovedMaximumAmount": null,
        "Currency": "IDR",
        "ReturnURL": "http://demo.smart2pay.com/redirect.php",
        "Description": "1 year subscription",
        "Customer": {
            "ID": 2622497,
            "MerchantCustomerID": null,
            "Email": "jdoe@gmail.com",
            "FirstName": "John",
            "LastName": "Doe",
            "Gender": null,
            "SocialSecurityNumber": null,
            "Phone": null,
            "Company": null,
            "DateOfBirth": null
        },
        "BillingAddress": {
            "ID": 657,
            "City": null,
            "ZipCode": null,
            "State": null,
            "Street": null,
            "StreetNumber": null,
            "HouseNumber": null,
            "HouseExtension": null,
            "Country": "ID"
        },
        "Status": {
            "ID": 1,
            "Info": "Pending",
            "Reasons": null
        },
        "RedirectURL": "https://europaytest.smart2pay.com/AlipayOSP/Preapproval/PreapprovalLanding.aspx?ID=17588&Hash=E16F327FAA01E8292C6B90C650BDC4FD",
        "MethodOptionID": 0,
        "PreapprovedFrequency": null,
        "MandateReference": null,
        "Details": null
    }
}
  1. The customer is redirected to Dana page. The user needs to add their phone number attached to the Dana wallet.1 Add phone number
  2. The customer fills in the 5-digit code received via SMS.1 SMS digit code
  3. The customer enters the PIN number.1 SMS 6 digit code
  4. The customer confirms the auto-debit user agreement1 Confirm agreement

KakaoPay (Alipay OSP) Recurring Payment

Definition: POST /v1/payments/recurrent

A recurring payment is created in the same manner a one-off payment is created. In addition, you need to send the PreapprovalID (the PreapprovalID received when you created/opened a preapproval) and the information specific to each payment method.

For KakaoPay (1135), you need to send the PreapprovalID (the PreapprovalID received when you created/opened a preapproval) and the Amount to be captured.

Checkout the below example of a recurring payment request for KakaoPay (1135) that is based on the PreapprovalID. Please send in the payment request the Description parameter and Country parameter that should be the same with the ones sent in the Preapproval request.

Request:

POST https://paytest.smart2pay.com/v1/payments/recurrent
Authorization: Basic MzAyMDE6aEo1Um9iWXg5cjdGZk53Q3ZIWTlMWEhxcXIrRkV6cmM3YUp2UVFrNEdhejFtZzdSeXk=

{
  "Payment": {
    "PreapprovalID": 22276,
    "MerchantTransactionID": "reccuringPayin-GCashRecurrent526",
    "Amount": 100,
    "Currency": "KRW",
    "MethodID": 1135,
    "Description": "recurring payment",
    "BillingAddress": {
      "Country": "KR"
    } 
  }
}

Response:

HTTP/1.1 201 Created
Content-Type: application/json; charset=utf-8

{
    "Payment": {
        "ID": 4938078,
        "SkinID": null,
        "ClientIP": null,
        "Created": "20200331072856",
        "MerchantTransactionID": "reccuringPayin-GCashRecurrent526",
        "OriginatorTransactionID": null,
        "Amount": "100",
        "Currency": "KRW",
        "CapturedAmount": null,
        "ReturnURL": null,
        "Description": "recurring payment",
        "MethodID": 1135,
        "MethodOptionID": null,
        "IncludeMethodIDs": null,
        "ExcludeMethodIDs": null,
        "PrioritizeMethodIDs": null,
        "SiteID": 30597,
        "NotificationDateTime": null,
        "Customer": null,
        "BillingAddress": {
            "ID": 653,
            "City": null,
            "ZipCode": null,
            "State": null,
            "Street": null,
            "StreetNumber": null,
            "HouseNumber": null,
            "HouseExtension": null,
            "Country": "KR"
        },
        "ShippingAddress": null,
        "Articles": null,
        "Details": null,
        "ReferenceDetails": null,
        "CustomParameters": null,
        "PreapprovalID": 22276,
        "Status": {
            "ID": 1,
            "Info": "Open",
            "Reasons": null
        },
        "Fraud": null,
        "MethodTransactionID": null,
        "TokenLifetime": null,
        "Capture": null,
        "PreapprovalDetails": null,
        "RedirectURL": null
    }
}

We will notify you about the new status of the payment to the Notification URL you setup in the Merchant Dashboard. The format of the received notification has the same structure as the response of the initial request.

You need to respond with HTTP code 204 (No Content)!

Payment notification format:

Authorization: Basic MzAyMDE6aEo1Um9iWXg5cjdGZk53Q3ZIWTlMWEhxcXIrRkV6cmM3YUp2UVFrNEdhejFtZzdSeXk=

{
  "Payment": {
    "ID": 4938078,
    "SkinID": null,
    "ClientIP": null,
    "Created": "20200331072856",
    "MerchantTransactionID": "reccuringPayin-GCashRecurrent526",
    "OriginatorTransactionID": null,
    "Amount": "100",
    "Currency": "KRW",
    "CapturedAmount": null,
    "ReturnURL": "",
    "Description": "recurring payment",
    "MethodID": 1135,
    "MethodOptionID": null,
    "IncludeMethodIDs": null,
    "ExcludeMethodIDs": null,
    "PrioritizeMethodIDs": null,
    "SiteID": 30597,
    "NotificationDateTime": null,
    "Customer": null,
    "BillingAddress": {
      "ID": 653,
      "City": null,
      "ZipCode": null,
      "State": null,
      "Street": null,
      "StreetNumber": null,
      "HouseNumber": null,
      "HouseExtension": null,
      "Country": "KR"
    },
    "ShippingAddress": null,
    "Articles": null,
    "Details": null,
    "ReferenceDetails": null,
    "CustomParameters": null,
    "PreapprovalID": 22276,
    "Status": {
      "ID": 2,
      "Info": "Success",
      "Reasons": null
    },
    "Fraud": null,
    "MethodTransactionID": null,
    "TokenLifetime": null,
    "Capture": null,
    "PreapprovalDetails": null,
    "RedirectURL": null
  }
}

KakaoPay (Alipay OSP) Preapproval Notification

We will notify you about the new status of the preapproval to the Notification URL you setup in the Merchant Dashboard. The format of the received notification has the same structure as the response of the initial request.

You need to respond with HTTP code 204 (No Content)!

Preapproval notification format:

Authorization: Basic MzAyMDE6aEo1Um9iWXg5cjdGZk53Q3ZIWTlMWEhxcXIrRkV6cmM3YUp2UVFrNEdhejFtZzdSeXk=

{
  "Preapproval": {
    "ID": 22276,
    "Created": "20200331063928",
    "MethodID": 1135,
    "SiteID": 30597,
    "MerchantPreapprovalID": "s2ptest_kAKAOPAY_PreapprovalS1",
    "RecurringPeriod": 0,
    "PreapprovedMaximumAmount": null,
    "Currency": null,
    "ReturnURL": "http://demo.smart2pay.com/redirect.php",
    "Description": "1 year subscription",
    "Customer": {
      "ID": 2622497,
      "MerchantCustomerID": null,
      "Email": "jdoe@gmail.com",
      "FirstName": "John",
      "LastName": "Doe",
      "Gender": null,
      "SocialSecurityNumber": null,
      "Phone": null,
      "Company": null,
      "DateOfBirth": null
    },
    "BillingAddress": {
      "ID": 657,
      "City": null,
      "ZipCode": null,
      "State": null,
      "Street": null,
      "StreetNumber": null,
      "HouseNumber": null,
      "HouseExtension": null,
      "Country": "ID"
    },
    "Status": {
      "ID": 2,
      "Info": null,
      "Reasons": null
    },
    "RedirectURL": null,
    "MethodOptionID": 0,
    "PreapprovedFrequency": null,
    "MandateReference": null,
    "Details": null
  }
}

KakaoPay (Alipay OSP) Preapproval Request

Definition: POST /v1/preapprovals

To initiate a preapproval, you must create a preapproval object. The parameters of the preapproval are sent in the message body as a JSON object. See below an example of a preapproval request for KakaoPay (1135).

Request:

POST https://paytest.smart2pay.com/v1/preapprovals
Authorization: Basic MzAyMDE6aEo1Um9iWXg5cjdGZk53Q3ZIWTlMWEhxcXIrRkV6cmM3YUp2UVFrNEdhejFtZzdSeXk=

{
 "Preapproval": {
   "MerchantPreapprovalID": "s2ptest_kAKAOPAY_PreapprovalS1",
   "Currency": "KRW",
   "Description": "1 year subscription",
   "ReturnURL": "http://demo.smart2pay.com/redirect.php",
   "MethodID": 1135,
   "Customer": {
      "FirstName": "John",
      "LastName": "Doe",
      "Email": "jdoe@gmail.com"
     },
   "BillingAddress": {
      "Country": "ID"
      }
   }
}

Response:

HTTP/1.1 201 Created
Content-Type: application/json; charset=utf-8

{
    "Preapproval": {
        "ID": 22276,
        "Created": "20200331063928",
        "MethodID": 1135,
        "SiteID": 30597,
        "MerchantPreapprovalID": "s2ptest_kAKAOPAY_PreapprovalS1",
        "RecurringPeriod": 0,
        "PreapprovedMaximumAmount": null,
        "Currency": "KRW",
        "ReturnURL": "http://demo.smart2pay.com/redirect.php",
        "Description": "1 year subscription",
        "Customer": {
            "ID": 2622497,
            "MerchantCustomerID": null,
            "Email": "jdoe@gmail.com",
            "FirstName": "John",
            "LastName": "Doe",
            "Gender": null,
            "SocialSecurityNumber": null,
            "Phone": null,
            "Company": null,
            "DateOfBirth": null
        },
        "BillingAddress": {
            "ID": 657,
            "City": null,
            "ZipCode": null,
            "State": null,
            "Street": null,
            "StreetNumber": null,
            "HouseNumber": null,
            "HouseExtension": null,
            "Country": "ID"
        },
        "Status": {
            "ID": 1,
            "Info": "Pending",
            "Reasons": null
        },
        "RedirectURL": "https://europaytest.smart2pay.com/AlipayOSP/Preapproval/PreapprovalLanding.aspx?ID=17598&Hash=64B81EAA7FE00CB58E187BE0615CC7BD",
        "MethodOptionID": 0,
        "PreapprovedFrequency": null,
        "MandateReference": null,
        "Details": null
    }
}
  1. The customer is redirected to KakaoPay page where the user needs to confirm the terms of the payment.1 Confirm payment
  2. The Customer fills in the 6-digit code received via SMS.1 SMS 6 digit code
  3. The customer confirms the auto-debit user agreement1 Confirm agreement

GCash (Alipay OSP) Recurring Payment

Definition: POST /v1/payments/recurrent

A recurring payment is created in the same manner a one-off payment is created. In addition, you need to send the PreapprovalID (the PreapprovalID received when you created/opened a preapproval) and the information specific to each payment method.

For GCash (1134), you need to send the PreapprovalID (the PreapprovalID received when you created/opened a preapproval) and the Amount to be captured.

Checkout the below example of a recurring payment request for GCash (1134) that is based on the PreapprovalID. Please send in the payment request the Description parameter and Country parameter that should be the same with the ones sent in the Preapproval request.

Request:

POST https://paytest.smart2pay.com/v1/payments/recurrent
Authorization: Basic MzAyMDE6aEo1Um9iWXg5cjdGZk53Q3ZIWTlMWEhxcXIrRkV6cmM3YUp2UVFrNEdhejFtZzdSeXk=

{
  "Payment": {
    "PreapprovalID": 22256,
    "MerchantTransactionID": "reccuringPayina-AlipayOSP666",
    "Amount": 100,
    "Currency": "PHP",
    "MethodID": 1134,
    "Description": "recurring payment",
    "BillingAddress": {
    "Country": "PH"
    } 
  }
}

Response:

HTTP/1.1 201 Created
Content-Type: application/json; charset=utf-8

{
    "Payment": {
        "ID": 4936892,
        "SkinID": null,
        "ClientIP": null,
        "Created": "20200330102706",
        "MerchantTransactionID": "reccuringPayina-AlipayOSP666",
        "OriginatorTransactionID": null,
        "Amount": 100,
        "Currency": "PHP",
        "CapturedAmount": null,
        "ReturnURL": null,
        "Description": "recurring payment",
        "MethodID": 1134,
        "MethodOptionID": null,
        "IncludeMethodIDs": null,
        "ExcludeMethodIDs": null,
        "PrioritizeMethodIDs": null,
        "SiteID": 30597,
        "NotificationDateTime": null,
        "Customer": null,
        "BillingAddress": {
            "ID": 644,
            "City": null,
            "ZipCode": null,
            "State": null,
            "Street": null,
            "StreetNumber": null,
            "HouseNumber": null,
            "HouseExtension": null,
            "Country": "PH"
        },
        "ShippingAddress": null,
        "Articles": null,
        "Details": null,
        "ReferenceDetails": null,
        "CustomParameters": null,
        "PreapprovalID": 22256,
        "Status": {
            "ID": 1,
            "Info": "Open",
            "Reasons": null
        },
        "Fraud": null,
        "MethodTransactionID": null,
        "TokenLifetime": null,
        "Capture": null,
        "PreapprovalDetails": null,
        "RedirectURL": null
    }
}

We will notify you about the new status of the payment to the Notification URL you setup in the Merchant Dashboard. The format of the received notification has the same structure as the response of the initial request.

You need to respond with HTTP code 204 (No Content)!

Payment notification format:

Authorization: Basic MzAyMDE6aEo1Um9iWXg5cjdGZk53Q3ZIWTlMWEhxcXIrRkV6cmM3YUp2UVFrNEdhejFtZzdSeXk=

{
  "Payment": {
    "ID": 4936892,
    "SkinID": null,
    "ClientIP": null,
    "Created": "20200330102706",
    "MerchantTransactionID": "reccuringPayina-AlipayOSP666",
    "OriginatorTransactionID": null,
    "Amount": 100,
    "Currency": "PHP",
    "CapturedAmount": null,
    "ReturnURL": "",
    "Description": "recurring payment",
    "MethodID": 1134,
    "MethodOptionID": null,
    "IncludeMethodIDs": null,
    "ExcludeMethodIDs": null,
    "PrioritizeMethodIDs": null,
    "SiteID": 30597,
    "NotificationDateTime": null,
    "Customer": null,
    "BillingAddress": {
      "ID": 644,
      "City": null,
      "ZipCode": null,
      "State": null,
      "Street": null,
      "StreetNumber": null,
      "HouseNumber": null,
      "HouseExtension": null,
      "Country": "PH"
    },
    "ShippingAddress": null,
    "Articles": null,
    "Details": null,
    "ReferenceDetails": null,
    "CustomParameters": null,
    "PreapprovalID": 22256,
    "Status": {
      "ID": 2,
      "Info": "Success",
      "Reasons": null
    },
    "Fraud": null,
    "MethodTransactionID": null,
    "TokenLifetime": null,
    "Capture": null,
    "PreapprovalDetails": null,
    "RedirectURL": null
  }
}

GCash (Alipay OSP) Preapproval Notification

We will notify you about the new status of the preapproval to the Notification URL you setup in the Merchant Dashboard. The format of the received notification has the same structure as the response of the initial request.

You need to respond with HTTP code 204 (No Content)!

Preapproval notification format:

Authorization: Basic MzAyMDE6aEo1Um9iWXg5cjdGZk53Q3ZIWTlMWEhxcXIrRkV6cmM3YUp2UVFrNEdhejFtZzdSeXk=

{
  "Preapproval": {
    "ID": 22256,
    "Created": "20200330101451",
    "MethodID": 1134,
    "SiteID": 30597,
    "MerchantPreapprovalID": "s2ptest_h-1test52",
    "RecurringPeriod": 0,
    "PreapprovedMaximumAmount": null,
    "Currency": null,
    "ReturnURL": "http://demo.smart2pay.com/redirect.php",
    "Description": "1 year subscription",
    "Customer": {
      "ID": 2622497,
      "MerchantCustomerID": null,
      "Email": "jdoe@gmail.com",
      "FirstName": "John",
      "LastName": "Doe",
      "Gender": null,
      "SocialSecurityNumber": null,
      "Phone": null,
      "Company": null,
      "DateOfBirth": null
    },
    "BillingAddress": {
      "ID": 644,
      "City": null,
      "ZipCode": null,
      "State": null,
      "Street": null,
      "StreetNumber": null,
      "HouseNumber": null,
      "HouseExtension": null,
      "Country": "PH"
    },
    "Status": {
      "ID": 2,
      "Info": null,
      "Reasons": null
    },
    "RedirectURL": null,
    "MethodOptionID": 0,
    "PreapprovedFrequency": null,
    "MandateReference": null,
    "Details": null
  }
}

GCash (Alipay OSP) Preapproval Request

Definition: POST /v1/preapprovals

To initiate a preapproval, you must create a preapproval object. The parameters of the preapproval are sent in the message body as a JSON object. See below an example of a preapproval request for GCash (1134).

With GCash, you can create preapprovals that can allow you to form subsequent recurrent payments. This is the most flexible type and allows the merchant to fully control when to initiate the money transfer(s) between the end user’s account and the merchant’s account (credits or debits). The Preapproval call basically creates a transaction representing the end user’s authorization to use their account for payments on the terms set in the request.

A transaction ID is returned to the merchant within the return URL in the Preapproval response/notification. The merchant must store this transaction ID in the end user’s payment profile to allow future recurrent requests.
This ID is active for 2 years and then the token that allows subsequent recurrent payments will be automatically refreshed after this time period.

Request:

POST https://paytest.smart2pay.com/v1/preapprovals
Authorization: Basic MzAyMDE6aEo1Um9iWXg5cjdGZk53Q3ZIWTlMWEhxcXIrRkV6cmM3YUp2UVFrNEdhejFtZzdSeXk=

{
 "Preapproval": {
   "MerchantPreapprovalID": "s2ptest_h-1test52",
   "Currency": "PHP",
   "Description": "1 year subscription",
   "ReturnURL": "http://demo.smart2pay.com/redirect.php",
   "MethodID": 1134,
   "Customer": {
      "FirstName": "John",
      "LastName": "Doe",
      "Email": "jdoe@gmail.com"
     },
   "BillingAddress": {
      "Country": "PH"
      }
   }
}

Response:

HTTP/1.1 201 Created
Content-Type: application/json; charset=utf-8

{
    "Preapproval": {
        "ID": 22256,
        "Created": "20200330101451",
        "MethodID": 1134,
        "SiteID": 30597,
        "MerchantPreapprovalID": "s2ptest_h-1test52",
        "RecurringPeriod": 0,
        "PreapprovedMaximumAmount": null,
        "Currency": "PHP",
        "ReturnURL": "http://demo.smart2pay.com/redirect.php",
        "Description": "1 year subscription",
        "Customer": {
            "ID": 2622497,
            "MerchantCustomerID": null,
            "Email": "jdoe@gmail.com",
            "FirstName": "John",
            "LastName": "Doe",
            "Gender": null,
            "SocialSecurityNumber": null,
            "Phone": null,
            "Company": null,
            "DateOfBirth": null
        },
        "BillingAddress": {
            "ID": 644,
            "City": null,
            "ZipCode": null,
            "State": null,
            "Street": null,
            "StreetNumber": null,
            "HouseNumber": null,
            "HouseExtension": null,
            "Country": "PH"
        },
        "Status": {
            "ID": 1,
            "Info": "Pending",
            "Reasons": null
        },
        "RedirectURL": "https://europaytest.smart2pay.com/AlipayOSP/Preapproval/PreapprovalLanding.aspx?ID=17580&Hash=FC11CEC58D39D2966F2B71603EBA8726",
        "MethodOptionID": 0,
        "PreapprovedFrequency": null,
        "MandateReference": null,
        "Details": null
    }
}

Dana (Alipay OSP) Test Data

Alipay Global OneStop Payment (OSP) is a service that will allow merchants a direct and seamless way to connect to all local wallets and APMs connected to Alipay Connect service.

For Dana (Alipay OSP) payment method there aren’t any test data available, but you can see how it works with the payment flow given below.

Dana (Alipay OSP) Payment Flow

  1. The customer is redirected to Dana page where selects the type of payment to complete the transaction with (debit/credit card or selects one of the available Banks).

    1 Type of payment

    1 Type of payment

  2. The user confirms the payment and the Amount to be charged.

    1 Payment confirmation

  3. Customer has 24 hours to follow the instructions and complete the payment.

    1 Instructions

    1 Payment completion

  4. Upon completion of the payment flow, the customer is redirected to your ReturnUrl.

    1 Return page when the redirection status is a success

GCash (Alipay OSP) Test Data

Alipay Global OneStop Payment (OSP) is a service that will allow merchants a direct and seamless way to connect to all local wallets and APMs connected to Alipay OSP service.
The first wallet to be integrated by Smart2Pay through this one-point integration system offered by Alipay is GCash, the most used local Philipine digital wallet.

In order for you to test the GCash payment method successfully, please use the below test data.

GCash Test Data
Data Value
Phone Number: Enter any 10 digit number. Example: 1234567812
Authentication code: Enter any 6 digit number. Example: 123456
PIN number: Enter any 4 digit number. Example: 1234

GCash Payment Flow

  1. The Customer enters his mobile phone number.

    1 Enter phone

  2. The Customer enters the authentication code that was send to his mobile phone number.

    1 Enter Authentication Code

  3. The customer logs in to his GCash account by entering his PIN number.

    1 Account login

  4. The customer reviews the payment details and confirms the payment.

    1 Payment password

  5. Upon completion of the payment flow, the customer is redirected to your ReturnUrl.

    1 Return page when the redirection status is processing

Servipag Pago Flujo

Para el método de pago de Servipag no hay datos de prueba disponibles, pero puede ver cómo funciona con el flujo de pago que figura a continuación.

Servipag Pago Flujo

  1. El cliente ingresa su dirección de correo electrónico, nombre y RUT. Tenga en cuenta que para Chile el parámetro Número de seguridad social del cliente consiste en RUT. Para obtener más información sobre el RUT, haga clic aquí.

    1 Enter customer details

  2. El cliente recibe los detalles de pago imprimibles. Necesita pagar la cantidad exacta en cualquier sucursal de Servipag en su área.

    ¡Tenga en cuenta la fecha de vencimiento impresa en el boleto para completar el pago antes de que expire el boleto!

    1 Payment details

  3. Al completar el flujo de pago, el cliente es redirigido de nuevo a su ReturnURL.

    1 Return page when the redirection status is Processing

Reporting process for Mirakl Marketplace

  1. Smart2Pay generates a daily transactional report file for Mirakl. The transactional report file contains the following information:
    ID
    ID
    Definition
    The ID of the transaction in Smart2Pay system
    Type
    int
    : The ID of the transaction in Smart2Pay system;
    MerchantTransactionID
    MerchantTransactionID
    Definition
    Merchant Transaction ID, a number that uniquely identifies a transaction in your system.
    Type
    string
    : Merchant Transaction ID, a number that uniquely identifies a transaction in your system;
    OriginatorTransactionID
    OriginatorTransactionID
    Definition
    The ID of the transaction/refund in The Marketplace system
    Type
    string
    : The ID of the transaction/refund in The Marketplace system;

    InputDateTime
    InputDateTime
    Definition
    The date and time of inserting the transaction in Smart2Pay system
    Type
    datetime
    : The date and time of inserting the transaction in Smart2Pay system;

    PaymentStateDefID
    PaymentStateDefID
    Definition
    The ID of the payment status in Smart2Pay system. It can have the following values: 1 - Open, 2 - Success, 3 - Cancelled, 4 - Failed, 5 - Expired, 9 - Authorized, 11 - Captured.
    : The status id of the transaction in Smart2Pay system;

    Status
    Status
    Definition
    The description of the transaction status in the Smart2Pay system: Open (Pending), Success (not used for card payments), Cancelled, Failed, Expired, Authorized, Captured.
    : The description of the transaction status in the Smart2Pay system;

    MerchantAmount
    MerchantAmount
    Definition
    The amount of the transaction.
    Type
    float
    : The amount of the transaction;

    MerchantCurrency
    MerchantCurrency
    Definition
    The currency of the transaction. ISO 4217 format (e.g. EUR)
    : The currency of the transaction;

    CapturedAmount
    CapturedAmount
    Definition
    The amount that has been captured. Float with 2 decimals (e.g. 33.99)
    Type
    float
    : The amount that has been captured;

    MethodID
    MethodID
    Definition
    The ID of the payment methods used. For credit cards payments the ID is 6.
    Type
    int
    : The ID of the payment methods used. For credit cards payments this is 6.;

    MethodName
    MethodName
    Definition
    The name of the payment method used: SmartCards.
    : The name of the payment method used.;

    ReportedByBOTOperatorDate
    ReportedByBOTOperatorDate
    Definition
    The date when the transaction was exported to CSV file.
    Type
    datetime
    : The date when the transaction was exported to csv file;

    SpecificDetails
    SpecificDetails
    Definition
    Specific Details
    : Not used;

    ReconciliationProviderID
    ReconciliationProviderID
    Definition
    The ID that appears on the bank statement of the customer (usually same as RootProviderTransactionID).
    Type
    string
    : ID appearing on the bank statement of the customer (usually same as RootProviderTransactionID);

    ProviderTransactionID
    ProviderTransactionID
    Definition
    Provider Transaction ID
    : Not used for card payments;

    MerchantAlias
    MerchantAlias
    Definition
    The name of the Shop.
    Type
    string
    : Shop Name;

    RootProviderTransactionID
    RootProviderTransactionID
    Definition
    The ID of the payment in acquiring system.
    Type
    string
    : ID of the payment in acquiring system;

    Country
    Country
    Definition
    The country of the payer if available. ISO_3166-1_alpha-2 format. (e.g. IT).
    : The country of the payer if available.
  2.  

  3. Smart2Pay will generate a Settlement invoice report containing information at transaction level for each shop. The Settlement invoice report contains the following information:1 Settlement invoice report per shop
    GPaymentId
    GPaymentId
    Definition
    GPaymentId
    : Not used;
    PaymentId
    PaymentId
    Definition
    The ID of the payment in Smart2Pay system.
    Type
    int
    : PaymentID in Smart2Pay system;

    Type
    Type
    Definition
    Transaction Type. It can be type: Payment, Refund, Inquiry or Chargeback.
    Type
    string
    : Transaction Type. Can be Payment, Refund, Inquiry or Chargeback;

    PaymentMethodName
    PaymentMethodName
    Definition
    The name of the payment method used. E.g. SmartCards
    Type
    string
    : Name of the payment method used;

    CustomerName
    CustomerName
    Definition
    The name of the customer, if available.
    Type
    string
    : The name of the customer, if available;

    MerchantName
    MerchantName
    Definition
    The name of the merchant account.
    Type
    string
    : The name of the merchant account;

    MerchantID
    MerchantID
    Definition
    The ID of the transaction/refund in your system.
    Type
    string
    : The transaction/refund id in your system;

    GtId
    GtId
    Definition
    GtId
    : Not used;

    IssuerName
    IssuerName
    Definition
    Issuer Name
    : Not used;

    IdealTrxId
    IdealTrxId
    Definition
    IdealTrxId
    : Not used;

    Country
    Country
    Definition
    The country of the payer, if available. ISO_3166-1_alpha-2 format. (e.g. IT).
    : The country of the payer, if available;

    InputDateTime
    InputDateTime
    Definition
    The date and time of inserting the transaction in Smart2Pay system.
    Type
    datetime
    : The date and time of inserting the transaction in Smart2Pay system;

    Amount
    Amount
    Definition
    The amount of the transaction.
    Type
    float
    : The amount of the transaction;

    Currency
    Currency
    Definition
    The currency of the transaction. ISO 4217 format (e.g. EUR).
    : The currency of the transaction;

    Status
    Status
    Definition
    The description of the transaction status in the Smart2Pay system: Open (Pending), Success (not used for card payments), Cancelled, Failed, Authorized, Captured
    : The description of the transaction status in the Smart2Pay system;

    ExchangeRate
    ExchangeRate
    Definition
    The exchange rate if the transaction needs to be converted from transaction currency to the settlement currency.
    Type
    float
    : The exchange rate if the transaction needs to be converted from transaction currency to the settlement currency;

    CalculatedAmount
    CalculatedAmount
    Definition
    The transaction amount converted to the settlement currency.
    Type
    float
    : The transaction amount converted to the settlement currency;

    ReferenceCurrency
    ReferenceCurrency
    Definition
    The settlement currency.
    Type
    float
    : The settlement currency;

    TransactionFee
    TransactionFee
    Definition
    Gateway fee (if applies).
    Type
    float
    : Gateway fee (if applies);

    GeneralFee
    GeneralFee
    Definition
    Gateway fee (if applies)
    Type
    float
    : Gateway fee (if applies);

    AttemptFee
    AttemptFee
    Definition
    Gateway fee (per attempt, if applies).
    Type
    float
    : Gateway fee (per attempt, if applies);

    IssuedFee
    IssuedFee
    Definition
    Gateway fee (per acquiring bank/payment method provider attempt fee if applies).
    Type
    float
    : Gateway fee (per acquiring bank/payment method provider attempt fee if applies);

    LocalVatFee
    LocalVatFee
    Definition
    Local payment method VAT (if applies).
    Type
    float
    : Local payment method VAT (if applies);

    VAT
    VAT
    Definition
    Value added tax (if applies).
    Type
    float
    : Value added tax (if applies);

    Comission
    Comission
    Definition
    Commission of the marketplace/agent (if applies).
    Type
    float
    : Commission of the marketplace/agent (if applies);

    SiteID
    SiteID
    Definition
    The ID of the shop.
    Type
    int
    : ID of the shop;

    SiteAlias
    SiteAlias
    Definition
    Shop Alias.
    Type
    string
    : Shop Alias;

    OriginatorTransactionID
    OriginatorTransactionID
    Definition
    The ID of the transaction/refund in The Marketplace system.
    Type
    string
    : The ID of the transaction/refund in The Marketplace system.
  4.  

  5. Smart2Pay will also generate an aggregated Settlement invoice report containing information at transaction level for the Marketplace. Settlement of the commission will be based on this settlement invoice. Format is the same as in the Settlement invoice report above.

Below there are examples of Settlement invoice reports in all supported formats:

Settlement Flow for Mirakl Marketplace

Settlement cycles are defined in Smart2Pay system. Based on this, Smart2Pay generates settlement invoices for each shop. Also, Smart2Pay generates a commission settlement invoice for Mirakl Marketplace.

The acquiring banks and alternative payment method providers settle to Smart2Pay the Gross amount – Acquiring/Processing Fees:

  • Smart2Pay settles gross amount – operator commission – acquiring fees to each shop. Settlement frequency: weekly. If a different settlement frequency is needed, please contact your Smart2Pay account manager.
  • Smart2Pay settles commission to Mirakl Marketplace based on Transaction Log API exposed by the Mirakl. Settlement frequency: weekly. If a different settlement frequency is needed, please contact your Smart2Pay account manager.

Optional functionalities:

  • Subscription fee can be collected by Smart2Pay from the shops on behalf of the marketplace operator.
  • Manual credits / debits can be issued towards the shops by the Marketplace operator using Mirakl backoffice and will be performed by Smart2Pay.
  • Mirakl Marketplace can withhold the payment of certain transactions towards the shop (e.g. only the transactions with PaymentStatus marked as PAID will be settled).

Reconciliation process for Mirakl Marketplace

Smart2Pay reconciles at transaction level with the acquiring banks and alternative method providers.

The SiteID / APIKEY will be used to initiate the transactions towards Smart2Pay. The Mirakl Marketplace Transaction ID needs to be submitted by Smart2Pay REST API in the OriginatorTransactionID field for reporting and reconciliation purposes towards the shops / Mirakl Marketplace.

Transactional Flow for Mirakl Marketplace

Orders containing items from multiple shops will be sent for authorization in multiple transactions, each transaction containing items for a single shop.

Credit card transactions are authorized and their status is communicated on the following route: Acquirer -> Smart2Pay -> Mirakl Marketplace.

Transactions should be captured within 7 days from authorization. For more information regarding capturing payments, please go to our section: Capture a Payment.

Tokenization, 3D and fraud prevention solutions are available upon request. For more information visit: Credit Card Payments.

Alternative payment methods are authorized and captured in one step and their status is communicated on the following route: Payment method provider -> Smart2Pay -> Mirakl Marketplace.

You need to integrate our REST API described here: https://docs.smart2pay.com.

Mirakl’s Pre-Settlement Transaction API

Mirakl Marketplace exposes a Transaction Log API based on which Smart2Pay settles commissions for. Information about all the transactions created or updated within a certain interval can be retrieved by using an action based on GET HTTP request. The response will contain a transaction list in JSON format that returns all the transactions that were created or updated in the interval start_date – end_date.

Only a limited amount of details for each transaction will be provided.

Definition: GET /api/transactions_logs?shop_id=…&start_date=…&end_date=…&start_transaction_date=…&e
nd_transaction_date=…&updated_since=…&payment_voucher=…&payment_states=…&transactio
n_types=…&paginate=…&accounting_document_number=…&order_ids=…&order_line_ids=…

Where:
  • shop_id – [optional] shop id for filtering;
  • start_date – [optional] creation date for filtering. Format: “yyyy-MM-dd’T’HH:mm:ss”;
  • end_date – [optional] creation date for filtering. Format: “yyyy-MM-dd’T’HH:mm:ss”;
  • start_transaction_date – [optional] transaction date for filtering. Format: “yyyy-MM-dd’T’HH:mm:ss”;
  • end_transaction_date – [optional] transaction date for filtering. Format: “yyyy-MM-dd’T’HH:mm:ss”;
  • updated_since – [optional] last updated date for filtering. Format: “yyyy-MM-dd’T’HH:mm:ss”;
  • payment_voucher – [optional] payment voucher number for filtering;
  • payment_states – [optional] payment states separated by comma for filtering;
  • transaction_types – [optional] transaction types separated by comma for filtering;
  • paginate – [optional] Control the pagination usage. Default: true;
  • accounting_document_number – [optional] an accounting document number for filtering (invoice or credit note number);
  • order_ids – [optional] order id list for filtering, using comma (,) as a separator;
  • order_line_ids – [optional] order line id list for filtering, using comma (,) as a separator.

Request Model:

GET /v1/transactions?{start_date}&{end_date}
Authorization: Basic Pre-shared-APIKEY

The transaction_type field contains the following information:

  • COMMISSION_VAT
  • COMMISSION_FEE
  • ORDER_SHIPPING_AMOUNT
  • ORDER_AMOUNT
  • MANUAL_CREDIT
  • MANUAL_CREDIT_VAT
  • ORDER_AMOUNT_TAX
  • ORDER_SHIPPING_AMOUNT_TAX
  • REFUND_ORDER_AMOUNT
  • REFUND_ORDER_SHIPPING_AMOUNT
  • REFUND_COMMISSION_FEE
  • REFUND_COMMISSION_VAT
  • REFUND_ORDER_AMOUNT_TAX
  • REFUND_ORDER_SHIPPING_AMOUNT_TAX
  • SUBSCRIPTION_FEE
  • SUBSCRIPTION_VAT

Only the transactions with payment_state = “PAID” will be settled in the current settlement cycle.

Mirakl Notification for Shop Approval

Whenever a shop is approved in Smart2Pay onboarding system, a notification is sent from Smart2Pay to Mirakl Marketplace where the following info is send, and whether it was successful or not.

Mirakl Marketplace needs to respond with HTTP return code 204 (No Content) otherwise the approval will be resubmitted!

Definition: POST /api/shop/{ID}/notification

Where:
  • {ID} – ID of the shop

Shop Approval Notification Format:

{
    "merchant_site": {
        "shop_id": Int,
        "site_id": Int (eg. 31261),
        "api_key": "SmasdsPx6n2KJU9MNKcBdlqdLJZOXSl9IA/kdksjSsdDWD",
        "created": "Date (yyyy-mm-dd hh:mm:ss, eg. 2018-12-31 23:59:59)",
        "url": "http://www.johnshop.it",
    }
}

Response:

204 No Content

We recommend you to always verify the Notification content we sent and not just simply/automatically respond to our notifications.

In exceptional cases it is possible to receive duplicate notifications and your system should be able to handle such situations.

If you do not respond to the notifications of type Approval or our system will keep sending the notifications until it receives a response!

Get the List of Documents from Mirakl Marketplace

Information about the required documents can be retrieved by using an action based on GET HTTP request. The response will contain a list of documents provided for each Shop ID in JSON format.

Definition: GET /api/shops/documents?shop_ids=…

Where:
  • shop_ids – [required] A list of shop identifiers.

Request Model:

GET /api/shops/{shop_id}/documents
Authorization: Basic Pre-shared-APIKEY

The following documents are required by Smart2Pay KYC platform:

  1. Bank statement (Not older than 6 months, with account holder and IBAN code visible);
  2. Company certificate / Incorporation certificate (Not older than 6 months);
  3. Register of directors (or any other document showing the company’s legal representatives) (Not older than 6 months);
  4. Passport copy of company’s legal representatives and UBO (Ultimate Beneficial Owners – all natural persons that own or control, directly or indirectly more than 25% of the Company): Legible ID copy in color within validity period;
  5. Take into consideration that for each of the company UBOs that own or control more than 25% of the company you must also provide proper identity documents (Legible ID copy in color within validity period)!

  6. Utility bill that can be used as proof of address for company’s legal representatives (Not older than 6 months).

Get the List of Shops from Mirakl Marketplace

Mirakl Marketplace Platform exposes an API which Smart2Pay can call to pull the list of newly created shops, using an action based on GET HTTP request. The response will contain a shop list in JSON format that returns all the shops that were created or updated after last_updated_date

Only a limited amount of details for each shop will be provided.

Definition: GET /api/shops?shop_ids=…&premium=…&state=…&updated_since=…&paginate=…

Where:
  • shop_ids – List of shop ids separated with comma. Limited to 100 values;
  • premium – Boolean : “ALL” (default), “FALSE” or “TRUE”. If TRUE (FALSE) returns only offers of premium (not premium) shop;
  • state – State of the shop;
  • updated_since – Filter all the shop that have been modified since the value of this parameter;
  • paginate – [optional] Control the pagination usage. Default : true.

Request Model:

GET /api/shops/{last_updated_date}
Authorization: Basic Pre-shared-APIKEY

Not all fields are mandatory in the above request! If Mirakl Marketplace does not provide all the necessary data, the shop representative will fill the missing fields in Smart2Pay platform. Another method of providing missing or incomplete data is by adding it in the additional fields and document fields in your Mirakl back office, if the initial configuration allows you to.

Once Smart2Pay identifies a newly created shop, it creates an account in Smart2Pay KYC platform for the shop representative and sends an email asking to finalize the application (e.g. fill missing info, upload documents, sign the online contract).

Company Documents

After you have completed all the necessary details for the company profile, you need to wait for Smart2pay approval of the company. After our team will review and approve your company details and documents, you will receive a confirmation message. Your company will be activated and you may start in completing the technical integration, that will get you closer to a full integration of your site with our platform.

Go to Company documents tab where you will see all the required documents that you need to provide us in order for us to generate your merchant agreement.

4

The documents that you necessarily need to provide us are the following: Bank statement, Company certificate / Incorporation certificate, Register of directors (or any other document showing individuals with signing rights), the passport copy of company’s legal representatives and utility bill that can be used as proof of address for company’s legal representatives. In case there are any other documents not covered by the above document requirements, you may upload them at point 6 in the form.

4

Once you uploaded the documents, you can click on the Submit Documents 26 button and wait for our team to review and approve the documents that you have sent.

4

If our team, while reviewing your documents, has agreed that you need to provide more information or the information is incomplete or outdated (like: expired passports or proof of address) they will reject your document. The reason will be stated in the form.

4

You will also receive a rejection message in your Inbox message stating the reason of rejection.

4

After resolving the issues involved in the rejection of the document, you will have to delete first the document from the Company Documents tab and then you will have to upload the newly modified document.

You will also receive a message in your Inbox message stating which document has been deleted and the person who has deleted the document.

4

After our team will review and approve the documents that you have sent, the Merchant agreement document is generated, in order to complete this step, all involved parties should accept it. The company representative that has the right to sign all company contracts will be notified via email in order to review and accept the merchant agreement.

4

You will also receive a message in your Inbox message stating that the company representative that has the right to sign company contracts has been notified via email.

4

Now that the company and all the documents have been approved and the merchant agreement has been accepted by all parties involved your company, your company will be approved. You will also receive your dashboard credentials and relevant API keys.

Once your company is activated, you may start in completing the technical integration, that will get you closer to a full integration of your site with our platform.

4

Messages

In the Messages tab from the main menu you can see all your messages received or sent by you and you can send messages to our team concerning the different problems that you encounter.

Through the Messages tab we offer our own messaging framework from within the program, to improve and facilitate the communication between us and our business partners. It is very useful because it displays all your notifications, keeps a track of your messages and you can always see the history of conversations between certain users and our team. Its a simple system to use and understand, it saves time with automated responses but it also manages all the conversations in the Inbox tab.

4

When you access the Inbox tab, the search Filters section is collapsed. In order to expand it, just click on the Show filters. You can search messages depending on the sender and receiver. Once you enter the desired filters just click on the Filter 26 button.

4

Capture scenarios for Paypal

Capture Scenarios Response Status Description Notification Status Description
The transaction has been fully captured.

Only payments with “Authorized” status (9) can be captured.
Final Status: 2 Success Final Notification Status: 2 Success
The payment has been partially captured.

Only payments with “Authorized” status can be partially captured. The payment has been sent out to be partially captured, but the payment gateway has not yet confirmed that the payment is successful.
Final Status: 35 Partially Captured Final Notification Status: 35 Partially Captured
Capture Failed Scenarios Return Code Description
The transaction could not be captured.

The transaction is not in an Authorized status (it has already been fully Captured or Partially Captured).
Return Code: 17 Payment is invalid

For a complete list of all the possible Return Code IDs go to our section GlobalPay Return Codes.

See the request – response examples for the above possible scenarios:

  • Success Status

    A payment can only be captured if it has an Authorized status. Once the payment has an Authorized status (9), you can capture either the full amount or a partial amount of the initial authorized amount for the transaction.

    A 200 HTTP response (OK) is returned if the request was completed successfully.

    Full capture means you capture the entire authorized amount for the initial transaction.

    Request:

    POST https://paytest.smart2pay.com/v1/payments/4813936/capture
    Authorization: Basic MzAxNTE6V05ydTJ5WnJpR2RtNVVMZWt4dFM4cHprUXNRSmdYYTZBZnlnT3FXZXcvNlRBYzNYK1A=

    Response:

    HTTP/1.1 200 OK
    Content-Type: application/json; charset=utf-8
    
    {
        "Payment": {
            "ID": 4813936,
            "SkinID": null,
            "ClientIP": null,
            "Created": "20191121152453",
            "MerchantTransactionID": "s2ptest_p1",
            "OriginatorTransactionID": null,
            "Amount": 100,
            "Currency": "EUR",
            "CapturedAmount": "100",
            "ReturnURL": "http://demo.smart2pay.com/redirect.php",
            "Description": null,
            "MethodID": 94,
            "MethodOptionID": null,
            "IncludeMethodIDs": null,
            "ExcludeMethodIDs": null,
            "PrioritizeMethodIDs": null,
            "SiteID": 30201,
            "NotificationDateTime": "20191121152731",
            "Customer": null,
            "BillingAddress": {
                "ID": 452,
                "City": null,
                "ZipCode": null,
                "State": null,
                "Street": null,
                "StreetNumber": null,
                "HouseNumber": null,
                "HouseExtension": null,
                "Country": "ES"
            },
            "ShippingAddress": null,
            "Articles": null,
            "Details": null,
            "ReferenceDetails": null,
            "CustomParameters": null,
            "PreapprovalID": null,
            "Status": {
                "ID": 2,
                "Info": "Success",
                "Reasons": null
            },
            "Fraud": null,
            "MethodTransactionID": null,
            "TokenLifetime": 10,
            "Capture": null,
            "PreapprovalDetails": null,
            "RedirectURL": "https://apitest.smart2pay.com/Home?PaymentToken=917D36F62AAA2BE344A324E612A0B5CC.4813936"
        }
    }

    We will notify you about the new status of the payment to the Notification URL you setup in the Merchant Dashboard. The format of the received notification has the same structure as the response of the initial request.

    You need to respond with HTTP code 204 (No Content)!

    Payment notification format:

    Authorization: Basic MzAyMDE6aEo1Um9iWXg5cjdGZk53Q3ZIWTlMWEhxcXIrRkV6cmM3YUp2UVFrNEdhejFtZzdSeXk=
    
    {
        "Payment": {
            "ID": 4813936,
            "SkinID": null,
            "ClientIP": null,
            "Created": "20191121152453",
            "MerchantTransactionID": "s2ptest_p1",
            "OriginatorTransactionID": null,
            "Amount": 100,
            "Currency": "EUR",
            "CapturedAmount": "100",
            "ReturnURL": "http://demo.smart2pay.com/redirect.php",
            "Description": null,
            "MethodID": 94,
            "MethodOptionID": null,
            "IncludeMethodIDs": null,
            "ExcludeMethodIDs": null,
            "PrioritizeMethodIDs": null,
            "SiteID": 30201,
            "NotificationDateTime": "20191121152731",
            "Customer": null,
            "BillingAddress": {
                "ID": 452,
                "City": null,
                "ZipCode": null,
                "State": null,
                "Street": null,
                "StreetNumber": null,
                "HouseNumber": null,
                "HouseExtension": null,
                "Country": "ES"
            },
            "ShippingAddress": null,
            "Articles": null,
            "Details": null,
            "ReferenceDetails": null,
            "CustomParameters": null,
            "PreapprovalID": null,
            "Status": {
                "ID": 2,
                "Info": "Success",
                "Reasons": null
            },
            "Fraud": null,
            "MethodTransactionID": null,
            "TokenLifetime": 10,
            "Capture": null,
            "PreapprovalDetails": null,
            "RedirectURL": "https://apitest.smart2pay.com/Home?PaymentToken=917D36F62AAA2BE344A324E612A0B5CC.4813936"
        }
    }

  • Partially Captured Status

    Partial capture means you have the possibility to capture a smaller amount than the one from the initial authorized transaction. Partial capture is used when you have sent at least part of the order to the consumer and want to capture the amount for the item(s) that have been shipped.

    You can perform only one partial capture for an authorized transaction with the limitation that the amount of the partial capture to be smaller or equal than the initial authorized amount.

    Specify only the captured amount parameter in the query string, in order to partially capture the payment, like in the below example:

    Request:

    POST https://paytest.smart2pay.com/v1/payments/4813937/capture?amount=50
    Authorization: Basic MzAyMDE6aEo1Um9iWXg5cjdGZk53Q3ZIWTlMWEhxcXIrRkV6cmM3YUp2UVFrNEdhejFtZzdSeXk=

    Response:

    HTTP/1.1 200 OK
    Content-Type: application/json; charset=utf-8
    
    {
        "Payment": {
            "ID": 4813937,
            "SkinID": null,
            "ClientIP": null,
            "Created": "20191121153210",
            "MerchantTransactionID": "s2ptest_p2",
            "OriginatorTransactionID": null,
            "Amount": 100,
            "Currency": "EUR",
            "CapturedAmount": "50",
            "ReturnURL": "http://demo.smart2pay.com/redirect.php",
            "Description": null,
            "MethodID": 94,
            "MethodOptionID": null,
            "IncludeMethodIDs": null,
            "ExcludeMethodIDs": null,
            "PrioritizeMethodIDs": null,
            "SiteID": 30201,
            "NotificationDateTime": "20191121153324",
            "Customer": null,
            "BillingAddress": {
                "ID": 452,
                "City": null,
                "ZipCode": null,
                "State": null,
                "Street": null,
                "StreetNumber": null,
                "HouseNumber": null,
                "HouseExtension": null,
                "Country": "ES"
            },
            "ShippingAddress": null,
            "Articles": null,
            "Details": null,
            "ReferenceDetails": null,
            "CustomParameters": null,
            "PreapprovalID": null,
            "Status": {
                "ID": 35,
                "Info": "PartiallyCaptured",
                "Reasons": null
            },
            "Fraud": null,
            "MethodTransactionID": null,
            "TokenLifetime": 10,
            "Capture": null,
            "PreapprovalDetails": null,
            "RedirectURL": "https://apitest.smart2pay.com/Home?PaymentToken=387EE786392FE554A86CA9E3F3EF1E09.4813937"
        }
    }

    We will notify you about the new status of the payment to the Notification URL you setup in the Merchant Dashboard. The format of the received notification has the same structure as the response of the initial request.

    You need to respond with HTTP code 204 (No Content)!

    Payment notification format:

    Authorization: Basic MzAyMDE6aEo1Um9iWXg5cjdGZk53Q3ZIWTlMWEhxcXIrRkV6cmM3YUp2UVFrNEdhejFtZzdSeXk={
        "Payment": {
            "ID": 4813937,
            "SkinID": null,
            "ClientIP": null,
            "Created": "20191121153210",
            "MerchantTransactionID": "s2ptest_p2",
            "OriginatorTransactionID": null,
            "Amount": 100,
            "Currency": "EUR",
            "CapturedAmount": "50",
            "ReturnURL": "http://demo.smart2pay.com/redirect.php",
            "Description": null,
            "MethodID": 94,
            "MethodOptionID": null,
            "IncludeMethodIDs": null,
            "ExcludeMethodIDs": null,
            "PrioritizeMethodIDs": null,
            "SiteID": 30201,
            "NotificationDateTime": "20191121153324",
            "Customer": null,
            "BillingAddress": {
                "ID": 452,
                "City": null,
                "ZipCode": null,
                "State": null,
                "Street": null,
                "StreetNumber": null,
                "HouseNumber": null,
                "HouseExtension": null,
                "Country": "ES"
            },
            "ShippingAddress": null,
            "Articles": null,
            "Details": null,
            "ReferenceDetails": null,
            "CustomParameters": null,
            "PreapprovalID": null,
            "Status": {
                "ID": 35,
                "Info": "PartiallyCaptured",
                "Reasons": null
            },
            "Fraud": null,
            "MethodTransactionID": null,
            "TokenLifetime": 10,
            "Capture": null,
            "PreapprovalDetails": null,
            "RedirectURL": "https://apitest.smart2pay.com/Home?PaymentToken=387EE786392FE554A86CA9E3F3EF1E09.4813937"
        }
    }

  • Return Code: 17 – Payment is invalid

    The transaction could not be captured. The transaction is not in an Authorized status. You can receive this response when the payment you want to Capture is not Authorized or when the payment has already been Captured.

    Request:

    POST https://paytest.smart2pay.com/v1/payments/4813935/capture
    Authorization: Basic MzAxNTE6V05ydTJ5WnJpR2RtNVVMZWt4dFM4cHprUXNRSmdYYTZBZnlnT3FXZXcvNlRBYzNYK1A=

    Response:

    HTTP/1.1 400 Bad Request
    Content-Type: application/json; charset=utf-8{
        "Payment": {
            "ID": 4813935,
            "SkinID": null,
            "ClientIP": null,
            "Created": "20191121151256",
            "MerchantTransactionID": "s2ptest_paypal2",
            "OriginatorTransactionID": null,
            "Amount": "100",
            "Currency": "EUR",
            "CapturedAmount": null,
            "ReturnURL": "http://demo.smart2pay.com/redirect.php",
            "Description": null,
            "MethodID": 94,
            "MethodOptionID": null,
            "IncludeMethodIDs": null,
            "ExcludeMethodIDs": null,
            "PrioritizeMethodIDs": null,
            "SiteID": 30201,
            "NotificationDateTime": "20191121151441",
            "Customer": null,
            "BillingAddress": null,
            "ShippingAddress": null,
            "Articles": null,
            "Details": null,
            "ReferenceDetails": null,
            "CustomParameters": null,
            "PreapprovalID": null,
            "Status": {
                "ID": 2,
                "Info": "Success",
                "Reasons": [
                    {
                        "Code": "17",
                        "Info": "Payment is invalid - 4813935"
                    }
                ]
            },
            "Fraud": null,
            "MethodTransactionID": null,
            "TokenLifetime": null,
            "Capture": null,
            "PreapprovalDetails": null,
            "RedirectURL": null
        }
    }

PayPal Test Data

For PayPal payment method there aren’t any test data available, but you can see how it works with the payment flow given below.

PayPal Payment Flow

  1. The Customer selects his preferred currency from the list and enters his email address.1 Enter email
  2. The customer logs in to his PayPal account by entering his email address and password.1 Account login
  3. The Customer reviews the payment information and confirms the payment.1 Payment details
  4. Upon completion of the payment flow the customer is redirected back to your ReturnURL.1 Return page when the redirection status is a success

Company details

The first part that needs to be covered for a successful onboarding at Smart2Pay is signing up your company! This section provides insights on how to successfully complete the Company Details form. Please keeep in mind, that all the fields are mandatory and we encourage you to give us the necessary information with utmost consideration!

Access the OnBoarding platform by clicking on the Go button from the Company Details form in the Welcome Page.

4

On the OnBoarding platform you will need to provide us with documentation requirements for customer and company, upload necessary company documents, accept the merchant agreement and request the company activation in order for your company to be approved and be ready to takle the live transactions.

We’ll take step by step in filling all the necessary forms and you have the possibility to always check your boarding status in the Overview tab. Start by filling in the Company details form and provide as many details. Don’t forget to save the changes.

4

In the Company tab you will need to provide us with documentation requirements for customer and company, like: Company details and address, Company contacts, Company bank details and also Stakeholders information.

In the case that your business isn’t registered for VAT, in the EEC VAT Number filed you will click on the Not Applicable sign.

In order for us to understand and to know more about your business and services, please provide as much information about your products or services in the Business Model field.

If you have more than one website where you want to implement our services, you need to add each one of them by using the ADD ANOTHER SITE 26 button.

4

In order to complete the Contact Details form, you will have to choose from one of the roles provided in the form: Financial Contact, Technical Contact or Support Contact, according to your role within the company. Click on the appropriate button and add the desired contact type.

4

After choosing the specific role within the company, please provide the necessary details by which a person can contact you: first and last name and email address. For a more accurate and efective communication, you can give us more than one company contact.

4

You will also need to provide the current headquarters address for your company, like: Street number, Postcode / Zipcode, City /State, Phone / Fax, and Country of establishment.

4

In the Company Bank Details you will have to provide information related to your Bank, like: Bank Name, Account Holder, Account Currency, IBAN, Account Number and SWIFT. In case you dont’t have the complete information, please contact your Bank for a complete answer.

4

The Stakeholders form must contain details of each Company Representative with signing rights or/and Ultimate Beneficial Owner that owns or controls, directly or indirectly more than 25% of the Company.

4

Add a Company representative and fill in the necessary information, like: their signing right (click only if the person has the right to sign all company contracts), Legal Name, Email, Date of Birth, and their complete address. In order to add a new company representative just use the ADD button.

4

Add an Ultimate Beneficial Owner / Share Holder and fill in the necessary information, like: Legal Name, Email, Percentage of ownership of the company, Date of Birth, and their address. In order to add a new Beneficial Owner / Share Holder just use the ADD button.

4

After you have completed all the necessary fields, just click on the Save Changes button and request the company activation. You may place a request to activate the company every 24 hours.

The Request Activation button will only appear if the Company representative form is completed with the necessary information!

4

You will now have access to the Company documents where you will have to provide us the relevant official documents.

Reset Password

In case you forgot your password or you want to reset it, click on the Forgot your password link form the Sign In form.

5

Enter your email address and click on the Send Verification Code.

5

Enter the verification code sent to your email address in the correct field in order to verify it.

5

After the email address is successfully verified click on the Continue button.

5

You need to enter a new password and to confirm it. Click on the Continue button in order to complete the sign in process.

5

You are redirected to the Sign In page, where you enter your email address and the newly updated password.

5

Single Sign-On Connection

Upon the creation of your Onboarding account we have also created for you a Documentation account, a Dashboard TEST account and also a Dashboard LIVE account with the same user name and password.

This means that you can access all of the Smart2pay platforms with the same email address and password that you provided when created the Onboarding account. Sign-in to the Smart2Pay system will be very easy and quick. One set of credentials to four different platforms:

Each platform decides if a user has access rights to login in the application and what roles are defined. This way, if a user has an account in Onboarding Platform and is approved for live account, he will be able to use the same password for all accounts.

Registration Process

With an easy to manage and secure registration process, it will only take a little time for you to manage the onboarding process!

After clicking the Sign up button from the top of the page you will be redirected to a Getting Started with Smart2Pay page where you will find the necessary steps you will need to make for a successful onboarding process!

Signing up your company is the first part that needs to be covered for a successful onboarding at Smart2Pay.

REgistration process step 1

You will need to cover the following:

  • Company Details: access the provided URL and provide us with the basic information about your company and the relevant official documents;
  • Accept Merchant Agreement: you need to the accept merchant agreement we will send you;
  • Request company activation: you will send a digital request to activate your company on our systems;
  • Company Approved: If all company details and documents are validated we will approve your company and give you your dashboard credentials and relevant API keys.

The second part that needs to be coverd is completing the technical integration, that will get you closer to a full integration of your site with our platform.

5

You will need to cover the following:

  • Integrate the Smart2Pay REST API: follow our Online Documentation;
  • Set up and code the Notification URL: follow the steps here: Payment Notification;
  • Get familiar with our TEST Merchant Dashboard;
  • Company Approved: your company is approved and you have completed the technical integration process. Fine tune your integration and GO LIVE!

In order for you to register a new account for the Onboarding system click on the Sign Up button from the top of page or browse the following URL: https://www.smart2pay.com/microsoft/signup/.

The registration process involves providing us your email address and a few account details, like: password, country/region, domain, first name, last name and job title. After entering the required information click on the Create account button.

  • Email address: enter your email address that you will use to access all of the Smart2pay platforms;
  • Password: enter a new password for your newly created account and then confirm it;
  • Country/Region: select your country from the provided drop-down list;
  • Domain: enter your website domain (wwww.example.com);
  • First Name: enter your first name;
  • Last Name: enter your last name;
  • Job Title: specify your job title.

5

By clicking on the Create button a new user has been created for all of the Smart2pay platforms. You can access all of the Smart2pay platforms with the same email address and password that you have chosen. For more information regarding Smart2Pay platforms go to Single Sign-On connection.

Once you finnished creating your account, you will be redirected to a Getting Started with Smart2Pay page where you will be registered with your newly created user. All you need to do now is follow the steps we outlined for a successful onboarding process!

5

Company Onboarding

Onboarding is the tool that you need in order that the onboarding process to be quick and accurate and to ensure a long-term and successful business partnership. We have developed an intuitive and secure online system that it will allow merchants for an automated and quick onboarding process.

It will only take a little time for you to manage the onboarding process. We have strive to minimize the long and tiresome process during merchant boarding and the ongoing challenges of completing forms and fields while building the merchant’s and company’s profile.

Get a list of Captures of a specific card payment

You can get a list of all partial captures for a specific direct card payment by using an action based on GET HTTP request. Please be aware that only a limited amount of details for each capture will be provided.

Definition: GET /v1/payments/{id}/captures

Where:
  • {id} – GlobalPay Payment ID

Request:

GET https://securetest.smart2pay.com/v1/payments/202247/captures
Authorization: Basic MTAxMDpnYWJp

Response:

HTTP/1.1 200 OK
Content-Type: application/json; charset=utf-8

{
  "Captures": [
  {
    "ID": 266,
    "SiteID": 1010,
    "Created": "20161205095522",
    "MerchantTransactionID": "s2ptest_h22",
    "OriginatorTransactionID": null,
    "PaymentID": 202247,
    "Amount": 500,
    "Currency": "EUR",
    "Status": {
      "ID": 2,
      "Info": "Success",
      "Reasons": []
      }
    },
    {
    "ID": 267,
    "SiteID": 1010,
    "Created": "20161205095522",
    "MerchantTransactionID": "s2ptest_h23",
    "OriginatorTransactionID": null,
    "PaymentID": 202247,
    "Amount": 2000,
    "Currency": "EUR",
    "Status": {
      "ID": 4,
      "Info": "Failed",
      "Reasons": [
        {
          "Code": "2209",
          "Info": "Capture.Amount exceeds authorization amount"
          }
        ]
      }
    }
  ]
}

You can also get information for a specific capture of a direct card payment by using an action based on GET HTTP request.

Definition: GET /v1/payments/{id}/capture/{id}

Where:
  • payments/{id} – GlobalPay Payment ID
  • capture/{id} – The ID of the specific capture

Request:

GET https://securetest.smart2pay.com/v1/payments/202247/captures/266
Authorization: Basic MTAxMDpnYWJp

Response:

HTTP/1.1 200 OK
Content-Type: application/json; charset=utf-8

{
    "Capture": {
        "ID": 266,
        "SiteID": 1010,
        "Created": "20161205095522",
        "MerchantTransactionID": "s2ptest_h22",
        "OriginatorTransactionID": null,
        "PaymentID": 202247,
        "Amount": 500,
        "Currency": "EUR",
        "Status": {
            "ID": 2,
            "Info": "Success",
            "Reasons": []
        }
    }
}

Smart2Pay Mirakl Plugin for Marketplaces

Looking for one marketplace-focused solution, which is also fully compliant with the PSD2 regulatory requirements?

You’re in the right place!

Our solution for marketplace platforms has been designed to seamlessly integrate with Mirakl’s e-marketplace products and allows for fully customizable marketplace onboarding and split payments processes.

Mirakl Marketplace Platform is one of the most modern, flexible, and feature-rich Marketplace solution available, with years of best practices built in and also offering clients unparalleled expertise from their team of 30+ business, technical, and operational marketplace experts.

Not using Mirakl? No problem: we also offer Marketplace APIs to help you manage marketplace payments. More info here: https://docs.smart2pay.com/category/marketplace-api/.

The solution provides access to credit card payments and alternative payment methods for a Marketplace in a simple yet reliable legal and technical setup.

We are committed to help marketplaces run their business without worrying about the associated regulatory requirements from the new PSD2 directive which have come into force beginning 2018.

Smart2Pay solution ensures that all of the participating shops as well as the marketplace will benefit of a seamlessly onboarding process, reliable and secure transaction processing, reconciliation to the penny and prompt settlements.

The Mirakl plugin features:

  • automated import of all the the newly created shops and required documents from Mirakl to Smart2pay platform – leading to a fully customizable and seamless onboarding process.
  • automated shop approval notification which contains all info you need to start processing right away. More info here: Mirakl Notification for Shop Approval.
  • automated import of all payment instructions to marketplace participants and handling all the commission fees for the marketplace operator. Please discuss with our technical support the setup of your Mirakl voucher generation process.
  • supporting a wide range of payment methods from credit card payment to alternative payment methods with an all-in-one unified API and settlement flow. 

Here is how it works:

1 Marketplace - Processes and Systems

The technical process (KYC Flow) with all the necessary steps is described next:

    All KYC processes related to marketplace onboarding of the participating shops take place in Mirakl KYC system. All KYC processes related to payments take place in Smart2Pay KYC system.

  • Mirakl Marketplace accepts a new shop on its platform and creates an entry in its database.
  • Mirakl Marketplace exposes an API which Smart2Pay KYC platform calls several times per day to pull information about the newly created shops.
  • Smart2Pay KYC platform pulls all available information about the shop (ShopID, Alias, shop representative e-mail, documents etc.). If all the required information is not available, the merchant representative will have to fill it in on Smart2Pay KYC platform.
  • Smart2Pay will create an account for the shop in the Smart2Pay KYC platform and send an e-mail to the shop representative with the login details.
  • The shop representative will fill in any missing company related data and upload KYC/UBO specific documentation.
  • The shop representative signs online the Merchant agreement for Payment processing.
  • Smart2Pay Risk team reviews the company.
  • In case of approval, a siteID is generated in the Smart2Pay platform.
  • Smart2Pay will do a push notification to a page designated by Mirakl with the following info ShopID, SiteID, APIKEY. The last two parameters need to be used when calling Smart2Pay REST API when processing the payments. Mirakl Marketplace needs to respond with HTTP return code 204 (No content) to the POST notification.

Please contact our support team at support@smart2pay.com to schedule a more in depth demo on how we help your marketplace to process payments and perform split settlements.

Exemptions to Strong Customer Authentication (SCA)

With the Second Payment Services Directive (PSD2), the new set of laws and regulations for payment services in the European Union (EU) and the European Economic Area (EEA), Strong Customer Authentication (SCA) will be the requirement for all online transactions. However, there are still some exemptions from this rule where specific types of low-risk payments may be still exempted from Strong Customer Authentication (SCA).

Please keep in mind that banks can choose not to honor these exemptions and you need to be prepared to handle a SCA challenge even if the transactions has been submitted under one of the below exemptions.

The most relevant SCA exemptions are:

  • MIT
  • Low Risk / TRA
  • Low Value
  • Secure Corporate payments
  • Trusted Beneficiaries

1. Merchant Initiated Transaction (MIT)

MITs are payment transactions that are not initiated by the payer but by the payee only and are not subject to strong customer authentication (SCA) to the extent that these transactions are initiated without any interaction or involvement of the payer. MIT transactions are subjected to SCA except when a mandate is signed by the client. For example, SEPA Direct Debits are initiated by the merchant but have a direct debit mandate signed by the end customer. Thus, SCA is not applicable in this case and there are no restrictions to the frequency or the amount (obtained scheme transaction identifier needs to be provided for use in the subsequent transactions).

Adjustment of initial Authorisation allows merchants to increase or decrease the authorised amount after the initial authorisation has taken place is also MIT. This enables tipping.

2. TRA – Transactional Risk Analysis

SCA can be deactivated for online payments between €30 and €500, depending on the payment providers fraud rates (see table below). There are no low-risk exemptions for transactions over €500. Merchants have to rely on a payment service provider (e.g. an acquirer) to act upon their request. In addition, the test to trigger the exemption rests with whether the PSP satisfies the prescribed conditions, not the merchants themselves. Smart2Pay keeps a very low fraud rate by using state of the art anti-fraud solutions such as RedShield, Machine Learning algorithms and by working with low risk acquiring banks which have very good fraud scores.

Adding additional information in the payment request will maximize the probability of getting the exemption by Issuers. The chargeback liability shifts to the issuer as well.

Regulatory Technical Standards (RTS), that payment providers need to take into account through real-time risk analysis, covers the following:

  • abnormal spending or behavioral pattern of the payer;
  • unusual information about the payer’s device/software access;
  • malware infection in any session of the authentication procedure;
  • known fraud scenario in the provision of payment services;
  • abnormal location of the payer;
  • high-risk location of the payee.

The fraud rate limits for payment providers are being applied as follows:

Fraud rate and amount limits
Fraud transaction rate Amount limits
Up to 0.01% Up to €500
Up to 0.06% Up to €250
Up to 0.13% Up to €100

3. Low value: Small amounts less than 30 EUR

For a transaction of less than 30 EUR and up to 100 EUR accumulated or up to 5 transactions since the last SCA. Beyond 100 EUR or beyond 5 unauthenticated transactions, a new SCA is required. Keep in mind that since the information needed to validate these stipulations is only available to the issuing bank, you will still need to confirm if SCA is required on all transactions that might fall into this exemption category.

4. Payment to a trusted beneficiary

Customers can add their preferred online sellers to a list of trusted beneficiaries held by the issuing bank, so that they don’t required to authenticate for each new payment. Please instruct your customers if possible to add your business to the white-list at their bank.

5. Secure Corporate payments

SCA can de deactivated for corporate card payments made through secure processes and protocols initiated by businesses and not available for consumers. Payments that are included in this category are those made through central travel accounts, lodged cards, virtual cards, and secure corporate cards, like the ones used in a corporate travel management system.

See below an example of a MerchantInitiatedTransaction (MIT) transaction type:

Request:

POST https://securetest.smart2pay.com/v1/payments
Authorization: Basic MTAxMDpnYWJp

{
  "Payment": {
    "MerchantTransactionID": "s2ptest_m10",
    "Amount": 1000,
    "Currency": "EUR",
    "ReturnURL": "http://demo.smart2pay.com/redirect.php",   
    "Card": {
      "HolderName": "John Doe",
      "Number": "4548812049400004",
      "ExpirationMonth": "05",
      "ExpirationYear": "2021",
      "SecurityCode": "123"     
      },
     "3DSecure": true,
     "DeviceInfo": {
      "BrowserAcceptHeader": "application/json, text/javascript, */*; q=0.01",
      "BrowserUserAgent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/76.0.3809.132 Safari/537.36",
      "BrowserJavaEnabled": false,
      "BrowserJavaScriptEnabled": true,
      "BrowserLanguage": "ro-RO",
      "BrowserColorDepth": "24",
      "BrowserScreenHeight": "1080",
      "BrowserScreenWidth": "1920",
      "BrowserTimeZone": "-180"
    },         
    "ScaExemption": "MerchantInitiatedTransaction"
  }
}

There are 2 possible response scenarios:

  • Exemption is approved: The cardholder’s bank receives the request, assesses the risk level of the transaction, and approves the exemption and the SCA is no more necessary. The payment has status Authorized / Captured in the response.

    Response:

    HTTP/1.1 201 Created
    Content-Type: application/json; charset=utf-8
    
    {
      "Payment": {
        "ID": 172498,
        "ClientIP": null,
        "SkinID": 200,
        "Created": "20190913075654",
        "MerchantTransactionID": "s2ptest_m10",
        "OriginatorTransactionID": null,
        "Amount": "100",
        "Currency": "EUR",
        "CapturedAmount": "0",
        "ReturnURL": "http://demo.smart2pay.com/redirect.php",
       "Description": "silviu test",
        "StatementDescriptor": "Static Description",
        "MethodID": 6,
        "MethodOptionID": null,
        "SiteID": 1010,
        "NotificationDateTime": null,
        "Customer": null,
        "BillingAddress": null,
        "ShippingAddress": null,
        "Articles": null,
        "Card": {
          "HolderName": "Test Person",
          "Number": "VISA-0004",
          "ExpirationMonth": "05",
          "ExpirationYear": "2021"
        },
        "CreditCardToken": null,
        "Status": {
          "ID": 9,
          "Info": "Authorized",
          "Reasons": []
        },
        "MethodTransactionID": null,
        "AuthorizationCode": "971896",
        "PaymentTokenLifetime": 10,
        "Capture": false,
        "RedirectURL": null,
        "3DSecure": true,
        "3DSecureData": null,   
        "ScaExemption": "MerchantInitiatedTransaction",
        "CardOnFile": null,
        "Fraud": null
      }
    }
    

  • Exemption is rejected: The cardholder’s bank receives the request, assesses the risk level of the transaction, and rejectes the exemption and the SCA is mandatory. The payment has status Open in the response. The customer accesses the RedirectURL form the response and is redirected to the 3D Secure page to authenticate the transaction.

    Response:

    HTTP/1.1 201 Created
    Content-Type: application/json; charset=utf-8
    
    {
      "Payment": {
        "ID": 172498,
        "ClientIP": null,
        "SkinID": 200,
        "Created": "20190913075654",
        "MerchantTransactionID": "s2ptest_m10",
        "OriginatorTransactionID": null,
        "Amount": "100",
        "Currency": "EUR",
        "CapturedAmount": "0",
        "ReturnURL": "http://demo.smart2pay.com/redirect.php",
        "Description": "silviu test",
        "StatementDescriptor": "Static Description",
        "MethodID": 6,
        "MethodOptionID": null,
        "SiteID": 1010,
        "NotificationDateTime": null,
        "Customer": null,
        "BillingAddress": null,
        "ShippingAddress": null,
        "Articles": null,
        "Card": {
          "HolderName": "Test Person",
          "Number": "VISA-6852",
          "ExpirationMonth": "05",
          "ExpirationYear": "2020"
        },
        "CreditCardToken": null,
        "Status": {
          "ID": 1,
          "Info": "Open",
          "Reasons": []
        },
        "MethodTransactionID": null,
        "AuthorizationCode": null,
        "PaymentTokenLifetime": 10,
        "Capture": false,
        "RedirectURL": "http://85.186.26.139:58938/v1/Payments/FillCardDetails?PaymentToken=172500.1006.5CD50C1B1707FB83EAA7655F9B21D42E9&SkipLandingPage=true",
        "3DSecure": true,
        "3DSecureData": null,   
        "ScaExemption": "MerchantInitiatedTransaction",
        "CardOnFile": null,
        "Fraud": null
      }
    }

Card on file transactions (COF)

A card-on-file transaction is a transaction where a cardholder authorizes a merchant to store the cardholder’s payment details, and also authorizes that same merchant to bill the cardholder’s stored account.

Transactions are either initiated by a consumer, or by a merchant based on the instructions given to them by the consumer. It is possible for a merchant to initiate a transaction without consumer action.

Consumer-Initiated Transactions (CIT): where the consumer is present and provides their payment credentials. This can be through a terminal in-store, or online through a checkout experience. A consumer-initiated transaction contains proof (such as track data, chip data with cryptograms, cardholder verification methods, and online through the presence of Card Verification Value 2 (CVV2) or Verified by Visa (VBV) authentication data) that the cardholder was involved in the transaction.

Merchant-Initiated Transactions (MIT): a transaction that depends to a previous consumer-initiated transaction, but it is conducted without the consumer being present and without any additional cardholder validation performed. It’s a transaction based on a previous agreement between the consumer and the merchant for a recurring product or service or an automated billing or unscheduled transactions etc.

Don’t miss out the below examples with CardOnFile object used for the initial transaction and also for a subsequent one.

Card On File (COF) Transaction Types
Type Description
Installments Deferred payment. Always referring to an INDIVIDUAL purchase, the amount of the several transactions is fixed, and with a definite time interval.
Recurring Recurring payment. The amount of transactions can be fixed or variable, and with a defined time interval.
Reauthorization Normally before partial shipments. Also, when the client extends the stay in hotel / rental of the vehicle or when, having an estimated authorization, the final amount is requested (“settlement”).
Resubmission Original denied because of “balance”; only for certain sectors of activity (for more details check the regulations of the brands) and with a maximum number of days from the purchase. Relevant example:”Transport”.
Delayed Those that happen after the transaction for services rendered / used unknown at the beginning. (Minibar, vehicle damage, fines ….)
Incremental When additional services are incurred during the contract period.
No Show When the merchant charges services to which the owner committed, but then failed to comply with the agreed terms. Relevant example: unattended reservations at hotels without cancellation.
Other The rest of COF transactions that do not fit with any of the previous ones.
  • For an initial transaction from a subsequent payments chain the IsInitial parameter from CardOnFile object needs to be set to true.

    Request:

    POST https://securetest.smart2pay.com/v1/payments
    Authorization: Basic MTAxMDpnYWJp
    
    {
      "Payment": {
      "MerchantTransactionID": "s2ptest_11a",
      "Amount": "100",
      "Currency": "EUR",
      "ReturnURL": "http://demo.smart2pay.com/redirect.php",
      "Description": "Test Description",
      "StatementDescriptor1": "Dynamic Test Description",
      "Card": {
        "HolderName": "Test Person",
        "Number": "4012005162084369",
        "ExpirationMonth": "05",
        "ExpirationYear": "2020",
        "SecurityCode": "123",
        "RequireSecurityCode": true
        },
      "Capture": false,
      "GenerateCreditCardToken": false,
      "PaymentTokenLifetime": 10,
      "3DSecure": true,
      "DeviceInfo": {
        "BrowserAcceptHeader": "application/json, text/javascript, */*; q=0.01",
        "BrowserUserAgent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/76.0.3809.132 Safari/537.36",
        "BrowserJavaEnabled": false,
        "BrowserJavaScriptEnabled": true,
        "BrowserLanguage": "ro-RO",
        "BrowserColorDepth": "24",
        "BrowserScreenHeight": "1080",
        "BrowserScreenWidth": "1920",
        "BrowserTimeZone": "-180"
        },
      "CardOnFile":{
             "IsInitial": true,
             "TransactionType": "Recurring"
          },
      "Language": "ro-RO",
      "SkinID": 200
      }
    }

    Response:

    HTTP/1.1 201 Created
    Content-Type: application/json; charset=utf-8
    
    {
        "Payment": {
            "ID": 1234,
            "ClientIP": null,
            "SkinID": 200,
            "Created": "20190828091954",
            "MerchantTransactionID": "s2ptest_11a",
            "OriginatorTransactionID": null,
            "Amount": "100",
            "Currency": "EUR",
            "CapturedAmount": "0",
            "ReturnURL": "http://demo.smart2pay.com/redirect.php",
            "Description": "Test Description",
            "StatementDescriptor": "Static Description",
            "MethodID": 6,
            "MethodOptionID": null,
            "SiteID": 1010,
            "NotificationDateTime": null,
            "Customer": null,
            "BillingAddress": null,
            "ShippingAddress": null,
            "Articles": null,
            "Card": {
                "HolderName": "Test Person",
                "Number": "VISA-4369",
                "ExpirationMonth": "05",
                "ExpirationYear": "2020"
            },
            "CreditCardToken": null,
            "Status": {
                "ID": 9,
                "Info": "Authorized",
                "Reasons": []
            },
            "MethodTransactionID": null,
            "AuthorizationCode": "591659",
            "PaymentTokenLifetime": 10,
            "Capture": false,
            "RedirectURL": null,
            "3DSecure": true,
            "DeviceInfo": {
                "BrowserAcceptHeader": "application/json, text/javascript, */*; q=0.01",
                "BrowserUserAgent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/76.0.3809.132 Safari/537.36",
                "BrowserJavaEnabled": false,
                "BrowserJavaScriptEnabled": true,
                "BrowserLanguage": "ro-RO",
                "BrowserColorDepth": "24",
                "BrowserScreenHeight": "1080",
                "BrowserScreenWidth": "19200",
                "BrowserTimeZone": "-180"
            },
            "ScaExemption": null,
            "CardOnFile": {
              "IsInitial": false,
              "TransactionType": "Recurring"
            },
            "Fraud": {
                "Status": "Accept",
                "Score": 31,
                "Reason": "No decision provided"
            }
        }
    }

  • Transaction that depends to the previous consumer-initiated transaction. For a transaction from a subsequent payments chain the IsInitial parameter from CardOnFile object needs to be set to false.For subsequent payments always send in the request the InitialPaymentID parameter in the CardOnFile object.

    Request:

    POST https://securetest.smart2pay.com/v1/payments
    Authorization: Basic MTAxMDpnYWJp
    
    {
      "Payment": {
      "MerchantTransactionID": "s2ptest_12a",
      "Amount": "100",
      "Currency": "EUR",
      "ReturnURL": "http://demo.smart2pay.com/redirect.php",
      "Description": "Test Description",
      "StatementDescriptor1": "Dynamic Test Description",
      "Card": {
        "HolderName": "Test Person",
        "Number": "4012005162084369",
        "ExpirationMonth": "05",
        "ExpirationYear": "2020",
        "SecurityCode": "123",
        "RequireSecurityCode": true
        },
      "Capture": false,
      "GenerateCreditCardToken": false,
      "PaymentTokenLifetime": 10,
      "3DSecure": true,
      "DeviceInfo": {
        "BrowserAcceptHeader": "application/json, text/javascript, */*; q=0.01",
        "BrowserUserAgent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/76.0.3809.132 Safari/537.36",
        "BrowserJavaEnabled": false,
        "BrowserJavaScriptEnabled": true,
        "BrowserLanguage": "ro-RO",
        "BrowserColorDepth": "24",
        "BrowserScreenHeight": "1080",
        "BrowserScreenWidth": "1920",
        "BrowserTimeZone": "-180"
        },
      "ScaExemption": "MerchantInitiatedTransaction",
      "CardOnFile":{
        "IsInitial": false,
        "TransactionType": "Recurring",
        "InitialPaymentID": 1234        
        },
      "Language": "ro-RO",
      "SkinID": 200
      }
    }

    Response:

    HTTP/1.1 201 Created
    Content-Type: application/json; charset=utf-8
    
    {
        "Payment": {
            "ID": 12345,
            "ClientIP": null,
            "SkinID": 200,
            "Created": "20190828091954",
            "MerchantTransactionID": "s2ptest_12a",
            "OriginatorTransactionID": null,
            "Amount": "100",
            "Currency": "EUR",
            "CapturedAmount": "0",
            "ReturnURL": "http://demo.smart2pay.com/redirect.php",
            "Description": "Test Description",
            "StatementDescriptor": "Static Description",
            "MethodID": 6,
            "MethodOptionID": null,
            "SiteID": 1010,
            "NotificationDateTime": null,
            "Customer": null,
            "BillingAddress": null,
            "ShippingAddress": null,
            "Articles": null,
            "Card": {
                "HolderName": "Test Person",
                "Number": "VISA-4369",
                "ExpirationMonth": "05",
                "ExpirationYear": "2020"
            },
            "CreditCardToken": null,
            "Status": {
                "ID": 9,
                "Info": "Authorized",
                "Reasons": []
            },
            "MethodTransactionID": null,
            "AuthorizationCode": "591659",
            "PaymentTokenLifetime": 10,
            "Capture": false,
            "RedirectURL": null,
            "3DSecure": true,
            "DeviceInfo": {
                "BrowserAcceptHeader": "application/json, text/javascript, */*; q=0.01",
                "BrowserUserAgent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/76.0.3809.132 Safari/537.36",
                "BrowserJavaEnabled": false,
                "BrowserJavaScriptEnabled": true,
                "BrowserLanguage": "ro-RO",
                "BrowserColorDepth": "24",
                "BrowserScreenHeight": "1080",
                "BrowserScreenWidth": "19200",
                "BrowserTimeZone": "-180"
            },
            "ScaExemption": "MerchantInitiatedTransaction",
            "CardOnFile": {
              "IsInitial": false,
              "TransactionType": "Recurring",
              "InitialPaymentID": 1234
              },
            "Fraud": {
                "Status": "Accept",
                "Score": 31,
                "Reason": "No decision provided"
            }
        }
    }

3D Secure 2.0 Pass-Through Payments

You can submit a request to authorize payments using authentication data from your own 3D Secure MPI provider, by sending the necessary 3D Secure parameters listed below in the object 3DSecureData.

Request:

POST https://securetest.smart2pay.com/v1/payments
Authorization: Basic MTAxMDpnYWJp

{
  "Payment": {
    "MerchantTransactionID": "s2ptest_3a",
    "Amount": "100",
    "Currency": "EUR",
    "ReturnURL": "http://demo.smart2pay.com/redirect.php",
    "Description": "Test Description",
    "StatementDescriptor": "Dynamic Test Description",
    "Card": {
      "HolderName": "Test Person",
      "Number": "4012005162084369",
      "ExpirationMonth": "05",
      "ExpirationYear": "2020",
      "SecurityCode": "123",
      "RequireSecurityCode": true
    },
    "Capture": false,
    "GenerateCreditCardToken": false,
    "PaymentTokenLifetime": 10,
    "3DSecure": true,
    "3DSecureData": { 
      "AuthenticationStatus": "Y",
      "ECI": "05",
      "CAVV": "MDA5ODYyNjQxMzEyNzQxMTQ4NzA=",
      "DSID": "f41f41f-f412f-41f-4321-f4132f4",
      "3DSecureVersion": "2.1.0"
      },
    "ScaExemption": "LowValueTransaction",
    "Language": "ro-RO",
    "SkinID": 200
  }
}

Response:

HTTP/1.1 201 Created
Content-Type: application/json; charset=utf-8

{
    "Payment": {
        "ID": 208158,
        "ClientIP": null,
        "SkinID": 200,
        "Created": "20190828082527",
        "MerchantTransactionID": "s2ptest_3a",
        "OriginatorTransactionID": null,
        "Amount": 100,
        "Currency": "EUR",
        "CapturedAmount": "0",
        "ReturnURL": "http://demo.smart2pay.com/redirect.php",
        "Description": "Test Description",
        "StatementDescriptor": "Dynamic Test Description",
        "MethodID": 6,
        "MethodOptionID": null,
        "SiteID": 1010,
        "NotificationDateTime": null,
        "Customer": null,
        "BillingAddress": null,
        "ShippingAddress": null,
        "Articles": null,
        "Card": {
            "HolderName": "Test Person",
            "Number": "VISA-4369",
            "ExpirationMonth": "05",
            "ExpirationYear": "2020"
        },
        "CreditCardToken": null,
        "Status": {
            "ID": 9,
            "Info": "Authorized",
            "Reasons": []
        },
        "MethodTransactionID": null,
        "AuthorizationCode": "143383",
        "PaymentTokenLifetime": 10,
        "Capture": false,
        "RedirectURL": null,
        "3DSecure": true,
        "3DSecureData": {
            "AuthenticationStatus": "Y",
            "ECI": "05",
            "CAVV": "MDA5ODYyNjQxMzEyNzQxMTQ4NzA=",
            "DSID": "f41f41f-f412f-41f-4321-f4132f4",
            "3DSecureVersion": "2.1.0"
        },
        "DeviceInfo": null,
        "ScaExemption": "LowValueTransaction",
        "Fraud": {
            "Status": "Accept",
            "Score": 31,
            "Reason": "No decision provided"
        }
    }
}

3D Secure 2.0 Payments

3D Secure 2.0 is the new authentication protocol that provides an additional layer of verification for card transactions. Strong Customer Authentication (SCA) requires merchants to integrate into the checkout flow a two-factor authentication, requiring their customers to use two out of three elements: something only the user knows like a password, something only the user possesses like the phone and something only the user possesses like a fingerprint.

Checkout the below example of a payment using the 3D Secure 2.0 protocol.

Although 3D Secure 2.0 protocol requires sending much more additional details, it increases the chances for a smooth and frictionless payment flow.

Request:

POST https://securetest.smart2pay.com/v1/payments
Authorization: Basic MTAxMDpnYWJp

{
  "Payment": {
  "MerchantTransactionID": "s2ptest_6a",
  "Amount": "100",
  "Currency": "EUR",
  "ReturnURL": "http://demo.smart2pay.com/redirect.php",
  "Description": "Test Description",
  "StatementDescriptor1": "Dynamic Test Description",
  "BillingAddress": {
    "City": "Iasi",
    "ZipCode": "7000-49",
    "State": "Iasi",
    "Street": "Sf Lazar",
    "StreetNumber": "37",
    "HouseNumber": "5A",
    "HouseExtension": "-",
    "Country": "RO"
    },
  "ShippingAddress": {
    "City": "Iasi",
    "ZipCode": "700049",
    "State": "Iasi",
    "Street": "Sf Lazar",
    "StreetNumber": "37",
    "HouseNumber": "-",
    "HouseExtension": "-",
    "Country": "RO" 
    },
  "Customer": {
    "MerchantCustomerID": "3452342354232",
    "Email": "accept@accept.com",
    "Firstname": "Test",
    "Lastname": "Person",   
    "SocialSecurityNumber": "45908-28324",
    "Phone": "0744-783322",
    "Company": "S2P",
    "Gender": "1"
    },
  "Card": {
    "HolderName": "Test Person",
    "Number": "4012005162084369",
    "ExpirationMonth": "05",
    "ExpirationYear": "2020",
    "SecurityCode": "123",
    "RequireSecurityCode": true
    },
  "Capture": false,
  "GenerateCreditCardToken": false,
  "PaymentTokenLifetime": 10,
  "3DSecure": true,
  "DeviceInfo": {
    "BrowserAcceptHeader": "application/json, text/javascript, */*; q=0.01",
    "BrowserUserAgent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/76.0.3809.132 Safari/537.36",
    "BrowserJavaEnabled": false,
    "BrowserJavaScriptEnabled": true,
    "BrowserLanguage": "ro-RO",
    "BrowserColorDepth": "24",
    "BrowserScreenHeight": "1080",
    "BrowserScreenWidth": "1920",
    "BrowserTimeZone": "-180"
    },
  "ScaExemption": "LowValueTransaction",
  "Language": "ro-RO",
  "SkinID": 200
  }
}

Response:

HTTP/1.1 201 Created
Content-Type: application/json; charset=utf-8

{
    "Payment": {
        "ID": 208161,
        "ClientIP": null,
        "SkinID": 200,
        "Created": "20190828091954",
        "MerchantTransactionID": "s2ptest_6a",
        "OriginatorTransactionID": null,
        "Amount": "100",
        "Currency": "EUR",
        "CapturedAmount": "0",
        "ReturnURL": "http://demo.smart2pay.com/redirect.php",
        "Description": "Test Description",
        "StatementDescriptor": "Static Description",
        "MethodID": 6,
        "MethodOptionID": null,
        "SiteID": 1010,
        "NotificationDateTime": null,
        "Customer": {
            "ID": 647,
            "MerchantCustomerID": "3452342354232",
            "Email": "accept@accept.com",
            "FirstName": "Test",
            "LastName": "Person",
            "Gender": "1",
            "SocialSecurityNumber": "45908-28324",
            "Phone": "0744-783322",
            "Company": "S2P"
        },
        "BillingAddress": {
            "ID": 253,
            "City": "Iasi",
            "ZipCode": "7000-49",
            "State": "Iasi",
            "Street": "Sf Lazar",
            "StreetNumber": "37",
            "HouseNumber": "5A",
            "HouseExtension": "-",
            "Country": "RO"
        },
        "ShippingAddress": {
            "ID": 87,
            "City": "Iasi",
            "ZipCode": "700049",
            "State": "Iasi",
            "Street": "Sf Lazar",
            "StreetNumber": "37",
            "HouseNumber": "-",
            "HouseExtension": "-",
            "Country": "RO"
        },
        "Articles": null,
        "Card": {
            "HolderName": "Test Person",
            "Number": "VISA-4369",
            "ExpirationMonth": "05",
            "ExpirationYear": "2020"
        },
        "CreditCardToken": null,
        "Status": {
            "ID": 9,
            "Info": "Authorized",
            "Reasons": []
        },
        "MethodTransactionID": null,
        "AuthorizationCode": "591659",
        "PaymentTokenLifetime": 10,
        "Capture": false,
        "RedirectURL": null,
        "3DSecure": true,
        "DeviceInfo": {
            "BrowserAcceptHeader": "application/json, text/javascript, */*; q=0.01",
            "BrowserUserAgent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/76.0.3809.132 Safari/537.36",
            "BrowserJavaEnabled": false,
            "BrowserJavaScriptEnabled": true,
            "BrowserLanguage": "ro-RO",
            "BrowserColorDepth": "24",
            "BrowserScreenHeight": "1080",
            "BrowserScreenWidth": "19200",
            "BrowserTimeZone": "-180"
        },
        "ScaExemption": null,
        "Fraud": {
            "Status": "Accept",
            "Score": 31,
            "Reason": "No decision provided"
        }
    }
}

PayWithMyBank Recurring Payment

Definition: POST /v1/payments/recurrent

A recurring payment is created in the same manner a one-off payment is created. In addition, you need to send the PreapprovalID (the PreapprovalID received when you created/opened a preapproval) and the information specific to each payment method.

For PayWithMyBank (58), you need to send the PreapprovalID (the PreapprovalID received when you created/opened a preapproval) and the Amount to be captured:

Request:

POST https://paytest.smart2pay.com/v1/payments/recurrent
Authorization: Basic MzAyMDE6aEo1Um9iWXg5cjdGZk53Q3ZIWTlMWEhxcXIrRkV6cmM3YUp2UVFrNEdhejFtZzdSeXk={
 "Payment": {
   "PreapprovalID": 19800,
   "MerchantTransactionID": "s2ptest_h-1",
   "Amount": 20,
   "Currency": "USD",
   "MethodID": 58
  }
}