Integration Roadmap

Klarna Debit Risk Payment Request

Definition: POST https://paytest.smart2pay.com/v1/payments

Below you will find a full example of a payment request for Klarna Debit Risk method (with Success and Bad response). The parameters of the payment are sent in the message body as a JSON object.

For Klarna Debit Risk payments only the following Amount, Currency, Country parameters are mandatory to be sent in the request, the rest of them are optional:

  • Amount – Order amount;
  • Currency – Purchase currency;
  • Country – Purchase country.

For a smoother user experience, we recommend always sending the Method ID 1183.

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

For more information about status codes, please go to Basic HTTP Status Codes.

Request:

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

{
    "Payment": {
        "Amount": 100,
        "Currency": "GBP",
        "OriginatorTransactionID": "12345",
        "MethodID": "1183",
        "Description": "test",
        "ReturnURL": "http://demo2.smart2pay.com/redirect.php",
        "MerchantTransactionID": "KlarnaPayments-{{$timestamp}}",
        "Articles": [
            {
                "MerchantArticleID": "5009000",
                "Name": "TEST",
                "Quantity": 1,
                "Price": 100,
                "VAT": 10,
                "Discount": 0,
                "Type": 5,
                "TaxType": "0"
            }
        ],
        "BillingAddress": {
            "HouseExtension": "25",
            "HouseNumber": "22",
            "Street": "Great Russell",
            "StreetNumber": "1",
            "City": "London",
            "Region": "St. Jaoum es",
            "Phone": "00447516300001",
            "ZipCode": "WC1B 3DG",
            "Country": "GB"
        },
        "Customer": {
            "email": "test@test.com",
            "Phone": "00447516300001",
            "FirstName": "Doe",
            "LastName": "John"
        },
        "TokenLifetime": 10
    }
}

Response:

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

{
    "Payment": {
        "ID": 27146999,
        "SkinID": null,
        "ClientIP": null,
        "Created": "20240517091703",
        "MerchantTransactionID": "KlarnaPayments-1715937424",
        "OriginatorTransactionID": "12345",
        "Amount": "100",
        "Currency": "GBP",
        "CapturedAmount": null,
        "ReturnURL": "http://demo2.smart2pay.com/redirect.php",
        "ReturnURLSuccess": null,
        "ReturnURLFailure": null,
        "ReturnURLCancel": null,
        "ReturnURLProcessing": null,
        "Description": "test",
        "MethodID": 1183,
        "MethodOptionID": null,
        "MethodOptionIdString": null,
        "BankName": null,
        "IncludeMethodIDs": null,
        "ExcludeMethodIDs": null,
        "PrioritizeMethodIDs": null,
        "SiteID": 30199,
        "NotificationDateTime": null,
        "Customer": {
            "MerchantCustomerID": null,
            "Email": "test@test.com",
            "FirstName": "Doe",
            "LastName": "John",
            "Gender": null,
            "SocialSecurityNumber": null,
            "Phone": "00447516300001",
            "Company": null,
            "DateOfBirth": null
        },
        "BillingAddress": {
            "City": "London",
            "ZipCode": "WC1B 3DG",
            "State": null,
            "Street": "Great Russell",
            "StreetNumber": "1",
            "HouseNumber": "22",
            "HouseExtension": "25",
            "Country": "GB"
        },
        "ShippingAddress": null,
        "Articles": [
            {
                "MerchantArticleID": "5009000",
                "Name": "TEST",
                "Quantity": 1,
                "Price": "100",
                "VAT": "10",
                "Discount": "0",
                "Type": "5",
                "TaxType": 0,
                "DiscountValue": "0"
            }
        ],
        "Details": null,
        "ReferenceDetails": null,
        "CustomParameters": null,
        "PreapprovalID": null,
        "Status": {
            "ID": 1,
            "Info": "Open",
            "Reasons": null
        },
        "Fraud": null,
        "MethodTransactionID": null,
        "OriginalMerchantTID": null,
        "Unknown": false,
        "TokenLifetime": 10,
        "Capture": null,
        "PreapprovalDetails": null,
        "RedirectURL": "https://gw-apm-globalpayapi.nuvei.com/Home?PaymentToken=3C1FBA02E352FA06F5EE3C7FE524D0F8.27146999",
        "Splits": null
    }
}

In case of an API error, an HTTP 4xx (you did something wrong) or HTTP 5xx (we did something wrong) response is returned.

For more information about the reasons of a wrong request response see our section GlobalPay Return Codes.

Request:

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

{
    "Payment": {
        "Amount": 200,
        "Currency": "GBP",
        "OriginatorTransactionID": "12345",
        "MethodID": "1183",
        "Description": "test",
        "ReturnURL": "http://demo2.smart2pay.com/redirect.php",
        "MerchantTransactionID": "KlarnaPayments-{{$timestamp}}",
        "Articles": [
            {
                "MerchantArticleID": "5009000",
                "Name": "TEST",
                "Quantity": 1,
                "Price": 100,
                "VAT": 10,
                "Discount": 0,
                "Type": 5,
                "TaxType": "0"
            }
        ],
        "BillingAddress": {
            "HouseExtension": "25",
            "HouseNumber": "22",
            "Street": "Great Russell",
            "StreetNumber": "1",
            "City": "London",
            "Region": "St. Jaoum es",
            "Phone": "00447516300001",
            "ZipCode": "WC1B 3DG",
            "Country": "GB"
        },
        "Customer": {
            "email": "test@test.com",
            "Phone": "00447516300001",
            "FirstName": "Doe",
            "LastName": "John"
        },
        "TokenLifetime": 10
    }
}

Response:

HTTP/1.1 400 Bad Request
Content-Type: application/json; charset=utf-8

{
    "Payment": {
        "ID": 27147115,
        "SkinID": null,
        "ClientIP": null,
        "Created": "20240517130108",
        "MerchantTransactionID": "KlarnaPayments-1715950869",
        "OriginatorTransactionID": null,
        "Amount": "200",
        "Currency": "GBP",
        "CapturedAmount": null,
        "ReturnURL": "http://demo2.smart2pay.com/redirect.php",
        "ReturnURLSuccess": null,
        "ReturnURLFailure": null,
        "ReturnURLCancel": null,
        "ReturnURLProcessing": null,
        "Description": "test",
        "MethodID": 1183,
        "MethodOptionID": null,
        "MethodOptionIdString": null,
        "BankName": null,
        "IncludeMethodIDs": null,
        "ExcludeMethodIDs": null,
        "PrioritizeMethodIDs": null,
        "SiteID": 30199,
        "NotificationDateTime": "20240517130109",
        "Customer": {
            "MerchantCustomerID": null,
            "Email": "test@test.com",
            "FirstName": "Doe",
            "LastName": "John",
            "Gender": null,
            "SocialSecurityNumber": null,
            "Phone": "00447516300001",
            "Company": null,
            "DateOfBirth": null
        },
        "BillingAddress": {
            "City": "London",
            "ZipCode": "WC1B 3DG",
            "State": null,
            "Street": "Great Russell",
            "StreetNumber": "1",
            "HouseNumber": "22",
            "HouseExtension": "25",
            "Country": "GB"
        },
        "ShippingAddress": null,
        "Articles": [
            {
                "MerchantArticleID": "5009000",
                "Name": "TEST",
                "Quantity": 1,
                "Price": "100",
                "VAT": "10",
                "Discount": "0",
                "Type": "5",
                "TaxType": 0,
                "DiscountValue": "0"
            }
        ],
        "Details": null,
        "ReferenceDetails": null,
        "CustomParameters": null,
        "PreapprovalID": null,
        "Status": {
            "ID": 4,
            "Info": "Failed",
            "Reasons": [
                {
                    "Code": "118",
                    "Info": "Amount invalid"
                }
            ]
        },
        "Fraud": null,
        "MethodTransactionID": null,
        "OriginalMerchantTID": null,
        "Unknown": false,
        "TokenLifetime": null,
        "Capture": null,
        "PreapprovalDetails": null,
        "RedirectURL": null,
        "Splits": null
    }
}

Klarna Debit Risk – Test Data

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

Test Data
DataValue
Email for Austria:
  • Approved: customer@email.at
  • Denied: customer+denied@email.at
  • Email for Germany:
  • Approved: customer@email.de
  • Denied: customer+denied@email.de
  • Email for United Kingdom:
  • Approved: customer@email.uk
  • Denied: customer+denied@email.uk
  • First Name:Enter any name. Example: Doe
    Last Name:Enter any name. Example: Test
    Phone Number for Austria:
  • Approved: +4306762600456
  • Denied: +4306762600745
  • Phone Number for Germany:
  • Approved: +49017614284340
  • Denied: +49017610927312
  • Phone Number for United Kingdom:
  • Approved: +447755564318
  • Denied: +447355505530
  • CityEnter any city. Example: London
    StreetEnter any street. Example: Great Russell
    Zip CodeEnter any valid zip code. Example: WC1B 3DG
    Available countries:AT, DE, GB
    Article Type:4 = Discount, 5 = Physical, 6 = Shipping_fee, 7 = Sales_tax, 8 = Digital, 9 = Gift_card, 10 = Store_credit, 11 = Surcharge
    Additional Test Data required from the customer on the provider’s page
    CountryDate of Birth
    Austria (AT):Format is Day/Month/Year (DD-MM-YYYY) Enter any date.
    Germany (DE):Format is Day/Month/Year (DD-MM-YYYY) Enter any date.
    United Kingdom: (GB):Format is Day/Month/Year (DD-MM-YYYY) Enter any date.

    For more details about the specific personal details required please go to our section: Payment flows per country.

    Klarna Debit Risk Payment Flow

    1. This is considered a standard payment flow where the customer has selected the United Kingdom as the country. If the customer hasn’t provided in the first step one of the required personal details: email, first name and last name, he will provide this info on a intermediary page. In order to continue, the customer also needs to agree to storing and processing his/her personal information used in the payment flow. Customer Details
    2. The customer needs to press on the ‘Pay with Klarna’ button. Confirm and pay
    3. The customer needs to provide Username and Password, for test purposes it can be used “Test” and “12345” and press on the ‘Continue’ button. Scan to pay
    4. The customer needs to provide the OTP code, for test purposes it can be used ‘12345’ and press on the ‘Continue’ button.Testbank
    5. If the details are filled correctly by the customer, the transaction is completed and you will receive a notification with the success status. Meanwhile, the customer is redirected to your ReturnURL.Payment confirmation pending

    iDEAL 2.0 Test Data

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

    iDEAL Test Data
    Data Value
    Your bank: TESTNL2A

    iDEAL 2.0 Payment Flow – Desktop version

    1. The customer selects the bank from the iDEAL page.

      1 Bank selection

    2. The customer confirms the transaction by clicking on the Success button.

      1 Transaction confirmation

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

      1 Return page when the redirection status is a success

    iDEAL 2.0 Payment Flow – Mobile version

    1. The list of banks is displayed.

      1 Bank selection

    2. The customer selects the bank from the page.

      1 Bank selection

    3. The customer confirms the transaction by clicking on the Success button.

      1 Transaction confirmation

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

      1 Return page when the redirection status is a success

    CashApp

    To successfully test the CashApp payment method, you need to have a smartphone with a valid QR code reader that allows for completion of a Web based flow. If you are sending a mobile request for testing purposes, the provided mobile playground will only ask for approval or denial of the payment initiation without the need of using such a device. The payment method supports either direct capture or an authorization-capture flow; this applies to both Web or Mobile initiated payments.

    Note that requests are subjected to amount limits checks.

    CashApp Payment Flow

    In order to initiate a payment, the customer must provide the below mandatory details: Amount, Currency and Country.

    CashApp Web Payment Flow

    The client is redirected to the payment page where they are presented with a QR code that must be scanned using the smartphone QR camera reader.

    1 Enter name

    After scanning the QR code, a new payment menu page will pop-up on the smartphone, providing 2 payment actions: Approve or Decline. If the client chooses to press Approve, the transaction is considered to be either Authorized or Success, depending on the settings made to the payment flow.

    • After which they are redirected to the Success ReturnURL.

      1 Return page when the redirection status is a success

    If the client presses Decline, the transaction is Cancelled and has it’s status updated to Cancel.

    1 Enter name

    After which they are redirected to the Cancel ReturnURL.

    1 Return page when the redirection status is a success

    CashApp Web Payment Flow

    Similar to the first flow, the client is redirected to the payment page, however, they are directly presented with the Approve or Decline options. The actions that can be taken by the client are the same as the aforementioned Web flow.

    1 Enter name

    For both Web and Mobile flow, full and single partial Captures are supported; no multiple partial Captures are allowed by the provider.

    Zalo Pay Test Data

    In order for you to test Zalo Pay payment method successfully, it is necessary to have the Zalo Pay application installed on your phone and use the below test data to log in to the application and confirm payments. Be sure to use amount greater than 10000 VND.

    Zalo Pay Test Data
    Data Value
    Account 0909700980
    Password 111 111
    OTP 111 111

    Zalo Pay Payment Flow

    1. The Customer enters his email address.
      1 Enter email
    2. The Customer is redirected to Zalo Pay payment page.
      1 Zalo Pay payment page
    3. The Customer opens Zalo Pay mobile application and scans the QR code.
      1 QR code scanning
    4. The payment details are displayed and the customer confirms by using the payment password.
      1 Payment confirmation
    5. The payment is confirmed.
      1 Payment successful
    6. Upon completion of the payment flow, the customer is redirected back to your ReturnURL.
      1 Return page when the redirection status is Processing

    NaverPay Test Data

    In order for you to test NaverPay payment method successfully, you don’t need any given test data.

    NaverPay Payment Flow

    1. The customer is redirected to the payment page where he enters his email address.

      1 Enter email

    2. The customer is redirected to the provider’s page where he must select the “Pay with” option .

      1 Pay with

    3. The customer will be redirected to the payment page where he has to choose either of the presented options: Deposit for successful transaction completion and Cancellation for cancelled transaction.

      1 Payment options

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

      1 Return page when the redirection status is Processing

    KakaoPay Test Data

    In order for you to test KakaoPay payment method successfully, you don’t need any given test data.

    KakaoPay Payment Flow

    1. The customer will be redirected to the payment page where he enters his email address.

      1 Enter email

    2. The customer will be redirected to the payment page where he has to choose either of the presented options: Deposit for successful transaction completion and Cancellation for cancelled transaction.

      1 Payment options

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

      1 Return page when the redirection status is Processing

    CreditCards Test Data

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

    CreditCards Test Data
    Data Value
    Credit Card Number: JCB: 3530111333300000
    American Express: 378282246310005
    VISA: 4111111111111111
    Master Card: 5555555555554444
    Diners Club: 30569309025904
    Expiration Period: Choose a month and a year at least equal than the current month and year
    Birth Date: Enter any 6 digit number. Example: 120456
    First 2 Digits Of The Card Password: Enter any 2 digit number. Example: 12

    CreditCards Payment Flow

    1. The Customer enters his email address.

      1 Enter email

    2. The Customer enters the credit card information. In order to complete the payment he must fill the form with a valid credit card number, expiration period, his birth date and the first 2 digits of the card password. For test purposes, please provide one of the test credit card numbers given above.

      1 Payment details

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

      1 Return page when the redirection status is Processing

    Toss Test Data

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

    Toss Test Data
    Data Value
    Phone Number: Enter valid phone number. Example: 0702623250
    Birth Date: Enter any 6 digit number. Example: 120456

    Toss Payment Flow

    1. The Customer enters his email address.

      1 Enter email

    2. The Customer must provide his phone number and birth date to complete the payment.

      1 Payment details

    3. The customer is redirected to the provider’s page where he sees the amount of payment and further instruction for completing the purchase.

      1 Payment instructions

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

      1 Return page when the redirection status is Processing

    Bizum Test Data

    In order for you to test Bizum payment method successfully, you need to add for phone number – 700000000. Also, be sure to use amount lower than 15.00 EUR .

    Bizum Payment Flow

    1. The customer will be redirected to the payment page where he enters his name, email address and phone number.

      1 Enter name, email and phone

    2. The customer needs to confirm the phone number in order to complete the payment.

      1 Payment details

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

      1 Return page when the redirection status is a success

    GiroPay Test Data


    Testing details  for merchant integration using Giropay are not available

    GiroPay Payment Flow

    1. The Customer selects his bank from the list – TestBank.
    2. 1 Bank selection

    3. The Customer selects his bank account – PSD2 Testbank.
    4. 1 Bank selection

    5. The Customer agrees with he conditions and terms.
    6. 1 Bank selection

    7. The customer verifies the payment info: Details, Name, IBAN, BIC, .
    8. 1 Bank selection

    9. Upon completion of the payment flow, the customer is redirected back to SuccessURL.
    10. 1 Bank selection

    Clearpay Test data

    To successfully test the Clearpay payment method, an active account must be registered with the provider, containing a valid email address.
    Note that requests are subjected to amount limits checks.
    The payment method supports either direct capture or an authorization-capture flow.

    Clearpay Payment Flow

      1. In order to initiate a payment, the customer must provide the below mandatory details: First and last name, Email, Phone, Billing Address (street, city, zip code, state, country) and then press Continue.

         

      2. The client is then redirected to the provider payment page where they are presented with the payment schedule.

        1 Enter name

        Here, they can press on the Payment Method tab and add a new card that will be saved for future purchases.

        1 Enter name

        If testing for payment completion, please insert the below card and CVV:
        Card Number: 4242 4242 4242 4242;
        Expiry date: must be in the future;
        CVV: 123;

        Once done, the Confirm button must be pressed.

        1 Enter name

         

      3. Upon completion of the payment flow, the customer is shown the provider’s processing page.

        1 Provider processing page

        After which they are redirected to your ReturnURL.

        1 Return page when the redirection status is a success

    Depending on your Capture settings, after the client finished all the necessary steps, the payment can have its status set to either Success (with the automatic capture option enabled) or Authorized. If the later status is shown for a particular transaction, a Capture time frame is active for 13 days. If this time period expires, the payment is automatically cancelled and refunded by the provider and no further Capture action can be performed on that particular Authorization order.

     

    Afterpay Test data

    To successfully test the Afterpay payment method, an active account must be registered with the provider: it must have a valid email address and its usage is limited to one country.
    Note that requests are subjected to amount limits checks.
    The payment method supports either direct capture or an authorization-capture flow.

    Afterpay Payment Flow

      1. In order to initiate a payment, the customer must provide the below mandatory details:
        First and last name, Email, Phone, Billing Address (street, city, zip code, state, country) and then press Continue.
        If no client details are sent, our intermediary page is displayed, in order to collect the necessary data:

        1 Enter name

      2. The client is then redirected to the payment page where they are presented with the payment schedule.

        1 Enter name

        Here, they can press on the Payment Method tab and add a new card that will be saved for future purchases.

        1 Enter name

        If testing for payment completion, please insert the below card and CVV(s):
        Card Number: 4111 1111 1111 1111;
        Expiry date: must be in the future;
        CVV: 000 for an approved capture;
        CVV: 051 for a declined capture.

        Once done, the Confirm button must be pressed.

        1 Enter name

      3. Upon completion of the payment flow, the customer is shown the provider’s processing page.

        1 Provider processing page

        After which they are redirected to your ReturnURL.

        1 Return page when the redirection status is a success

    Depending on your Capture settings, after the client finished all the necessary steps, the payment can have its status set to either Success (with the automatic capture option enabled) or Authorized. If the later status is shown for a particular transaction, a Capture time frame is active for 13 days. If this time period expires, the payment is automatically cancelled and refunded by the provider and no further Capture action can be performed on that particular Authorization order.

    NetBanking Test Data

    In order for you to test NetBanking payment method successfully, you don’t need any given test data. Note, however, that requests are subjected to amount limits checks.

    NetBanking Payment Flow

    1. In order to initiate a payment, the customer must insert the below mandatory details:
      First and last name, Email, Phone, Address (street, city, zip code, state) and then press Continue.

      1 Enter name

    2. The customer will be redirected to the payment page where he has to choose either of the presented options: Approve for successful transaction completion; Decline in order to reject the payment and Cancel for transaction cancellation .

      1 Enter name

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

      1 Return page when the redirection status is a success

    UPI Test data

    In order for you to test UPI payment method successfully, you don’t need any given test data. Note, however, that requests are subjected to amount limits checks.

    UPI Payment Flow

    1. In order to initiate a payment, the customer must insert the below mandatory details:
      First and last name, Email, Phone, Address (street, city, zip code, state) and then press Continue.

      1 Enter name

    2. The customer will be redirected to the payment page where he has to choose either of the presented options: Approve for successful transaction completion; Decline in order to reject the payment and Cancel for transaction cancellation .

      1 Enter name

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

      1 Return page when the redirection status is a success

    SSPAY Test Data

    In order for you to test SSPAY payment method successfully, you don’t need any given test data. Be sure to use amount greater than 100 KRW.

    SSPAY Payment Flow

    1. The customer will be redirected to the payment page where he enters his name, email address and phone number.

      1 Enter name, email and phone

    2. The customer receives a QR Code to use in order to complete the payment.

      1 Payment details

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

      1 Return page when the redirection status is a success

    SSGPAY Test Data

    In order for you to test SSGPAY payment method successfully, you don’t need any given test data. Be sure to use amount greater than 100 KRW.

    SSGPAY Payment Flow

    1. The customer will be redirected to the payment page where he enters his name, email address and phone number.

      1 Enter name, email and phone

    2. The customer is redirected to a page where he enters the necessary payment details in order to complete the payment.
    3. Upon completion of the payment flow, the customer is redirected back to your ReturnURL.

      1 Return page when the redirection status is a success

    KAKAO Test Data

    In order for you to test KAKAO payment method successfully, you don’t need any given test data. Be sure to use amount greater than 100 KRW.

    KAKAO Payment Flow

    1. The customer will be redirected to the payment page where he enters his name, email address and phone number.

      1 Enter name, email and phone

    2. The customer receives a QR Code to use in order to complete the payment.

      1 Qr code

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

      1 Return page when the redirection status is a success

    Bank Transfer Test Data

    In order for you to test Bank Transfer payment method successfully, you don’t need any given test data.

    Bank Transfer Payment Flow

    1. The customer will be redirected to the payment page where he enters his name and email address.

      1 Enter name

    2. The customer receives the details to make the payment of the transaction. He also has the possibility to print the payment details.

      1 Payment details

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

      1 Return page when the redirection status is a success

    Bank Transfer Test Data

    In order for you to test Bank Transfer payment method successfully, you don’t need any given test data.

    Bank Transfer Payment Flow

    1. The customer will be redirected to the payment page where he enters his name and email address.

      1 Enter name

    2. The customer receives the details to make the payment of the transaction. He also has the possibility to print the payment details.

      1 Payment details

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

      1 Return page when the redirection status is a success

    Nequi Test Data

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

    Nequi Payment Flow

    Nequi Test Data
    Data Value
    Email Address: Enter any valid email address. Example: youre@email.com
    Phone Number: Enter any 7 digit number following the prefix +507. Example: 8339956
    1. The customer enters his email address and phone number and clicks on the Push or Scan QR button.

      1 Select payment option

    2. The customer is redirected to Nequi page where he scans the QR code given on the page and completes the payment.

      1 Payment code and details

    PagoCash Test Data

    In order for you to test PagoCash payment method successfully, please use the test data provided.

    Pagocash Payment Flow

    PagoCash Test Data
    Data Value
    Email Address: Enter any valid email address. Example: youre@email.com
    Phone Number: Enter any 7 digit number following the prefix +507. Example: 8339956
    1. The customer enters his email address and phone number and clicks on the Generate payment code button.

      1 Select payment option

    2. The customer is redirected to Pagocash page where he sees the reference number and the amount he has to pay. With the reference number received, the customer has 24 hours to complete the payment at any Punto Pago Kiosk by selecting Easy pay and entering the code.

      1 Payment code and details

    3. Upon completion of the payment flow the customer is redirected back to your ReturnURL.1 Return page when the redirection status is processing

    Nuvei Mobile SDK with 3DSecure Authentication

    There are two phases, which replicate the web flow:
    PHASE 1 – Check credit card – GenerateCreditCardToken in Mobile SDK;
    PHASE 2 – Use CardToken obtained in PHASE 1, authenticate the customer and initiate the Authorization.

    • PHASE 1 – GOAL: Tokenize credit card using mobile app – without 3DSecure and CreditCardToken generated only on Nuvei side (no acquirer token generated):

    1. MerchantAPP – Request Temporary ApiKey from MerchantServer
    2. MerchantServer – AUTH_MOBILE – Request TemporaryApiKey from Smart2PayServer, using SiteID:ApiKey authentication
    3. Smart2PayServer – Response with TemporaryApiKey to MerchantServer
    4. MerchantServer – Response with TemporaryApiKey to MerchantAPP
    5. MerchantAPP – Request to tokenize CardDetails to Smart2PayMobileSDK, using TemporaryApiKey(SDK::TOKENIZE)
    6. Smart2PayMobileSDK – Request to tokenize using TemporaryApiKey to Smart2PayServer
    7. Smart2PayServer – Response to Smart2PayMobileSDK with CardToken
    8. Smart2PayMobileSDK – Response to MerchantAPP with CardToken
    9. MerchantAPP – Save CardToken to MerchantServer; MerchantServer must store the following values: CreditCardToken + CardScheme + Last four digits of PAN + IssuingBankCountry + CustomerID
    • PHASE 2 – GOAL: Authorize a payment using a stored card token + 3DSecure authentication using mobile APP :

    1. MerchantAPP – Request TemporaryApiKey and CardToken from MerchantServer
    2. MerchantServer – AUTH_MOBILE – Request TemporaryApiKey from Smart2PayServer, using SiteID:ApiKey authentication
    3. Smart2PayServer – Response with TemporaryApiKey to MerchantServer
    4. MerchantServer responds with TemporaryApiKey to MerchantAPP:
      • the response must include also CreditCardToken + CardScheme + Last four digits of PAN for the CustomerID (values stored in PHASE 1, step 9);
    5. MerchantAPP displays CardScheme + Last four digits of PAN to the Customer requests CVV
    6. MerchantAPP uses SDK::3DSecureAuthenticate to request authentication to Smart2PayMobileSDK. Request must contain:
      • CardToken + CVV + TemporaryApiKey
      • Currency – required for step 9
      • Amount – required for step 9
    7. Smart2PayMobileSDK request to Smart2PayServer to obtain CardDetails
    8. Smart2PayServer responds to Smart2PayMobileSDK with CardDetails:
      • CardNumber, CardHolderName, ExpirationDate (NO CVV)
    9. Smart2PayMobileSDK request via AcquirerMobileSDK for 3DSecureAuthentication. Parameters required:
      • CardDetails:
        • CardNumber (required)
        • CardHolderName (required)
        • ExpirationDate (required)
        • CVV (required)
      • Authenticate3DInput:
        • SessionToken – (required)
        • Acquirer MerchantID (required)
        • Acquirer MerchantSiteID (required)
        • Currency – (required)
        • Amount – (required)
        • Acquirer PaymentOption – (required)
        • ClientRequestID – (optional)
        • CustomData – (optional)
      1. Smart2PayMobileSDK requests to Smart2PayServer to obtain Acquirer SessionToken. Parameters required:
        • Acquirer MerchantID, Acquirer MerchantSiteID, ClientRequestID, TimeStamp, Checksum
      2. Smart2PayServer responds to Smart2PayMobileSDK with SessionToken
      3. AcquirerMobileSDK displays a webview to the customer for the 3DSecureAuthentication
      4. Customer enters 3DSecure secret for authentication (OTP, password etc.)
      5. AcquirerMobileSDK responds to Smart2PayMobileSDK with 3DSecure Authentication result
    10. Smart2PayMobileSDK responds to MerchantAPP with 3DSecureAuthentication result. Parameters provided:
      • ECI
      • CAVV
      • XID
      • dsTransID
      • Result
      • errorCode
      • errorDescription
    11. MerchantAPP sends a request to MerchantServer for a liability shift 3DSecure payment (Authorization):
      • CardToken
      • CVV
      • 3DSecureAuthentication result
      • Splits
    12. MerchantServer sends request to Smart2PayServer for a liability shift 3DSecure payment (Authorization):
      • CardToken
      • CVV
      • 3DSecureAuthentication result
      • Splits
    13. Smart2PayServer sends response to MerchantServer with the result of the Authorization
    14. MerchantServer sends result to MerchantAPP which displays result to Customer

    Open Banking Test Data

    In order for you to test the Open Banking payment method successfully, please use the test data provided. Please send in request any amount ending in xxx.30 and currency GBP in order to successfully perform an end to end test.

    Open Banking Payment Flow

    Open Banking Test Data
    Data Value
    First Name: Enter any name. Example: John
    Last Name: Enter any name. Example: Doe
    Email Address: Enter any valid email address. Example: person@test.com
    Test Bank: Nuapay ASPSP
    Street: Enter any value. Example: Rue. Mandatory parameter only for France.
    Street number: Enter any value. Example: 12. Mandatory parameter only for France.
    Zip-code: Enter any value. Example: 123456. Mandatory parameter only for France.
    City: Enter any value. Example: Paris. Mandatory parameter only for France.
    User Name: psu
    Password: psu
    1. The customer enters his email address, name and chooses his bank from the provided list.

      1 Enter payment details

    2. The customer logs in to his Bank by entering his user name and password.

      1 Login to Bank

    3. The customer needs to prove his identity (Strong Customer Authentication).

      1 Strong Customer Authentication

    4. The customer selects his account from the provided list and completes the payment.

      1 Bank account

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

      1 Return page when the redirection status is pending

    Nuvei JS – SDK Installation

    Several JavaScript API implementations are available here https://github.com/Smart2Pay/js-sdk/tree/main/src to obtain the CreditCardToken. You can also checkout our implementation examples here: https://github.com/Smart2Pay/js-sdk/blob/main/src/example.html. See below the details for ES6 – fetch + Promise, ES6 – Promise + XMLHttpRequest or ES5 – XMLHttpRequest.

    ES6 – fetch + Promise

    Installation
    Import the following script that will make available tokenizeCard_fetch():

    <script src="https://..../tokenizeCard_fetch.js" type="text/javascript"></script>

    Usage

    Use tokenizeCard_fetch to send the required data and handle response / error:

    tokenizeCard_fetch({
        apiKey: '<apikey string>',
        environment: '<environment string>',
        cardDetails: '<cardDetails object>',
    })  
    .then(CreditCardToken => console.log(CreditCardToken)) // use received 'CreditCardToken'
    .catch(err => console.error(err)) // handle error
    Parameter Type Possible Values Description
    apiKey string API key previously obtained from S2P server
    environment string ‘DEV’
    ‘TEST’
    ‘LIVE’
    select the environment
    DEV
    http://localhost/v1/card/authenticate
    TEST
    https://securetest.smart2pay.com/v1/card/authenticate
    LIVE
    https://secure.smart2pay.com/v1/card/authenticate
    cardDetails JSON object check sample bellow card authentication details in JSON format

    Sample card details object:

    
    {
        "CardAuthentication": {
            "Customer": {
                "FirstName": "John",
                "LastName": "Doe",
                "Email": "testing2@test.com",
                "SocialSecurityNumber": "00003456789"
            },
            "BillingAddress": {
                "Country": "BR"
            },
            "Card": {
                "HolderName": "John Doe",
                "Number": "4111111111111111",
                "ExpirationMonth": "02",
                "ExpirationYear": "2029",
                "SecurityCode": "312"
            }
        }
    }

    ES6 – Promise + XMLHttpRequest

    Installation
    Import the following script that will make available tokenizeCard_fetch():

    <script src="https://..../tokenizeCard_promise.js" type="text/javascript"></script>

    Usage

    Use tokenizeCard_promise to send the required data and handle response / error:

    tokenizeCard_promise({
        apiKey: '<apikey string>',
        environment: '<environment string>',
        cardDetails: '<cardDetails object>',
    })
    .then(function (CreditCardToken) {
        // use received 'CreditCardToken'
        console.log(CreditCardToken);
    })
    .catch(function (err) {
        // handle error
        console.error(err.status, err.statusText);
    });
    
    Parameter Type Possible Values Description
    apiKey string API key previously obtained from S2P server
    environment string ‘DEV’
    ‘TEST’
    ‘LIVE’
    select the environment
    DEV
    http://localhost/v1/card/authenticate
    TEST
    https://securetest.smart2pay.com/v1/card/authenticate
    LIVE
    https://secure.smart2pay.com/v1/card/authenticate
    cardDetails JSON object check sample bellow card authentication details in JSON format

    Sample card details object:

    
    {
        "CardAuthentication": {
            "Customer": {
                "FirstName": "John",
                "LastName": "Doe",
                "Email": "testing2@test.com",
                "SocialSecurityNumber": "00003456789"
            },
            "BillingAddress": {
                "Country": "BR"
            },
            "Card": {
                "HolderName": "John Doe",
                "Number": "4111111111111111",
                "ExpirationMonth": "02",
                "ExpirationYear": "2029",
                "SecurityCode": "312"
            }
        }
    }

    ES5 – XMLHttpRequest

    Installation
    Import the following script that will make available tokenizeCard():

    <script src="https://..../tokenizeCard.js" type="text/javascript"></script>

    ES5 – Usage

    Create a function where you handle the received CreditCardToken:

    function handleRequest(CreditCardToken) {
        // use received 'CreditCardToken'
        console.log(CreditCardToken);
    }

    Create a function to handle any received errors:

    function handleError(HttpStatusCode, errorText) {
        // handle error
        console.error(HttpStatusCode, errorText);
    }

    Use tokenizeCard() to send the required data and handlers:

    tokenizeCard({
        apiKey: '<𝘢𝘱𝘪𝘬𝘦𝘺 𝘴𝘵𝘳𝘪𝘯𝘨>', 
        environment: '<𝘦𝘯𝘷𝘪𝘳𝘰𝘯𝘮𝘦𝘯𝘵 𝘴𝘵𝘳𝘪𝘯𝘨>',
        cardDetails: '<𝘤𝘢𝘳𝘥𝘋𝘦𝘵𝘢𝘪𝘭𝘴 𝘰𝘣𝘫𝘦𝘤𝘵>',
        handleRequest: '<𝘩𝘢𝘯𝘥𝘭𝘦𝘙𝘦𝘲𝘶𝘦𝘴𝘵 𝘤𝘢𝘭𝘭𝘣𝘢𝘤𝘬>',
        handleError: '<𝘩𝘢𝘯𝘥𝘭𝘦𝘌𝘳𝘳𝘰𝘳 𝘤𝘢𝘭𝘭𝘣𝘢𝘤𝘬>'
    });
    
    Parameter Type Possible Values Description
    apiKey string API key previously obtained from S2P server
    environment string ‘DEV’
    ‘TEST’
    ‘LIVE’
    select the environment
    DEV
    http://localhost/v1/card/authenticate
    TEST
    https://securetest.smart2pay.com/v1/card/authenticate
    LIVE
    https://secure.smart2pay.com/v1/card/authenticate
    cardDetails JSON object check sample bellow card authentication details in JSON format
    handleRequest callback function a Javascript function that will receive CreditCardToken as a parameter
    handleError callback function a Javascript function that will receive an error code: HttpStatusCode and errorText parameters

    Sample card details object:

    
    {
        "CardAuthentication": {
            "Customer": {
                "FirstName": "John",
                "LastName": "Doe",
                "Email": "testing2@test.com",
                "SocialSecurityNumber": "00003456789"
            },
            "BillingAddress": {
                "Country": "BR"
            },
            "Card": {
                "HolderName": "John Doe",
                "Number": "4111111111111111",
                "ExpirationMonth": "02",
                "ExpirationYear": "2029",
                "SecurityCode": "312"
            }
        }
    }

    Nuvei JS – SDK Instructions

    Nuvei JS – SDK is available here: https://github.com/Smart2Pay/js-sdk.

    The interaction flow is described next:

    1. Upon order initiation from the customer
    2. Your server asks our server for a temporary API Key at entry point api/authorization/apikey:

      Request:

      POST https://securetest.smart2pay.com/v1/authorization/apikey
      Authorization: Basic MzAyMDE6aEo1Um9iWXg5cjdGZk53Q3ZIWTlMWEhxcXIrRkV6cmM3YUp2UVFrNEdhejFtZzdSeXk=
    3. Our server responds with a temporary API Key:

      Response:

      HTTP/1.1 201 Created
      Content-Type: application/json; charset=utf-8
      
      {
        "ApiKey": {
          "Value": "MzAwMDc6M2FkODVhYzctNjhlNS00MTA2LTliNjctNTg3MmM1ZmI2ZDNiLTYzMzA=",
          "Created": "20181206141407",
          "LifeTime": 30,
          "AccessCounterLimit": 10,
          "Status": {
            "ID": 2,
            "Info": "Success",
            "Reasons": []
          }
        }
      }
    4. The temporary API Key must be passed to the site.
    5. Collect from your site the credit card details from which you build a cardDetails object and pass it to our SDK together with the temporary API key obtained in the previous step. Any error will be available inside the promise’s catch method.
      tokenizeCard_fetch({
          apiKey: '<apikey string>',
          environment: '<environment string>',
          cardDetails: '<cardDetails object>',
      })
          .then(CreditCardToken => console.log(CreditCardToken))
          .catch(err => console.error(err))
      

    6. Our SDK sends these details to our server.
    7. The server responds with a token to our SDK.
    8. Our SDK makes the credit card token available inside the tokenizeCard_fetch promise’s response.
    9. The order can now be submitted from the site to your server together with the token.
    10. A credit card transaction using the token is now initiated from your server. For more details go to: Recurring Card Payments section. You can store the token on your server for subsequent purchases.
    11. Our server responds to your server with the Authorization result. Upon a successful result you can release the goods or services.
    12. You pass the payment result to your site.

    SDK is now fully functional in your app!

    Interac Instant Test Data

    See how Interac Instant works with the payment flows for Interac e-Transfer. In order for you to test the Interac Instant payment method successfully, please use the test data provided. You will need a Canada VPN connection in order to successfully perform an end to end test.

    Interac Instant – Interac e-Transfer Payment Flow

    Interac Instant Test Data – Interac e-Transfer Option
    Data Value
    First Name: Larry
    Last Name: Johnson
    Email Address: Enter any valid email address. Example: person@test.com
    Phone Number: Enter any 10 digit number. Example: 0745123456
    1. The customer enters his email address, name and phone number.

      1 Select payment option

    2. The customer is redirected to the Interac Instant app where he chooses his Bank.

      1 Select payment option

    3. The customer chooses to pay via Interac e-Transfer.

      1 Card details

    4. The customer is redirected to the payment info page where he can see all the information needed to make an Interac e-Transfer deposit. The customer needs to go to his bank’s mobile app or website to complete the transfer.

      1 PIN Number

    Pay With Crypto Payment Flow – Production user experience EUR – BTC

    To see how it works on Production environment please checkout the following payment flow from EUR to BTC.

    Pay With Crypto Payment Flow

    1. Make a REST request using the below parameters:
      Customer Email is a required parameter (if sent in the initial request, a step in the flow will be skipped, as this parameter can also be collected on our side).

      Request:

      POST https://pay.smart2pay.com/v1/payments
      
      {
        "Payment": {
          "MerchantTransactionID": "cdrest312",
          "Amount": 3000,
          "Currency": "EUR",
          "MethodID": "97",
          "Description": "Pay with Crypto Test payment",
          "ReturnURL": "http://demo.smart2pay.com/redirect.php", 
          "TokenLifetime": 10,
          "Customer": {
            "Email": "john@test.com"
           },
          "BillingAddress": {
            "Country": "DE"
            }
          }
        }
      

      Response:

      HTTP/1.1 201 Created
      Content-Type: application/json; charset=utf-8
      
      {
          "Payment": {
              "ID": 455100364,
              "SkinID": null,
              "ClientIP": null,
              "Created": "20210402080607",
              "MerchantTransactionID": "cdrest312",
              "OriginatorTransactionID": null,
              "Amount": "3000",
              "Currency": "EUR",
              "CapturedAmount": null,
              "ReturnURL": "http://demo.smart2pay.com/redirect.php",
              "Description": " Pay with Crypto Test payment",
              "MethodID": 97,
              "MethodOptionID": null,
              "IncludeMethodIDs": null,
              "ExcludeMethodIDs": null,
              "PrioritizeMethodIDs": null,
              "SiteID": 30025,
              "NotificationDateTime": null,
              "Customer": {
                  "MerchantCustomerID": null,
                  "Email": null,
                  "FirstName": null,
                  "LastName": null,
                  "Gender": null,
                  "SocialSecurityNumber": null,
                  "Phone": null,
                  "Company": null,
                  "DateOfBirth": null
              },
              "BillingAddress": {
                  "City": null,
                  "ZipCode": null,
                  "State": null,
                  "Street": null,
                  "StreetNumber": null,
                  "HouseNumber": null,
                  "HouseExtension": null,
                  "Country": "DE"
              },
              "ShippingAddress": null,
              "Articles": null,
              "Details": null,
              "ReferenceDetails": null,
              "CustomParameters": null,
              "PreapprovalID": null,
              "Status": {
                  "ID": 1,
                  "Info": "Open",
                  "Reasons": null
              },
              "Fraud": null,
              "MethodTransactionID": null,
              "TokenLifetime": 10,
              "Capture": null,
              "PreapprovalDetails": null,
              "RedirectURL": "https://globalapi.smart2pay.com/Home?PaymentToken=AC38A391BBCA8A3B594B144D92115BB5.455100364",
              "Splits": null
          }
      }
      
    2. The user is redirected to the Crypto processor page where they are prompted to choose the cryptocurrency in which the payment will be made1 Payment details
    3. After choosing the crypto currency, the customer can complete the payment by using the QR Code or by copying the crypto address and the exact amount displayed on page. The user has 3 hours to complete the payment.1 Account login
    4. The user goes to his crypto wallet to complete the payment by clicking on the Send button (from Send&Receive section). In this section it is required to add the crypto address that he previously saved and the Amount in BTC.
      1 Account login
    5. The user validates the transaction via a link sent to their linked email address of the Crypto Account (this might apply only to some Crypto Accounts).

      1 Account login

      1 Account login

    6. The user confirms the BTC transfer.

      1 Account login

      1 Account login

    7. The customer is redirected to a payment processing message page.
      1 Account login
    8. At the same time, as soon as the payment is completed the user receives this in their Crypto Wallet.
      1 Account login
    9. Upon completion of the payment flow, the customer is redirected to the Merchant Redirect URL (Merchant Website).
      1 Account login
    10. We will notify you about the new status of the payout 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": 455100364,
          "SkinID": null,
          "ClientIP": null,
          "Created": "20210402080607",
          "MerchantTransactionID": "cdrest312",
          "OriginatorTransactionID": null,
          "Amount": "3000",
          "Currency": "EUR",
          "CapturedAmount": null,
          "ReturnURL": "http://demo.smart2pay.com/redirect.php",
          "Description": " Pay with Crypto Test payment",
          "MethodID": 97,
          "MethodOptionID": null,
          "IncludeMethodIDs": null,
          "ExcludeMethodIDs": null,
          "PrioritizeMethodIDs": null,
          "SiteID": 30025,
          "NotificationDateTime": null,
          "Customer": null,
          "BillingAddress": null,
          "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://globalapi.smart2pay.com/Home?PaymentToken=AC38A391BBCA8A3B594B144D92115BB5.455100364",
          "Splits": null
        }
      }
      

      Response:

      204 No Content

    Clave Test Data

    In order for you to test Clave payment method successfully, please use the test data provided. You will need a Panama VPN connection in order to successfully perform an end to end test.

    Clave Payment Flow

    Clave Test Data
    Data Value
    Email Address: Enter any valid email address. Example: youre@email.com
    Phone Number: Enter any 7 digit number following the prefix +507. Example: 8339956
    Card Number: 5038460000000019
    Security Code ((CVV2, CVC2): 475
    Expiration Date: 04-21
    PIN Number: 1234
    1. The customer enters his email address and phone number and clicks on the Generate payment button.

      1 Select payment option

    2. The customer is redirected to Clave option page where he needs to register his credit card and customer details by entering the correct information for: Card Number, CVV, Expiration Date, PIN number, Last Name, First Name, Phone Number and Email Address. He continues the payment by clicking on the Accept button.

      1 Card details

    3. The customer enters his PIN Number and clicks on the Confirm button.

      1 PIN Number

    4. The customer clicks on the Verify PIN button.

      1 Verify PIN

    5. The customer is redirected to the confirmation page where he sees the payment details and clicks on the Confirm button.

      1 confirmation page

      1 Processing

    6. Upon completion of the payment flow the customer is redirected back to your ReturnURL.1 Return page when the redirection status is a success

    Pay With Crypto Test Data

    For Pay With Crypto payment method there aren’t any test data available, but you can see how it works on the TEST environment with the payment flow given below. To see how it works on Production environment please checkout the following link: Production Payment Flow.

    Pay With Crypto Payment Flow

    1. The customer enters his email address.1 Customer details
    2. The customer is redirected to the Pay With Crypto page where they are prompted to choose the cryptocurrency in which the payment will be made. For testing purposes, please choose Ethereum.1 Payment details
    3. After choosing the crypto currency, the customer can complete the payment by using the QR Code or by copying the crypto address and the exact amount displayed on page.1 Account login
    4. The customer goes to his crypto wallet to complete the payment by clicking on the Send button.1 Account login
    5. The customer adds the crypto address that he previously saved.1 Account login
    6. The customer adds the exact amount in the Amount field and clicks on the Next button.1 Account login
    7. The customer sees the payment details, including the amount and currency and confirms the payment.1 Account login
    8. The customer is redirected to a payment processing message page.1 Account login
    9. The customer is redirected to a payment confirmation page.1 Account login
    10. Upon completion of the payment flow, the customer is redirected back to your ReturnURL.1 Return page when the redirection status is Success

    Pay4Me Malaysia Test Data

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

    Pay4Me Malaysia Payment Flow

    1. The customer enters his email address, name and phone number.1 Customer details
    2. The customer is shown the details of his payment and proceeds to pay with Pay4Me Malaysia by entering the payer email and contact number.1 Payment details
    3. The customer sees the payment details and the information regarding the completion of the payment.1 Account login
    4. Upon completion of the payment flow, the customer is redirected back to your ReturnURL.1 Return page when the redirection status is Processing

    Payouts Balances

    Access the Payouts Balances tab in order to see and verify your payouts balances. Here you will find a complete list of all of your payouts balances. You have the possibility to search for a specific payout balance using different search filters.

    32

    Search filters

    When you access the Payouts Balances tab, the Search Filters section is expanded. In order to collapse it just click the arrow on the right of the screen.

    You can search payouts by Method, Currency and Site Alias.

    32

    Momo Test Data

    In order for you to test the Momo payment method successfully, please use the below test data. You can also see how it works with the payment flows given below for Desktop and for Mobile devices. For testing purposes, you need to have installed the Momo application on your mobile device.

    Momo Test Data
    Data Value
    Phone Number: 01228038440
    Verification code: 000000
    Payment password: 000000

    Momo Desktop Payment Flow

    1. The customer enters his email address.

      1 Enter email

    2. The customer is redirected to the Momo payment page where he scans the QR Code using the Momo application already installed on his mobile phone. He has 10 minutes in order to successfully scan the QR Code.

      1 QR Code page

    3. After the customer confirms the payment via his mobile phone application, the payment is successful and the user is redirected to the Momo payment confirmation page.

      1 Payment confirmation page.

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

      1 Return page when the redirection status is a success

    Momo Mobile Payment Flow

    1. The customer enters his email address.

      1 Enter email

    2. The customer is redirected to the Momo application already installed on his mobile phone where he logs into the Momo application using his phone number.

      1 Momo application

    3. The customer enters the verification code received via his mobile phone.

      1 Verification code

    4. The customer logs into Momo application by entering his password.

      1 Account password

    5. The customer is redirected to the payment details form where he confirms the payment by clicking on the Confirm button.

       1=

    6. The customer enters his account password in order to complete the payment.

      1 Payment confirmation page

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

      1 Return page when the redirection status is a success

    AlipayHK 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 AlipayHK (1145), 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 AlipayHK (1145) 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 one sent in the Preapproval request.

    Request:

    POST https://paytest.smart2pay.com/v1/payments/recurrent
    Authorization: Basic MzAyMDE6KzlLZUd6S0Y3VzhTLzc5YTVSMzNZSlVnN0U3V0ZOY1piakdmekxWM2JYU25GQ095RnQ=
    
    {
      "Payment": {
        "PreapprovalID": 28082,
        "MerchantTransactionID": "s2ptest_alipayhk2",
        "Amount": 100,
        "Currency": "HKD",
        "MethodID": 1145,
        "Description": "Recurring payment",
        "BillingAddress": {
        "Country": "HK"
        } 
      }
    }

    Response:

    HTTP/1.1 201 Created
    Content-Type: application/json; charset=utf-8
    
    {
        "Payment": {
            "ID": 5879765,
            "SkinID": null,
            "ClientIP": null,
            "Created": "20210202171203",
            "MerchantTransactionID": "s2ptest_alipayhk2",
            "OriginatorTransactionID": null,
            "Amount": "100",
            "Currency": "HKD",
            "CapturedAmount": null,
            "ReturnURL": null,
            "Description": "Recurring payment",
            "MethodID": 1145,
            "MethodOptionID": null,
            "IncludeMethodIDs": null,
            "ExcludeMethodIDs": null,
            "PrioritizeMethodIDs": null,
            "SiteID": 30201,
            "NotificationDateTime": null,
            "Customer": null,
            "BillingAddress": {
                "ID": 986,
                "City": null,
                "ZipCode": null,
                "State": null,
                "Street": null,
                "StreetNumber": null,
                "HouseNumber": null,
                "HouseExtension": null,
                "Country": "HK"
            },
            "ShippingAddress": null,
            "Articles": null,
            "Details": null,
            "ReferenceDetails": null,
            "CustomParameters": null,
            "PreapprovalID": 28082,
            "Status": {
                "ID": 1,
                "Info": "Open",
                "Reasons": null
            },
            "Fraud": null,
            "MethodTransactionID": null,
            "TokenLifetime": null,
            "Capture": null,
            "PreapprovalDetails": null,
            "RedirectURL": null,
            "Splits": 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 MzAyMDE6KzlLZUd6S0Y3VzhTLzc5YTVSMzNZSlVnN0U3V0ZOY1piakdmekxWM2JYU25GQ095RnQ=
    
    {
      "Payment": {
        "ID": 5879765,
        "SkinID": null,
        "ClientIP": null,
        "Created": "20210202171203",
        "MerchantTransactionID": "s2ptest_alipayhk2",
        "OriginatorTransactionID": null,
        "Amount": "100",
        "Currency": "HKD",
        "CapturedAmount": null,
        "ReturnURL": "",
        "Description": "Recurring payment",
        "MethodID": 1145,
        "MethodOptionID": null,
        "IncludeMethodIDs": null,
        "ExcludeMethodIDs": null,
        "PrioritizeMethodIDs": null,
        "SiteID": 30201,
        "NotificationDateTime": null,
        "Customer": null,
        "BillingAddress": {
          "ID": 986,
          "City": null,
          "ZipCode": null,
          "State": null,
          "Street": null,
          "StreetNumber": null,
          "HouseNumber": null,
          "HouseExtension": null,
          "Country": "HK"
        },
        "ShippingAddress": null,
        "Articles": null,
        "Details": null,
        "ReferenceDetails": null,
        "CustomParameters": null,
        "PreapprovalID": 28082,
        "Status": {
          "ID": 2,
          "Info": "Success",
          "Reasons": null
        },
        "Fraud": null,
        "MethodTransactionID": null,
        "TokenLifetime": null,
        "Capture": null,
        "PreapprovalDetails": null,
        "RedirectURL": null,
        "Splits": null
      }
    }

    AlipayHK 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 MzAyMDE6KzlLZUd6S0Y3VzhTLzc5YTVSMzNZSlVnN0U3V0ZOY1piakdmekxWM2JYU25GQ095RnQ=
    
    
    
    {
      "Preapproval": {
        "ID": 28082,
        "Created": "20210202165209",
        "MethodID": 1145,
        "SiteID": 30201,
        "MerchantPreapprovalID": "s2ptest_alipayhk1",
        "RecurringPeriod": null,
        "PreapprovedMaximumAmount": null,
        "Currency": null,
        "ReturnURL": "http://demo.smart2pay.com/redirect.php",
        "Description": "1 year subscription",
        "Customer": {
          "ID": 2625948,
          "MerchantCustomerID": null,
          "Email": "jdoe@gmail.com",
          "FirstName": "John",
          "LastName": "Doe",
          "Gender": null,
          "SocialSecurityNumber": null,
          "Phone": null,
          "Company": null,
          "DateOfBirth": null
        },
        "BillingAddress": {
          "ID": 986,
          "City": null,
          "ZipCode": null,
          "State": null,
          "Street": null,
          "StreetNumber": null,
          "HouseNumber": null,
          "HouseExtension": null,
          "Country": "HK"
        },
        "Status": {
          "ID": 2,
          "Info": null,
          "Reasons": null
        },
        "RedirectURL": null,
        "MethodOptionID": null,
        "PreapprovedFrequency": null,
        "MandateReference": null,
        "Details": null
      }
    }

    AlipayHK 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 AlipayHK (1143).

    Request:

    POST https://paytest.smart2pay.com/v1/preapprovals
    Authorization: Basic MzAyMDE6KzlLZUd6S0Y3VzhTLzc5YTVSMzNZSlVnN0U3V0ZOY1piakdmekxWM2JYU25GQ095RnQ=
    
    {
     "Preapproval": {
       "MerchantPreapprovalID": "s2ptest_alipayhk1",
       "Currency": "HKD",
       "Description": "1 year subscription",
       "ReturnURL": "http://demo.smart2pay.com/redirect.php",
       "MethodID": 1145,
       "Customer": {
          "FirstName": "John",
          "LastName": "Doe",
          "Email": "jdoe@gmail.com"
         },
       "BillingAddress": {
          "Country": "HK"
          }
       }
    }

    Response:

    HTTP/1.1 201 Created
    Content-Type: application/json; charset=utf-8
    
    {
        "Preapproval": {
            "ID": 28082,
            "Created": "20210202165209",
            "MethodID": 1145,
            "SiteID": 30201,
            "MerchantPreapprovalID": "s2ptest_alipayhk1",
            "RecurringPeriod": 0,
            "PreapprovedMaximumAmount": null,
            "Currency": "HKD",
            "ReturnURL": "http://demo.smart2pay.com/redirect.php",
            "Description": "1 year subscription",
            "Customer": {
                "ID": 2625948,
                "MerchantCustomerID": null,
                "Email": "jdoe@gmail.com",
                "FirstName": "John",
                "LastName": "Doe",
                "Gender": null,
                "SocialSecurityNumber": null,
                "Phone": null,
                "Company": null,
                "DateOfBirth": null
            },
            "BillingAddress": {
                "ID": 986,
                "City": null,
                "ZipCode": null,
                "State": null,
                "Street": null,
                "StreetNumber": null,
                "HouseNumber": null,
                "HouseExtension": null,
                "Country": "HK"
            },
            "Status": {
                "ID": 1,
                "Info": "Pending",
                "Reasons": null
            },
            "RedirectURL": "https://europaytest.smart2pay.com/AlipayOSP/Preapproval/PreapprovalLanding.aspx?ID=23265&Hash=030CBF27F3759B369266CCBC5D84C98A",
            "MethodOptionID": 0,
            "PreapprovedFrequency": null,
            "MandateReference": null,
            "Details": null
        }
    }

    AlipayHK Preapproval Flow

    AlipayHK Test Data
    Data Value
    Phone Number: Enter any 10 digit number. Example: 1234567812
    Verification code: Enter any 6 digit number. Example: 123456
    Payment password: Enter any 6 digit number. Example: 123456
    1. The customer is redirected to AlipayHK page. The customer needs to add their phone number attached to the AlipayHK wallet.
      1 Add phone number
    2. The customer enters the SMS verification code received via mobile phone.
      1 Verification Code
    3. The customer sees the preapproval details, agrees with the AlipayHK Terms and Conditions and confirms the auto-debit user agreement.
      1 Confirm agreement
    4. The customer enters the payment password. For testing purposes, enter any 6 digit number eg. 123456.
      1 Confirm agreement
    5. The customer is redirected to the AlipayHK confirmation page.
      1 Confirmation page
    6. Upon completion of the payment flow, the customer is redirected to your ReturnUrl.1 Return page when the redirection status is processing

    Touch’n Go eWallet 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 Touch’n Go eWallet (1144), 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 Touch’n Go eWallet (1144) 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 MzAyMDE6KzlLZUd6S0Y3VzhTLzc5YTVSMzNZSlVnN0U3V0ZOY1piakdmekxWM2JYU25GQ095RnQ=
    
    {
      "Payment": {
        "PreapprovalID": 28080,
        "MerchantTransactionID": "s2ptest_tng2",
        "Amount": 100,
        "Currency": "MYR",
        "MethodID": 1144,
        "Description": "Recurring payment",
        "BillingAddress": {
        "Country": "MY"
        } 
      }
    }

    Response:

    HTTP/1.1 201 Created
    Content-Type: application/json; charset=utf-8
    
    {
        "Payment": {
            "ID": 5879762,
            "SkinID": null,
            "ClientIP": null,
            "Created": "20210202162904",
            "MerchantTransactionID": "s2ptest_tng2",
            "OriginatorTransactionID": null,
            "Amount": "100",
            "Currency": "MYR",
            "CapturedAmount": null,
            "ReturnURL": null,
            "Description": "Recurring payment",
            "MethodID": 1144,
            "MethodOptionID": null,
            "IncludeMethodIDs": null,
            "ExcludeMethodIDs": null,
            "PrioritizeMethodIDs": null,
            "SiteID": 30201,
            "NotificationDateTime": null,
            "Customer": null,
            "BillingAddress": {
                "ID": 701,
                "City": null,
                "ZipCode": null,
                "State": null,
                "Street": null,
                "StreetNumber": null,
                "HouseNumber": null,
                "HouseExtension": null,
                "Country": "MY"
            },
            "ShippingAddress": null,
            "Articles": null,
            "Details": null,
            "ReferenceDetails": null,
            "CustomParameters": null,
            "PreapprovalID": 28080,
            "Status": {
                "ID": 1,
                "Info": "Open",
                "Reasons": null
            },
            "Fraud": null,
            "MethodTransactionID": null,
            "TokenLifetime": null,
            "Capture": null,
            "PreapprovalDetails": null,
            "RedirectURL": null,
            "Splits": 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 MzAyMDE6KzlLZUd6S0Y3VzhTLzc5YTVSMzNZSlVnN0U3V0ZOY1piakdmekxWM2JYU25GQ095RnQ=
    
    {
      "Payment": {
        "ID": 5879762,
        "SkinID": null,
        "ClientIP": null,
        "Created": "20210202162904",
        "MerchantTransactionID": "s2ptest_tng2",
        "OriginatorTransactionID": null,
        "Amount": "100",
        "Currency": "MYR",
        "CapturedAmount": null,
        "ReturnURL": "",
        "Description": "Recurring payment",
        "MethodID": 1144,
        "MethodOptionID": null,
        "IncludeMethodIDs": null,
        "ExcludeMethodIDs": null,
        "PrioritizeMethodIDs": null,
        "SiteID": 30201,
        "NotificationDateTime": null,
        "Customer": null,
        "BillingAddress": {
          "ID": 701,
          "City": null,
          "ZipCode": null,
          "State": null,
          "Street": null,
          "StreetNumber": null,
          "HouseNumber": null,
          "HouseExtension": null,
          "Country": "MY"
        },
        "ShippingAddress": null,
        "Articles": null,
        "Details": null,
        "ReferenceDetails": null,
        "CustomParameters": null,
        "PreapprovalID": 28080,
        "Status": {
          "ID": 2,
          "Info": "Success",
          "Reasons": null
        },
        "Fraud": null,
        "MethodTransactionID": null,
        "TokenLifetime": null,
        "Capture": null,
        "PreapprovalDetails": null,
        "RedirectURL": null,
        "Splits": null
      }
    }

    Touch’n Go eWallet 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 MzAyMDE6KzlLZUd6S0Y3VzhTLzc5YTVSMzNZSlVnN0U3V0ZOY1piakdmekxWM2JYU25GQ095RnQ=
    
    
    
    {
      "Preapproval": {
        "ID": 28080,
        "Created": "20210202161103",
        "MethodID": 1144,
        "SiteID": 30201,
        "MerchantPreapprovalID": "s2ptest_tng1",
        "RecurringPeriod": null,
        "PreapprovedMaximumAmount": null,
        "Currency": null,
        "ReturnURL": "http://demo.smart2pay.com/redirect.php",
        "Description": "1 year subscription",
        "Customer": {
          "ID": 2625948,
          "MerchantCustomerID": null,
          "Email": "jdoe@gmail.com",
          "FirstName": "John",
          "LastName": "Doe",
          "Gender": null,
          "SocialSecurityNumber": null,
          "Phone": null,
          "Company": null,
          "DateOfBirth": null
        },
        "BillingAddress": {
          "ID": 701,
          "City": null,
          "ZipCode": null,
          "State": null,
          "Street": null,
          "StreetNumber": null,
          "HouseNumber": null,
          "HouseExtension": null,
          "Country": "MY"
        },
        "Status": {
          "ID": 2,
          "Info": null,
          "Reasons": null
        },
        "RedirectURL": null,
        "MethodOptionID": null,
        "PreapprovedFrequency": null,
        "MandateReference": null,
        "Details": null
      }
    }

    Touch’n Go eWallet 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 Touch’n Go eWallet (1144).

    Request:

    POST https://paytest.smart2pay.com/v1/preapprovals
    Authorization: Basic MzAyMDE6KzlLZUd6S0Y3VzhTLzc5YTVSMzNZSlVnN0U3V0ZOY1piakdmekxWM2JYU25GQ095RnQ=
    
    {
     "Preapproval": {
       "MerchantPreapprovalID": "s2ptest_tng1",
       "Currency": "MYR",
       "Description": "1 year subscription",
       "ReturnURL": "http://demo.smart2pay.com/redirect.php",
       "MethodID": 1144,
       "Customer": {
          "FirstName": "John",
          "LastName": "Doe",
          "Email": "jdoe@gmail.com"
         },
       "BillingAddress": {
          "Country": "MY"
          }
       }
    }

    Response:

    HTTP/1.1 201 Created
    Content-Type: application/json; charset=utf-8
    
    {
        "Preapproval": {
            "ID": 28080,
            "Created": "20210202161103",
            "MethodID": 1144,
            "SiteID": 30201,
            "MerchantPreapprovalID": "s2ptest_tng1",
            "RecurringPeriod": 0,
            "PreapprovedMaximumAmount": null,
            "Currency": "MYR",
            "ReturnURL": "http://demo.smart2pay.com/redirect.php",
            "Description": "1 year subscription",
            "Customer": {
                "ID": 2625948,
                "MerchantCustomerID": null,
                "Email": "jdoe@gmail.com",
                "FirstName": "John",
                "LastName": "Doe",
                "Gender": null,
                "SocialSecurityNumber": null,
                "Phone": null,
                "Company": null,
                "DateOfBirth": null
            },
            "BillingAddress": {
                "ID": 701,
                "City": null,
                "ZipCode": null,
                "State": null,
                "Street": null,
                "StreetNumber": null,
                "HouseNumber": null,
                "HouseExtension": null,
                "Country": "MY"
            },
            "Status": {
                "ID": 1,
                "Info": "Pending",
                "Reasons": null
            },
            "RedirectURL": "https://europaytest.smart2pay.com/AlipayOSP/Preapproval/PreapprovalLanding.aspx?ID=23263&Hash=DE44DA5FA939A8B396DDE346A66835D6",
            "MethodOptionID": 0,
            "PreapprovedFrequency": null,
            "MandateReference": null,
            "Details": null
        }
    }

    Touch’n Go eWallet Preapproval Flow

    Touch’n Go eWalle Test Data
    Data Value
    Phone Number: Enter any 10 digit number. Example: 1234567812
    PIN Number: Enter any 6 digit number. Example: 123456
    1. The customer is redirected to Touch’n Go page. The customer needs to add their phone number attached to the Touch’n wallet and the 6 digit PIN. For testing purposes, please enter any 6 digit number eg. 123456.
      1 Add phone number
    2. The customer confirms the auto-debit user agreement.
      1 Confirm agreement
    3. The customer is redirected to the Touch’n Go confirmation page.
      1 Add phone number
    4. Upon completion of the payment flow, the customer is redirected to your ReturnUrl.1 Return page when the redirection status is processing

    Truemoney 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 Truemoney (1143), 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 Truemoney (1143) 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 MzAyMDE6KzlLZUd6S0Y3VzhTLzc5YTVSMzNZSlVnN0U3V0ZOY1piakdmekxWM2JYU25GQ095RnQ=
    
    {
      "Payment": {
        "PreapprovalID": 28076,
        "MerchantTransactionID": "s2ptest_truemoney1",
        "Amount": 100,
        "Currency": "THB",
        "MethodID": 1143,
        "Description": "recurring payment",
        "BillingAddress": {
        "Country": "TH"
        } 
      }
    }

    Response:

    HTTP/1.1 201 Created
    Content-Type: application/json; charset=utf-8
    
    {
        "Payment": {
            "ID": 5879743,
            "SkinID": null,
            "ClientIP": null,
            "Created": "20210202154700",
            "MerchantTransactionID": "s2ptest_truemoney1",
            "OriginatorTransactionID": null,
            "Amount": "100",
            "Currency": "THB",
            "CapturedAmount": null,
            "ReturnURL": null,
            "Description": "recurring payment",
            "MethodID": 1143,
            "MethodOptionID": null,
            "IncludeMethodIDs": null,
            "ExcludeMethodIDs": null,
            "PrioritizeMethodIDs": null,
            "SiteID": 30201,
            "NotificationDateTime": null,
            "Customer": null,
            "BillingAddress": {
                "ID": 1540,
                "City": null,
                "ZipCode": null,
                "State": null,
                "Street": null,
                "StreetNumber": null,
                "HouseNumber": null,
                "HouseExtension": null,
                "Country": "TH"
            },
            "ShippingAddress": null,
            "Articles": null,
            "Details": null,
            "ReferenceDetails": null,
            "CustomParameters": null,
            "PreapprovalID": 28076,
            "Status": {
                "ID": 1,
                "Info": "Open",
                "Reasons": null
            },
            "Fraud": null,
            "MethodTransactionID": null,
            "TokenLifetime": null,
            "Capture": null,
            "PreapprovalDetails": null,
            "RedirectURL": null,
            "Splits": 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 MzAyMDE6KzlLZUd6S0Y3VzhTLzc5YTVSMzNZSlVnN0U3V0ZOY1piakdmekxWM2JYU25GQ095RnQ=
    
    {
      "Payment": {
        "ID": 5879743,
        "SkinID": null,
        "ClientIP": null,
        "Created": "20210202154700",
        "MerchantTransactionID": "s2ptest_truemoney1",
        "OriginatorTransactionID": null,
        "Amount": "100",
        "Currency": "THB",
        "CapturedAmount": null,
        "ReturnURL": "",
        "Description": "recurring payment",
        "MethodID": 1143,
        "MethodOptionID": null,
        "IncludeMethodIDs": null,
        "ExcludeMethodIDs": null,
        "PrioritizeMethodIDs": null,
        "SiteID": 30201,
        "NotificationDateTime": null,
        "Customer": null,
        "BillingAddress": {
          "ID": 1540,
          "City": null,
          "ZipCode": null,
          "State": null,
          "Street": null,
          "StreetNumber": null,
          "HouseNumber": null,
          "HouseExtension": null,
          "Country": "TH"
        },
        "ShippingAddress": null,
        "Articles": null,
        "Details": null,
        "ReferenceDetails": null,
        "CustomParameters": null,
        "PreapprovalID": 28076,
        "Status": {
          "ID": 2,
          "Info": "Success",
          "Reasons": null
        },
        "Fraud": null,
        "MethodTransactionID": null,
        "TokenLifetime": null,
        "Capture": null,
        "PreapprovalDetails": null,
        "RedirectURL": null,
        "Splits": null
      }
    }

    Truemoney 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 MzAyMDE6KzlLZUd6S0Y3VzhTLzc5YTVSMzNZSlVnN0U3V0ZOY1piakdmekxWM2JYU25GQ095RnQ=
    
    
    
    {
      "Preapproval": {
        "ID": 28076,
        "Created": "20210202153841",
        "MethodID": 1143,
        "SiteID": 30201,
        "MerchantPreapprovalID": "s2ptest_truemoney3",
        "RecurringPeriod": null,
        "PreapprovedMaximumAmount": null,
        "Currency": null,
        "ReturnURL": "http://demo.smart2pay.com/redirect.php",
        "Description": "1 year subscription",
        "Customer": {
          "ID": 2625948,
          "MerchantCustomerID": null,
          "Email": "jdoe@gmail.com",
          "FirstName": "John",
          "LastName": "Doe",
          "Gender": null,
          "SocialSecurityNumber": null,
          "Phone": null,
          "Company": null,
          "DateOfBirth": null
        },
        "BillingAddress": {
          "ID": 1540,
          "City": null,
          "ZipCode": null,
          "State": null,
          "Street": null,
          "StreetNumber": null,
          "HouseNumber": null,
          "HouseExtension": null,
          "Country": "TH"
        },
        "Status": {
          "ID": 2,
          "Info": null,
          "Reasons": null
        },
        "RedirectURL": null,
        "MethodOptionID": null,
        "PreapprovedFrequency": null,
        "MandateReference": null,
        "Details": null
      }
    }

    Truemoney 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 Truemoney (1143).

    Request:

    POST https://paytest.smart2pay.com/v1/preapprovals
    Authorization: Basic MzAyMDE6KzlLZUd6S0Y3VzhTLzc5YTVSMzNZSlVnN0U3V0ZOY1piakdmekxWM2JYU25GQ095RnQ=
    
    {
     "Preapproval": {
       "MerchantPreapprovalID": "s2ptest_truemoney3",
       "Currency": "THB",
       "Description": "1 year subscription",
       "ReturnURL": "http://demo.smart2pay.com/redirect.php",
       "MethodID": 1143,
       "Customer": {
          "FirstName": "John",
          "LastName": "Doe",
          "Email": "jdoe@gmail.com"
         },
       "BillingAddress": {
          "Country": "TH"
          }
       }
    }

    Response:

    HTTP/1.1 201 Created
    Content-Type: application/json; charset=utf-8
    
    {
        "Preapproval": {
            "ID": 28076,
            "Created": "20210202153841",
            "MethodID": 1143,
            "SiteID": 30201,
            "MerchantPreapprovalID": "s2ptest_truemoney3",
            "RecurringPeriod": 0,
            "PreapprovedMaximumAmount": null,
            "Currency": "THB",
            "ReturnURL": "http://demo.smart2pay.com/redirect.php",
            "Description": "1 year subscription",
            "Customer": {
                "ID": 2625948,
                "MerchantCustomerID": null,
                "Email": "jdoe@gmail.com",
                "FirstName": "John",
                "LastName": "Doe",
                "Gender": null,
                "SocialSecurityNumber": null,
                "Phone": null,
                "Company": null,
                "DateOfBirth": null
            },
            "BillingAddress": {
                "ID": 1540,
                "City": null,
                "ZipCode": null,
                "State": null,
                "Street": null,
                "StreetNumber": null,
                "HouseNumber": null,
                "HouseExtension": null,
                "Country": "TH"
            },
            "Status": {
                "ID": 1,
                "Info": "Pending",
                "Reasons": null
            },
            "RedirectURL": "https://europaytest.smart2pay.com/AlipayOSP/Preapproval/PreapprovalLanding.aspx?ID=23259&Hash=50143980E584E7DEE54CBA48BA1EC543",
            "MethodOptionID": 0,
            "PreapprovedFrequency": null,
            "MandateReference": null,
            "Details": null
        }
    }

    Truemoney Preapproval Flow

    Truemoney Test Data
    Data Value
    Phone Number: Enter any 10 digit number. Example: 1234567812
    Password: Enter any 4 digit number. Example: 1234
    1. The customer is redirected to Truemoney page. The customer needs to add their phone number attached to the Truemoney wallet and the password.1 Add phone number
    2. The customer confirms the auto-debit user agreement1 Confirm agreement
    3. Upon completion of the payment flow, the customer is redirected to your ReturnUrl.1 Return page when the redirection status is processing

    Truemoney Test Data

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

    Truemoney Payment Flow

    1. The customer is redirected to the Truemoney website where they are prompted to scan a QR code using the Truemoney app.

      1 Type of payment

    2. The user confirms the payment and it is redirected to the Result page.

      1 Payment confirmation

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

      1 Return page when the redirection status is a success

    Touch’n Go eWallet Test Data

    For Touch’n Go eWallet 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 eWallet Payment Flow

    1. The customer is redirected to the Touch’n Go website where they are prompted to scan a QR code using the Touch’n Go app.

      1 Type of payment

    2. The user confirms the payment and it is redirected to the Result page.

      1 Payment confirmation

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

      1 Return page when the redirection status is a success

    AlipayHK Test Data

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

    AlipayHK Test Data
    Data Value
    Phone Number: Enter any 10 digit number. Example: 1234567812
    Authentication code: Enter any 6 digit number. Example: 123456
    Payment password: Enter any 6 digit number. Example: 123456

    AlipayHK Payment Flow

    1. The customer is redirected to the AlipayHK website where they are prompted to scan a QR code using the AlipayHK app.

      1 Enter phone

    2. The customer is redirected to AlipayHK page. The user needs to add their phone number attached to the AlipayHK wallet and request a verification code.

      1 Enter Authentication Code

    3. The customer needs to enter the verification code received via SMS on the phone number linked to the AlipayHK wallet.

      1 Account login

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

      1 Payment password

    5. The user needs to enter the payment password.

      1 Payment password

    6. The user is redirected to the payment confirmation page where he can see the payment amount details.

      1 Payment password

    7. The payment is successful and the user is redirected to the AlipayHK payment confirmation page.

      1 Payment password

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

      1 Return page when the redirection status is a success

    KakaoPay Test Data

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

    Kakaopay Payment Flow

    1. The customer is redirected to the KakaoPay website where they are prompted to scan a QR code using the KakaoPay app. For testing purposes the minimum payment amount is 50 KRW.

      1 Type of payment

    2. The customer confirms the payment using biometric verification or their 6-digit PIN.

      1 Payment confirmation

    3. The customer sees the payment details and a message confirmation of the payment.

      1 Payment confirmation

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

      1 Return page when the redirection status is a success

    Marketplace Split Payments API

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

    Also MethodID is required to be sent for Payments with Splits.

    The Authorization header of the request must contain the SiteID and APIKey of the Marketplace.

    One-Step Split Payments

    Definition: POST /v1/payments

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

    Request:

    POST https://paytest.smart2pay.com/v1/payments
    Authorization: Basic MzAyMDE6KzlLZUd6S0Y3VzhTLzc5YTVSMzNZSlVnN0U3V0ZOY1piakdmekxWM2JYU25GQ095RnQ=
    
    {
      "Payment": {
        "MerchantTransactionID": "s2ptest_split1",
        "Amount": "100",
        "Currency": "EUR",      
        "MethodID": 9,
        "OriginatorTransactionID": "4324322",
        "ReturnURL": "http://demo.smart2pay.com/redirect.php",      
        "TokenLifetime": 10,
        "Customer": {    
          "Email": "youremail@email.com",
          "FirstName": "test",
          "LastName": "demo"      
        },    
        "BillingAddress":  {
        "Country": "RO"
        },
        "Splits": [
         {
          "SiteID": 33513,  
          "Amount": "60",
          "MerchantTransactionID": "s2p_test1ad", 
          "OriginatorTransactionID": "4324322-A"
       },
        {
          "SiteID":33512,  
          "Amount": "20",
          "MerchantTransactionID": "s2p_test1ad", 
          "OriginatorTransactionID": "4324322-B"
       },
        {
          "SiteID": 33511,  
          "Amount": "20",
          "MerchantTransactionID": "s2p_test1ad", 
          "OriginatorTransactionID": "4324322-C"
          }
        ]
      }
    }

    Response:

    HTTP/1.1 201 Created
    Content-Type: application/json; charset=utf-8
    
    {
      "Payment": {
        "ID": 5581804,
        "SkinID": null,
        "ClientIP": null,
        "Created": "20201202122951",
        "MerchantTransactionID": "s2ptest_split1",
        "OriginatorTransactionID": "4324322",
        "Amount": "100",
        "Currency": "EUR",
        "CapturedAmount": null,
        "ReturnURL": "http://demo.smart2pay.com/redirect.php",
        "Description": "",
        "MethodID": 9,
        "MethodOptionID": null,
        "IncludeMethodIDs": null,
        "ExcludeMethodIDs": null,
        "PrioritizeMethodIDs": null,
        "SiteID": 33513,
        "NotificationDateTime": null,
        "Customer": {
          "MerchantCustomerID": null,
          "Email": "youremail@email.com",
          "FirstName": "test",
          "LastName": "demo",
          "Gender": null,
          "SocialSecurityNumber": null,
          "Phone": null,
          "Company": null,
          "DateOfBirth": null
        },
        "BillingAddress": {
          "City": null,
          "ZipCode": null,
          "State": null,
          "Street": null,
          "StreetNumber": null,
          "HouseNumber": null,
          "HouseExtension": null,
          "Country": "RO"
        },
        "ShippingAddress": null,
        "Articles": null,
        "Details": null,
        "ReferenceDetails": null,
        "CustomParameters": null,
        "PreapprovalID": null,
        "Status": {
          "ID": 1,
          "Info": "Open",
          "Reasons": null
        },
        "Fraud": null,
        "MethodTransactionID": null,
        "TokenLifetime": 10,
        "Capture": null,
        "PreapprovalDetails": null,
        "RedirectURL": "https://apitest.smart2pay.com/Home?PaymentToken=17CBE5EE17ADF6C3A52EC29B3B1E26B8.5581804",
        "Splits": [
          {
            "ID": 488,
            "PaymentID": 5581804,
            "SiteID": 33513,
            "MerchantTransactionID": "s2p_test1ad",
            "OriginatorTransactionID": "4324322-A",
            "Created": "20201202122951",
            "Amount": "60",
            "Currency": "EUR",
            "CapturedAmount": "",
            "StateDetails": {
              "ID": 1,
              "Info": "Open",
              "Reasons": null
            }
          },
          {
            "ID": 489,
            "PaymentID": 5581804,
            "SiteID": 33512,
            "MerchantTransactionID": "s2p_test1ad",
            "OriginatorTransactionID": "4324322-B",
            "Created": "20201202122951",
            "Amount": "20",
            "Currency": "EUR",
            "CapturedAmount": "",
            "StateDetails": {
              "ID": 1,
              "Info": "Open",
              "Reasons": null
            }
          },
          {
            "ID": 490,
            "PaymentID": 5581804,
            "SiteID": 33511,
            "MerchantTransactionID": "s2p_test1ad",
            "OriginatorTransactionID": "4324322-C",
            "Created": "20201202122951",
            "Amount": "20",
            "Currency": "EUR",
            "CapturedAmount": "",
            "StateDetails": {
              "ID": 1,
              "Info": "Open",
              "Reasons": null
            }
          }
        ]
      }
    }

    When the main payment is updated to success, also all the Splits are updated to success (splits will always have the status of the main payment for One-Step Payments). We will notify you about the Success status 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 MzAyMDE6KzlLZUd6S0Y3VzhTLzc5YTVSMzNZSlVnN0U3V0ZOY1piakdmekxWM2JYU25GQ095RnQ=
    
    {
      "Payment": {
        "ID": 5581804,
        "SkinID": null,
        "ClientIP": null,
        "Created": "20201202122951",
        "MerchantTransactionID": "test1606912191",
        "OriginatorTransactionID": "4324322",
        "Amount": "100",
        "Currency": "EUR",
        "CapturedAmount": null,
        "ReturnURL": "http://demo.smart2pay.com/redirect.php",
        "Description": "",
        "MethodID": 9,
        "MethodOptionID": null,
        "IncludeMethodIDs": null,
        "ExcludeMethodIDs": null,
        "PrioritizeMethodIDs": null,
        "SiteID": 33513,
        "NotificationDateTime": null,
        "Customer": null,
        "BillingAddress": null,
        "ShippingAddress": null,
        "Articles": null,
        "Details": {
          "AccountNumber": null,
          "AccountHolder": "Max Mustermann",
          "IBAN": "DE06000000000023456789",
          "BIC": "SFRTDE20XXX",
          "PrepaidCard": null,
          "PrepaidCardPIN": null,
          "SerialNumbers": null,
          "Wallet": null,
          "ReferenceNumber": null,
          "PayerCountry": "DE",
          "PayerEmail": null,
          "PayerPhone": null,
          "BankCode": null,
          "BankName": null,
          "BankSortCode": null,
          "SocialSecurityNumber": null,
          "BillingCycleStart": null,
          "BillingCycleEnd": null,
          "UnsubscribeInstructions": null,
          "CustomerLoginID": null,
          "PaidAmount": null,
          "PaidCurrency": null,
          "ProviderExchangeRate": 0.0,
          "PayerBankAccountID": null,
          "PayerID": 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=17CBE5EE17ADF6C3A52EC29B3B1E26B8.5581804",
        "Splits": [
          {
            "ID": 488,
            "PaymentID": 5581804,
            "SiteID": 33513,
            "MerchantTransactionID": "s2p_test1ad",
            "OriginatorTransactionID": "4324322-A",
            "Created": "20201202122951",
            "Amount": "60",
            "Currency": "EUR",
            "CapturedAmount": "",
            "StateDetails": {
              "ID": 2,
              "Info": "Success",
              "Reasons": null
            }
          },
          {
            "ID": 489,
            "PaymentID": 5581804,
            "SiteID": 33512,
            "MerchantTransactionID": "s2p_test1ad",
            "OriginatorTransactionID": "4324322-B",
            "Created": "20201202122951",
            "Amount": "23",
            "Currency": "EUR",
            "CapturedAmount": "",
            "StateDetails": {
              "ID": 2,
              "Info": "Success",
              "Reasons": null
            }
          },
          {
            "ID": 490,
            "PaymentID": 5581804,
            "SiteID": 33511,
            "MerchantTransactionID": "s2p_test1ad",
            "OriginatorTransactionID": "4324322-C",
            "Created": "20201202122951",
            "Amount": "20",
            "Currency": "EUR",
            "CapturedAmount": "",
            "StateDetails": {
              "ID": 2,
              "Info": "Success",
              "Reasons": null
            }
          }
        ]
      }
    }

    Adding splits after transaction has received final status

    A new call for Split Payments allows adding splits after the transaction is Success. This behavior is valid also for other statuses, like if the transaction is failed and we make the call for splits, the splits inserted will be set to failed, same as the transaction’s status. Refunds are only allowed for splits. If a refund is made for a transaction before the split call is made, the split call is rejected.
    Checkout the below example for adding splits after the transaction is success.

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

    Where:
    • {id} – GlobalPay Payment ID

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

    Request:

    POST https://paytest.smart2pay.com/v1/payments/5891650/splits
    Authorization: Basic MzAyMDE6KzlLZUd6S0Y3VzhTLzc5YTVSMzNZSlVnN0U3V0ZOY1piakdmekxWM2JYU25GQ095RnQ=
    
    {
    "Splits":[
        {
          "SiteID":33513,  
          "Amount":"50",
          "MerchantTransactionID":"s2p_test1ad", 
          "OriginatorTransactionID":"4324322-A"
        },
        {
          "SiteID":33512,  
          "Amount":"20",
          "MerchantTransactionID":"s2p_test1ad", 
          "OriginatorTransactionID":"4324322-B"
        },
        {
          "SiteID":33511,  
          "Amount":"30",
          "MerchantTransactionID":"s2p_test1ad", 
          "OriginatorTransactionID":"4324322-C"
        }
      ]
    }
    

    Response:

    HTTP/1.1 201 Created
    Content-Type: application/json; charset=utf-8
    
    {
      "Splits": [
        {
          "ID": 1161,
          "PaymentID": 5891650,
          "SiteID": 33513,
          "MerchantTransactionID": "s2p_test1ad",
          "OriginatorTransactionID": "4324322-A",
          "Created": "20210217063428",
          "Amount": "50",
          "Currency": "EUR",
          "CapturedAmount": "",
          "StateDetails": {
            "ID": 2,
            "Info": "Success",
            "Reasons": null
          }
        },
        {
          "ID": 1162,
          "PaymentID": 5891650,
          "SiteID": 33512,
          "MerchantTransactionID": "s2p_test1ad",
          "OriginatorTransactionID": "4324322-B",
          "Created": "20210217063428",
          "Amount": "20",
          "Currency": "EUR",
          "CapturedAmount": "",
          "StateDetails": {
            "ID": 2,
            "Info": "Success",
            "Reasons": null
          }
        },
        {
          "ID": 1163,
          "PaymentID": 5891650,
          "SiteID": 33511,
          "MerchantTransactionID": "s2p_test1ad",
          "OriginatorTransactionID": "4324322-C",
          "Created": "20210217063428",
          "Amount": "30",
          "Currency": "EUR",
          "CapturedAmount": "",
          "StateDetails": {
            "ID": 2,
            "Info": "Success",
            "Reasons": null
          }
        }
      ]
    }
    

    Two-Steps Split Payments

    There are methods for which the successful state is done in 2 steps: Authorization + Capture.

    • Authorize a payment with Splits

      Request:

      POST https://paytest.smart2pay.com/v1/payments
      Authorization: Basic MzAyMDE6KzlLZUd6S0Y3VzhTLzc5YTVSMzNZSlVnN0U3V0ZOY1piakdmekxWM2JYU25GQ095RnQ=
      
      {
        "Payment": {
          "MerchantTransactionID": "SplitPaymentsAuthorized1",
          "Amount": "30",
          "Currency": "EUR",      
          "MethodID": 40,
          "OriginatorTransactionID": "4324322",
          "ReturnURL": "http://demo.smart2pay.com/redirect.php",      
          "TokenLifetime": 10,
          "Customer": {    
            "Email": "youremail@email.com",
            "FirstName": "test",
            "LastName": "person"
                },
          "BillingAddress":
          {
          "Country": "RO"
          },  
          "Splits": [
           {
            "SiteID": 30025,  
            "Amount": "5",
            "MerchantTransactionID": "s2p_test1ad", 
            "OriginatorTransactionID": "4324322-A"
         },
          {
            "SiteID": 30122,  
            "Amount": "5",
            "MerchantTransactionID": "s2p_test1ad", 
            "OriginatorTransactionID": "4324322-B"
         },
          {
            "SiteID": 30126,  
            "Amount": "20",
            "MerchantTransactionID": "s2p_test1ad", 
            "OriginatorTransactionID": "4324322-C"
            }
          ]
        }
      }

      Response:

      HTTP/1.1 201 Created
      Content-Type: application/json; charset=utf-8
      
      {
        "Payment": {
          "ID": 401946443,
          "SkinID": null,
          "ClientIP": null,
          "Created": "20201217115710",
          "MerchantTransactionID": "SplitPaymentsAuthorized1",
          "OriginatorTransactionID": "4324322",
          "Amount": "30",
          "Currency": "EUR",
          "CapturedAmount": null,
          "ReturnURL": "http://demo.smart2pay.com/redirect.php",
          "Description": "",
          "MethodID": 40,
          "MethodOptionID": null,
          "IncludeMethodIDs": null,
          "ExcludeMethodIDs": null,
          "PrioritizeMethodIDs": null,
          "SiteID": 30025,
          "NotificationDateTime": null,
          "Customer": {
            "ID": 3173720,
            "MerchantCustomerID": null,
            "Email": "youremail@email.com",
            "FirstName": "test",
            "LastName": "carmen",
            "Gender": null,
            "SocialSecurityNumber": null,
            "Phone": null,
            "Company": null,
            "DateOfBirth": null
          },
          "BillingAddress": {
            "City": null,
            "ZipCode": null,
            "State": null,
            "Street": null,
            "StreetNumber": null,
            "HouseNumber": null,
            "HouseExtension": null,
            "Country": "RO"
          },
          "ShippingAddress": null,
          "Articles": null,
          "Details": null,
          "ReferenceDetails": null,
          "CustomParameters": null,
          "PreapprovalID": null,
          "Status": {
            "ID": 1,
            "Info": "Open",
            "Reasons": []
            },
          "Fraud": null,
          "MethodTransactionID": null,
          "TokenLifetime": 10,
          "Capture": null,
          "PreapprovalDetails": null,
          "RedirectURL": "https://globalapi.smart2pay.com/Home?PaymentToken=370526947BE17A8A1DBBF5FDB065B809.401946443",
          "Splits": [
            {
              "ID": 22,
              "PaymentID": 401946443,
              "SiteID": 30025,
              "MerchantTransactionID": "s2p_test1ad",
              "OriginatorTransactionID": "4324322-A",
              "Created": "20201217115710",
              "Amount": "5",
              "Currency": "EUR",
              "CapturedAmount": "",
              "StateDetails": {
                "ID": 1,
                "Info": "Open",
                "Reasons": []
              }
            },
            {
              "ID": 23,
              "PaymentID": 401946443,
              "SiteID": 30122,
              "MerchantTransactionID": "s2p_test1ad",
              "OriginatorTransactionID": "4324322-B",
              "Created": "20201217115710",
              "Amount": "5",
              "Currency": "EUR",
              "CapturedAmount": "",
              "StateDetails": {
                "ID": 1,
                "Info": "Open",
                "Reasons": []
              }
            },
            {
              "ID": 24,
              "PaymentID": 401946443,
              "SiteID": 30126,
              "MerchantTransactionID": "s2p_test1ad",
              "OriginatorTransactionID": "4324322-C",
              "Created": "20201217115710",
              "Amount": "20",
              "Currency": "EUR",
              "CapturedAmount": "",
              "StateDetails": {
                "ID": 1,
                "Info": "Open",
                "Reasons": []
              }
            }
          ]
        }
      }

    We will notify you about the Authorize status 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 MzAyMDE6KzlLZUd6S0Y3VzhTLzc5YTVSMzNZSlVnN0U3V0ZOY1piakdmekxWM2JYU25GQ095RnQ=
    
    {
      "Payment": {
        "ID": 401946443,
        "SkinID": null,
        "ClientIP": null,
        "Created": "20201217115710",
        "MerchantTransactionID": "SplitPaymentsAuthorized1",
        "OriginatorTransactionID": "4324322",
        "Amount": "30",
        "Currency": "EUR",
        "CapturedAmount": null,
        "ReturnURL": "http://demo.smart2pay.com/redirect.php",
        "Description": "",
        "MethodID": 40,
        "MethodOptionID": null,
        "IncludeMethodIDs": null,
        "ExcludeMethodIDs": null,
        "PrioritizeMethodIDs": null,
        "SiteID": 30025,
        "NotificationDateTime": null,
        "Customer": {
          "ID": 3173720,
          "MerchantCustomerID": null,
          "Email": "youremail@email.com",
          "FirstName": "test",
          "LastName": "carmen",
          "Gender": null,
          "SocialSecurityNumber": null,
          "Phone": null,
          "Company": null,
          "DateOfBirth": null
        },
        "BillingAddress": {
          "City": null,
          "ZipCode": null,
          "State": null,
          "Street": null,
          "StreetNumber": null,
          "HouseNumber": null,
          "HouseExtension": null,
          "Country": "RO"
        },
        "ShippingAddress": null,
        "Articles": null,
        "Details": null,
        "ReferenceDetails": null,
        "CustomParameters": null,
        "PreapprovalID": null,
        "Status": {
          "ID": 9,
          "Info": "Authorized",
          "Reasons": []
          },
        "Fraud": null,
        "MethodTransactionID": null,
        "TokenLifetime": 10,
        "Capture": null,
        "PreapprovalDetails": null,
        "RedirectURL": "https://globalapi.smart2pay.com/Home?PaymentToken=370526947BE17A8A1DBBF5FDB065B809.401946443",
        "Splits": [
          {
            "ID": 22,
            "PaymentID": 401946443,
            "SiteID": 30025,
            "MerchantTransactionID": "s2p_test1ad",
            "OriginatorTransactionID": "4324322-A",
            "Created": "20201217115710",
            "Amount": "5",
            "Currency": "EUR",
            "CapturedAmount": "",
            "StateDetails": {
              "ID": 9,
              "Info": "Authorized",
              "Reasons": []
            }
          },
          {
            "ID": 23,
            "PaymentID": 401946443,
            "SiteID": 30122,
            "MerchantTransactionID": "s2p_test1ad",
            "OriginatorTransactionID": "4324322-B",
            "Created": "20201217115710",
            "Amount": "5",
            "Currency": "EUR",
            "CapturedAmount": "",
            "StateDetails": {
              "ID": 9,
              "Info": "Authorized",
              "Reasons": []
            }
          },
          {
            "ID": 24,
            "PaymentID": 401946443,
            "SiteID": 30126,
            "MerchantTransactionID": "s2p_test1ad",
            "OriginatorTransactionID": "4324322-C",
            "Created": "20201217115710",
            "Amount": "20",
            "Currency": "EUR",
            "CapturedAmount": "",
            "StateDetails": {
              "ID": 9,
              "Info": "Authorized",
              "Reasons": []
            }
          }
        ]
      }
    }

      • Capture a Split Payment

        Definition: Full Capture – POST /v1/payments/{id}/capture
        Partial Capture – POST /v1/payments/{id}/splits/{id}/capture?{amount}

        Where:
        • payments {id} – GlobalPay Payment ID
        • {amount} – The amount to be captured smaller or equal than the initial authorized amount
        • splits {id} – GlobalPay Split 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.

        Keep in mind that at the moment GlobalPay accepts only one capture per payment!

      • For a Full Capture of a payment the statuses of splits are the same as of the main payment. Checkout the below example of a full captured split payment:
        POST https://paytest.smart2pay.com/v1/payments/5577675/capture
        Authorization: Basic MzAyMDE6aEo1Um9iWXg5cjdGZk53Q3ZIWTlMWEhxcXIrRkV6cmM3YUp2UVFrNEdhejFtZzdSeXk=

        Response:

        HTTP/1.1 200 OK
        Content-Type: application/json; charset=utf-8
        
        {
          "Payment": {
            "ID": 5577675,
            "SkinID": null,
            "ClientIP": null,
            "Created": "20201126114150",
            "MerchantTransactionID": "carmen1606390911",
            "OriginatorTransactionID": "4324322",
            "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": 33513,
            "NotificationDateTime": "20201126114316",
            "Customer": null,
            "BillingAddress": null,
            "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=BBCA1F4A583A3AE6639E97C0589B1FF3.5577675",
            "Splits": [
              {
                "ID": 367,
                "PaymentID": 5577675,
                "SiteID": 33513,
                "MerchantTransactionID": "s2p_test1ad",
                "OriginatorTransactionID": "4324322-A",
                "Created": "20201126114150",
                "Amount": "60",
                "Currency": "EUR",
                "CapturedAmount": "",
                "StateDetails": {
                  "ID": 2,
                  "Info": "Success",
                  "Reasons": null
                }
              },
              {
                "ID": 368,
                "PaymentID": 5577675,
                "SiteID": 33512,
                "MerchantTransactionID": "s2p_test1ad",
                "OriginatorTransactionID": "4324322-B",
                "Created": "20201126114150",
                "Amount": "20",
                "Currency": "EUR",
                "CapturedAmount": "",
                "StateDetails": {
                  "ID": 2,
                  "Info": "Success",
                  "Reasons": null
                }
              },
              {
                "ID": 369,
                "PaymentID": 5577675,
                "SiteID": 33511,
                "MerchantTransactionID": "s2p_test1ad",
                "OriginatorTransactionID": "4324322-C",
                "Created": "20201126114150",
                "Amount": "20",
                "Currency": "EUR",
                "CapturedAmount": "",
                "StateDetails": {
                  "ID": 2,
                  "Info": "Success",
                  "Reasons": null
                }
              }
            ]
          }
        }
        

    We will notify you about the Success status 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. There are methods, such as Post Finance, for which you will receive in the response an intermediate CaptureRequested status (ID = 13), followed by the notification containing the final Success status (ID = 2).

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

    Payment notification format:

    Authorization: Basic MzAyMDE6KzlLZUd6S0Y3VzhTLzc5YTVSMzNZSlVnN0U3V0ZOY1piakdmekxWM2JYU25GQ095RnQ=
    
    {
      "Payment": {
        "ID": 5577639,
        "SkinID": null,
        "ClientIP": null,
        "Created": "20201126093222",
        "MerchantTransactionID": "carmen1606383142",
        "OriginatorTransactionID": "4324322",
        "Amount": "100",
        "Currency": "EUR",
        "CapturedAmount": "100",
        "ReturnURL": "http://demo.smart2pay.com/redirect.php",
        "Description": "",
        "MethodID": 1130,
        "MethodOptionID": null,
        "IncludeMethodIDs": null,
        "ExcludeMethodIDs": null,
        "PrioritizeMethodIDs": null,
        "SiteID": 33513,
        "NotificationDateTime": null,
        "Customer": null,
        "BillingAddress": null,
        "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=8C8518387DAC0D71DC7AB9E3909AD21D.5577639",
        "Splits": [
          {
            "ID": 337,
            "PaymentID": 5577639,
            "SiteID": 33513,
            "MerchantTransactionID": "s2p_test1ad",
            "OriginatorTransactionID": "4324322-A",
            "Created": "20201126093222",
            "Amount": "60",
            "Currency": "EUR",
            "CapturedAmount": "",
            "StateDetails": {
              "ID": 2,
              "Info": "Success",
              "Reasons": null
            }
          },
          {
            "ID": 338,
            "PaymentID": 5577639,
            "SiteID": 33512,
            "MerchantTransactionID": "s2p_test1ad",
            "OriginatorTransactionID": "4324322-B",
            "Created": "20201126093222",
            "Amount": "20",
            "Currency": "EUR",
            "CapturedAmount": "",
            "StateDetails": {
              "ID": 2,
              "Info": "Success",
              "Reasons": null
            }
          },
          {
            "ID": 339,
            "PaymentID": 5577639,
            "SiteID": 33511,
            "MerchantTransactionID": "s2p_test1ad",
            "OriginatorTransactionID": "4324322-C",
            "Created": "20201126093222",
            "Amount": "20",
            "Currency": "EUR",
            "CapturedAmount": "",
            "StateDetails": {
              "ID": 2,
              "Info": "Success",
              "Reasons": null
            }
          }
        ]
      }
    }
    

    • Partial Capture with Splits: each split has CapturedAmount sent in the request, the main payment has CapturedAmount = Sum of CapturedAmount of all the splits sent in request:

      Request:

      POST https://paytest.smart2pay.com/v1/payments/5845686/capture
      Authorization: Basic MzAyMDE6KzlLZUd6S0Y3VzhTLzc5YTVSMzNZSlVnN0U3V0ZOY1piakdmekxWM2JYU25GQ095RnQ={
          "Payment": {
              "Splits": [
              {
                  "ID": 797,
                  "Amount": 10
              },
              {
                  "ID": 798,
                  "Amount": 10
              },
              
              {
                  "ID": 799,
                  "Amount": 20
              }
            ]
          }
      }
      

      Response:

      HTTP/1.1 200 OK
      Content-Type: application/json; charset=utf-8
      
      {
        "Payment": {
          "ID": 5845686,
          "SkinID": null,
          "ClientIP": null,
          "Created": "20201214142216",
          "MerchantTransactionID": "carmen1607955727",
          "OriginatorTransactionID": "4324322",
          "Amount": "100",
          "Currency": "EUR",
          "CapturedAmount": "40",
          "ReturnURL": "http://demo.smart2pay.com/redirect.php",
          "Description": null,
          "MethodID": 94,
          "MethodOptionID": null,
          "IncludeMethodIDs": null,
          "ExcludeMethodIDs": null,
          "PrioritizeMethodIDs": null,
          "SiteID": 33513,
          "NotificationDateTime": "20201214142459",
          "Customer": null,
          "BillingAddress": null,
          "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=082F51365E403515CE1A77CB6668F954.5845686",
          "Splits": [
            {
              "ID": 797,
              "PaymentID": 5845686,
              "SiteID": 33513,
              "MerchantTransactionID": "s2p_test1ad",
              "OriginatorTransactionID": "4324322-A",
              "Created": "20201214142218",
              "Amount": "30",
              "Currency": "EUR",
              "CapturedAmount": "10",
              "StateDetails": {
                "ID": 35,
                "Info": "PartiallyCaptured",
                "Reasons": null
              }
            },
            {
              "ID": 798,
              "PaymentID": 5845686,
              "SiteID": 33512,
              "MerchantTransactionID": "s2p_test1ad",
              "OriginatorTransactionID": "4324322-B",
              "Created": "20201214142218",
              "Amount": "30",
              "Currency": "EUR",
              "CapturedAmount": "10",
              "StateDetails": {
                "ID": 35,
                "Info": "PartiallyCaptured",
                "Reasons": null
              }
            },
            {
              "ID": 799,
              "PaymentID": 5845686,
              "SiteID": 33511,
              "MerchantTransactionID": "s2p_test1ad",
              "OriginatorTransactionID": "4324322-C",
              "Created": "20201214142218",
              "Amount": "40",
              "Currency": "EUR",
              "CapturedAmount": "20",
              "StateDetails": {
                "ID": 35,
                "Info": "PartiallyCaptured",
                "Reasons": null
              }
            }
          ]
        }
      }
      

    • Partial Capture per Splits: the captured Split is set to status PartiallyCaptured but the other Splits remain with status Authorized:
      POST https://paytest.smart2pay.com/v1/payments/5581839/splits/504/capture?amount=10
      Authorization: Basic MzAyMDE6aEo1Um9iWXg5cjdGZk53Q3ZIWTlMWEhxcXIrRkV6cmM3YUp2UVFrNEdhejFtZzdSeXk=

      Response:

      HTTP/1.1 200 OK
      Content-Type: application/json; charset=utf-8
      
      {
        "Payment": {
          "ID": 5581839,
          "SkinID": null,
          "ClientIP": null,
          "Created": "20201202132638",
          "MerchantTransactionID": "carmen1606915598",
          "OriginatorTransactionID": "4324322-A",
          "Amount": "100",
          "Currency": "EUR",
          "CapturedAmount": "10",
          "ReturnURL": "http://demo.smart2pay.com/redirect.php",
          "Description": null,
          "MethodID": 94,
          "MethodOptionID": null,
          "IncludeMethodIDs": null,
          "ExcludeMethodIDs": null,
          "PrioritizeMethodIDs": null,
          "SiteID": 33513,
          "NotificationDateTime": "20201202132859",
          "Customer": null,
          "BillingAddress": null,
          "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=0ABF968F50818372857AEDC9031BF437.5581839",
          "Splits": [
            {
              "ID": 504,
              "PaymentID": 5581839,
              "SiteID": 33512,
              "MerchantTransactionID": "s2p_test1ad",
              "OriginatorTransactionID": "4324322-A",
              "Created": "20201202132638",
              "Amount": "30",
              "Currency": "EUR",
              "CapturedAmount": "10",
              "StateDetails": {
                "ID": 35,
                "Info": "PartiallyCaptured",
                "Reasons": null
              }
            }
          ]
        }
      }
      

    • 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://paytest.smart2pay.com/v1/payments/5583382/cancel
      Authorization: Basic MzAyMDE6KzlLZUd6S0Y3VzhTLzc5YTVSMzNZSlVnN0U3V0ZOY1piakdmekxWM2JYU25GQ095RnQ=

      Response:

      HTTP/1.1 200 OK
      Content-Type: application/json; charset=utf-8
      
      {
        "Payment": {
          "ID": 5583382,
          "SkinID": null,
          "ClientIP": null,
          "Created": "20201204132034",
          "MerchantTransactionID": "carmen1607088034",
          "OriginatorTransactionID": "4324322",
          "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": 33513,
          "NotificationDateTime": "20201204132126",
          "Customer": null,
          "BillingAddress": null,
          "ShippingAddress": null,
          "Articles": null,
          "Details": null,
          "ReferenceDetails": null,
          "CustomParameters": null,
          "PreapprovalID": null,
          "Status": {
            "ID": 3,
            "Info": "Cancelled",
            "Reasons": null
          },
          "Fraud": null,
          "MethodTransactionID": null,
          "TokenLifetime": null,
          "Capture": null,
          "PreapprovalDetails": null,
          "RedirectURL": null,
          "Splits": [
            {
              "ID": 524,
              "PaymentID": 5583382,
              "SiteID": 33513,
              "MerchantTransactionID": "s2p_test1ad",
              "OriginatorTransactionID": "4324322-A",
              "Created": "20201204132034",
              "Amount": "60",
              "Currency": "EUR",
              "CapturedAmount": "",
              "StateDetails": {
                "ID": 3,
                "Info": "Cancelled",
                "Reasons": null
              }
            },
            {
              "ID": 525,
              "PaymentID": 5583382,
              "SiteID": 33512,
              "MerchantTransactionID": "s2p_test1ad",
              "OriginatorTransactionID": "4324322-B",
              "Created": "20201204132034",
              "Amount": "20",
              "Currency": "EUR",
              "CapturedAmount": "",
              "StateDetails": {
                "ID": 3,
                "Info": "Cancelled",
                "Reasons": null
              }
            },
            {
              "ID": 526,
              "PaymentID": 5583382,
              "SiteID": 33511,
              "MerchantTransactionID": "s2p_test1ad",
              "OriginatorTransactionID": "4324322-C",
              "Created": "20201204132034",
              "Amount": "20",
              "Currency": "EUR",
              "CapturedAmount": "",
              "StateDetails": {
                "ID": 3,
                "Info": "Cancelled",
                "Reasons": null
              }
            }
          ]
        }
      }