Google Pay

Introduction

As part of the integration, it is possible to initiate Google Pay payments via imoje within a widget on the shop summary page, without having to go to the imoje gateway page.

Configuration data

To implement the Google Pay widget on your website, follow the instructions in the Google Pay API documentation.

In tokenisationSpecification, use imoje as the gateway value and your imoje shop ID as the gatewayMerchantId value.

NOTE! To obtain merchantName and merchantId for the paymentDataRequest.merchantInfo object in the production environment, you must first obtain ** production access** within your Google Pay Business Console.

Creating a Google Pay transaction in imoje

After successfully initialising the Google Pay widget, you will receive a PaymentMethodData object in return, which will contain, among other things, a tokenisationData object.

To create a Google Pay transaction in imoje, you will need the value from the token parameter in the tokenisationData object, which you must pass in the appropriate parameters.

Example of a Google Pay API response

{
  "type": "CARD",
  "description": "Visa••••1234",
  "info": {
    "cardNetwork": "VISA",
    "cardDetails": "1234"
  },
  "tokenizationData": {
    "type": "PAYMENT_GATEWAY",
    "token": "examplePaymentMethodToken"
  }
}

Making a request to imoje

To create a request that generates a transaction, you must add a wallet and additionalData.

Example of the BODY of a request to imoje

{
    "type": "sale",
    "serviceId": "yourServiceId",
    "amount": 1000,
    "currency": "PLN",
    "orderId": "yourOrderId",
    "customer": {
        "firstName": "John",
        "lastName": "Doe",
        "email": "john.doe@example.com"
    },
    "successReturnUrl": "https://yourshopname.com/success",
    "failureReturnUrl": "https://yourshopname.com/failure",
    "paymentMethod": "wallet",
    "paymentMethodCode": "gpay",
    "wallet": {
        "signature": "signature",
        "protocolVersion": "protocolVersion",
        "signedMessage": "signedMessage"
    },
    "additionalData": {
        "browser": {
            "ip": "127.0.0.1",
            "language": "pl-PL",
            "jsEnabled": true,
            "timezoneOffset": 100,
            "userAgent": "Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/87.0.4280.66 Safari/537.36",
            "accept": "application/json, text/javascript, */*; q=0.01",
            "javaEnabled": false,
            "screenColorDepth": 24,
            "screenHeight": 1080,
            "screenWidth": 2560
        }
    }
}

Response to request

The response to the request has a standard form and contains useful information about the transaction.

Depending on the Payer's card issuer, 3DSecure authorisation may be required for the transaction. In this case, if the action object is returned with the url parameter, the Payer should be redirected to the provided address to enable 3DSecure authorisation. After successful authorisation, the Payer will be automatically redirected to the page specified in the successReturnUrl parameter.

If the action object is not returned or does not contain the url parameter, redirect the Payer to the page with successReturnUrl or another page of your choice for the order placement process.

Apple Pay

Introduction

Integration allows you to initialise imoje transactions as part of Apple Pay payments using the Apple Pay API directly on your shop's website or in your mobile application.

Getting started

Before integrating Apple Pay payments on your website or mobile application, you will need an Apple Development Account. You will also need to apply to join the Apple Developer Programme.

Then follow the guidelines in the Apple Pay documentation.

Configuration

In order for payments to work properly, you need to configure your settings correctly.

General guidelines for configuring Apple Pay can be found **here.

Guidelines for configuring Apple Pay on your website can be found here.

Payment Processing Certificate

One of the configuration steps is to create a Payment Processing Certificate. To do this, you will need the appropriate CSR file, which you can obtain by contacting us at kontakt.tech@imoje.pl.

Then, send the generated certificate (apple_pay.cer file) to us at kontakt.tech@imoje.pl.

Integration

Integration in a mobile application

To integrate Apple Pay payments into your mobile application, follow the guidelines in the Apple Pay documentation.

Integration on a website

To integrate Apple Pay payments on your website, follow the guidelines in the Apple Pay on the Web documentation.

Please note that for Apple Pay on the Web payments, you must also ** register and validate your website, as well as create a ** Merchant identity certificate.

Creating an Apple Pay transaction in imoje

In order to create an Apple Pay transaction in imoje that will charge the card used by the Payer within Apple Pay, you must send a request creating a transaction.

In the BODY of the request, it is necessary to include the additionalData object and the wallet object and, within it, the paymentData. The paymentData object should contain the values received in the Apple Pay Token.

Example of Apple Pay Token content

{ "version": "EC_v1", "data": "DjI8Ez7nPhVo742aGEzABz/TfxCPt9LSdf2/h+0xIgVJbi3fQqd4lv3ogoTI3SQ7vZrDAWI8g2lbd5sflXBHc0z+wSeybsCcqZB3n1edRFXU7+6DYmdhFFWWCejwUc6XZWmsSaVNEQf+Kc0SeYrj8Eskdapj8bYX/QXxXSPqS4IKSjB+f3O0gUXSq7LK/jA9dl+BbWW0l3gXERU6n5rcYndO5rnjiwNUpnm7EMIMfNU+IPbsubpL82kbL2MdMJB1grel03J4JKld6G0pFSmjR2mF/xBY/yKkADRhoQkVlDRicuKVMpdRXXbIQjw/yRkLv/u8iy1wXI5YmEBB+W4QpPYsuxys94gMPaKhcaEK/OaT099aFrNBezbuLMTcTzbhXOpPwWn9pkAK0eZNOQ==",
"signature": "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", "header": { "ephemeralPublicKey": "MFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEZMzlWOx8Xo8pXlOvzYONy+gvUy59ZOeuCov3kzc7fESczZTyvmA9dU9AdVMFaYyfCXlMG5oedi3Wy4yubqfxtg==", "publicKeyHash": "xrJqUFO2jN5edGS8iETkfNXtwqnwSqRUUrQJBysFpZ8=", "transactionId": "aa0b77fbb4f64cd3e5deef65177938b2d836e0d7d93d58000d8d54cfca19ae13" } }

Example of a BODY request to imoje

{
    "type": "sale",
    "serviceId": "yourServiceId",
    "amount": 1000,
    "currency": "PLN",
    "orderId": "yourOrderId",
    "customer": {
        "firstName": "John",
        "lastName": "Doe",
        "email": "john.doe@example.com"
    },
    "successReturnUrl": "https://yourshopname.com/success",
    "failureReturnUrl": "https://yourshopname.com/failure",
    "paymentMethod": "wallet",
    "paymentMethodCode": "applepay",
    "wallet": {
        "paymentData": {
            "version": "version",
            "data": "data",
            "signature": "signature",
            "header": {
                "ephemeralPublicKey": "ephemeralPublicKey",
                "publicKeyHash": "publicKeyHash",
                "transactionId": "transactionId"
            }
        }
    },
    "additionalData": {
        "browser": {
            "ip": "127.0.0.1",
            "language": "pl-PL",
            "jsEnabled": true,
            "timezoneOffset": 100,
            "userAgent": "Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/87.0.4280.66 Safari/537.36",
            "accept": "application/json, text/javascript, */*; q=0.01",
            "javaEnabled": false,
            "screenColorDepth": 24,
            "screenHeight": 1080,
            "screenWidth": 2560
        }
    }
}

Response to request

The response to the request has a standard form and contains information about the transaction.

Depending on the Payer's card issuer, 3DSecure authorisation may be required for the transaction. In this case, if the action object is returned with the url parameter, the Payer should be redirected to the address provided in order to enable 3DSecure authorisation. After successful authorisation, the Payer will be automatically redirected to the page specified in the successReturnUrl parameter.

If the action object is not returned or does not contain the url parameter, the Payer should be redirected to the page with successReturnUrl or another page of your choice for the order placement process.