Google Pay for Apps

Google Pay merchant application

Submit company information via the Google Pay Business Console and wait for approval (usually 3-5 business days).

Google Pay merchant app configuration

Link your Android app, already published on Google Play, with the merchant account. You will need to provide a screenshot of the in-app payment process for review.

Integration mode selection

  1. Gateway mode (Recommended): Payment is processed through a certified payment gateway without the need for PCI compliance.
  2. Direct mode (For PCI-certified merchants only): Requires submitting a PCI certificate and directly handling card data.

Client-side technical integration


  1. Official Reference Documentation
  2. To ensure smooth approval for payment requests, you must strictly use the official Google Pay button API and fully follow their UI design guidelines. This includes but is not limited to:
    1. Strictly use the Google Pay Button API to create and trigger the payment process; custom buttons simulating this functionality are not allowed.
    2. Follow visual guidelines: The style, color, and size of the button must comply with Google’s requirements.
    3. Follow interaction logic: Button click effects, state transitions, and other interactions must align with official standards.

Server-side technical integration


  1. Invoke Google Pay Merchants can either construct Google Pay invoke parameters according to the Google Pay documentation or call OSL Pay’s API to get the invoke parameters. Use the OSL Pay API to fetch Google Pay invoke parameters (https://openapitest.osl-pay.com/api/v1/config/waken/query) to retrieve the following data:
{
    "provider": "google_pay",
    "data": {
        "environment": "TEST",
        "apiVersion": 2,
        "apiVersionMinor": 0,
        "allowedPaymentMethods": [
            {
                "type": "CARD",
                "tokenizationSpecification": {
                    "type": "PAYMENT_GATEWAY",
                    "parameters": {
                        "gateway": "checkoutltd",
                        "gatewayMerchantId": "pk_sbox_zgr63qrlpc5158fiha37qyxikvax"
                    }
                },
                "parameters": {
                    "allowedAuthMethods": [
                        "PAN_ONLY",
                        "CRYPTOGRAM_3DS"
                    ],
                    "allowedCardNetworks": [
                        "AMEX",
                        "DISCOVER",
                        "JCB",
                        "MASTERCARD",
                        "VISA"
                    ],
                    "billingAddressRequired": true,
                    "billingAddressParameters": {
                        "format": "FULL",
                        "phoneNumberRequired": true
                    }
                }
            }
        ],
        "merchantInfo": {
            "merchantId": 12345678905624567890,
            "merchantName": "OSL PAY"
        },
        "transactionInfo": {
            "countryCode": "US"
        }
    }

  1. Retrieve encrypted raw payment information from Google Pay
    The raw payment information format from Google Pay is as follows:
{
  "signature": "MEYCIQDoAM2OPXFVgtxLAohhXI8ohrj636MhPpZZRC5XnuNQFRepQIhAIUHULQ4Rsg5vvhu6b1oqPIv/KiY46opK0dP0tOM48AE",
  "intermediateSigningKey": {
    "signedKey": "{\"keyValue\":\"MFkwEwYHKo525ZIzj0CAQYIKoZIzj0DAQcDQgAEe+VE+/4EkzgZTsZ3n+DZrIDyEXKXr0NN66Np+cd1iAXdqDu672fuuehNHUhokvbvEOypnVFO11IRlBx8rpXtKA\\u003d\\u003d\",\"keyExpiration\":\"1753395565884\"}",
    "signatures": [
      "MEYCIQDSXC+znswX0fBNIACXiv+t212k5bI/bGPDIQ+Bubyd6436iAIhAK3RDIBg7phTz24zMZEsIxW9BCMnO7viJtfWY6zfqaC+"
    ]
  },
  "protocolVersion": "ECv2",
  "signedMessage": "{\"encryptedMessage\":\"+u3y1MkcFHmbPF53JEpsa8Ks5iOa1YwmnuEWQEAEd70dvhb2lWJ1Bg/iMCDGBqJt4JWPJeHI+SNP+A1ILxh4vunZkW6v/M/zlVN6EHbhIwGTMyAIHfyLV+zgskTyTkqUbC18Vv6mOcEd56sJr4P1C1NBYR6cI6AR03Q4qlg44VWYB3pjVZWEkF6joy6422ymcoEE7sra+IpuXTwCVjntFAb8JEWFqhHIWvlFBfN9A1UEu9LDvIQTX3VOwbL4vEzX2ROnQQZIP1EwlxDA+mqFIFGqk04kdcAkD9J9wy9Co7SS0Cw5hry7zxcIkpIROfj/TIjeFEMBf1QTfipyIEYWRYY7Pm7GlO3eH7XuV/eziRga+2HtBqNhwnRDAjGLIVkdyXkEPqTYhzWYa9ra9UKMt1khwbQBvCscM\\u003d\",\"ephemeralPublicKey\":\"BHvxY3vIuePLWAklgGFVI1xwu2w/Ovm8xucgU0HJqwqEc0kA9KFf2GQn0f0pUojUyRCi7LseTdALldnJoPqJmxI\\u003d\",\"tag\":\"0gK5cOx+gGTEKZ0m9erDAEirHTuGuqTpW3IpCQDCjMc\\u003d\"}"
}

  1. Retrieve Google Pay billing information
    The format for Google Pay billing information is as follows:
{
    "name": "John Doe",
    "address1": "c/o Google LLC",
    "address2": "1600 Amphitheatre Pkwy",
    "address3": "Building 40",
    "locality": "Mountain View",
    "administrativeArea": "CA",
    "countryCode": "US",
    "postalCode": "94043",
    "sortingCode": ""
}

  1. Passing Google Pay parameters to OSL Pay
    When placing an order, the merchant needs to pass Google Pay payment information and billing details to OSL Pay. Some of the Google Pay billing fields differ from OSL Pay's field names, so mapping will be required. The mapping rules are as follows:
name -> fullName
postalCode -> zip
administrativeArea -> state
locality -> city