GooglePay
Google Pay™ is the fast, simple way to pay on sites, in apps, and in stores using the cards saved to your Google Account.
Connecting Google Pay via Paysoft Hosted Checkout Page
To connect, you need:
- Signup in Paysoft.
- You must agree to the Google Pay Terms of Service.
With this integration method, there is no need to carry out any additional integration. The Google Pay button will be displayed on the PaySoft payment page.
Integration with Google Pay Api
It allows you to integrate GooglePay without redirecting to the PaySoft payment form and accept payments directly from your site or application.
- Google Pay Web developer documentation
- Google Pay Web integration checklist
- Google Pay Android integration checklist
- Google Pay Android Brand Guidelines
You are initiating a request from your site or application to receive encrypted payment data according to GooglePay documentation. Google Pay returns encrypted payment information after customer authentication, which must be sent to Paysoft in a request.
Configuration parameters
allowPaymentMethods : CARD
tokenizationSpecification = { "type": "PAYMENT_GATEWAY"}
allowedCardNetworks = ['MASTERCARD', 'VISA'];
allowedCardAuthMethods = ['PAN_ONLY', 'CRYPTOGRAM_3DS'];
gateway = paysoft
gatewayMerchantId - Merchant identifier. The Merchant can get the identifier in the Cabinet (https://merchant.paysoft.solutions).
Action - https://card.paysoft.solutions/api/xml/googlepay
Method - POST
XML-request format:
<Command>
<LMI_MERCHANT_ID></LMI_MERCHANT_ID>
<LMI_HASH></LMI_HASH>
<LMI_PAYMENT_NO></LMI_PAYMENT_NO>
<LMI_PAYMENT_AMOUNT></LMI_PAYMENT_AMOUNT>
<LMI_PAYMENT_DESC></LMI_PAYMENT_DESC>
<LMI_PAYMENT_TOKEN></LMI_PAYMENT_TOKEN>
<LMI_PAYER_IP></LMI_PAYER_IP>
<LMI_MERCHANT_URL></LMI_MERCHANT_URL>
</Command>
Title | XML parameter | Required? | Description |
---|---|---|---|
Seller ID | LMI \ _MERCHANT \ _ID | Yes | Merchant identifier to which the payment will be accepted. The Seller can get the identifier in the Cabinet. |
Payment amount | LMI \ _PAYMENT \ _AMOUNT | Yes | The amount of payment that the Seller wishes to receive from the Client. The sum must be greater than zero, the fractional part is separated by a dot. |
Internal order number in the Seller's accounting system | LMI \ _PAYMENT \ _NO | No | In this field, the Seller defines the order number in accordance with his accounting system. Although this parameter is optional, it is recommended that you always set it because it is needed for other interfaces to work correctly. It is advisable to use a unique number for each payment. The number can contain letters of the English alphabet, numbers and the hyphen "-". The maximum length is 64 characters. |
Payment details | LMI \ _PAYMENT \ _DESC | Yes | Description of the goods / work / services that are paid for. The maximum length is 255 characters. Encoding - UTF8. |
Signature of request | LMI_HASH | Yes | The signature of the request is generated by hashing the original text of the XML request with an empty LMI\ _HASH value and the SecretKey using the algorithm specified in the Merchant Cabinet. The received signature is passed in the LMI_HASH tag. The recommended encryption algorithm is SHA256. Sign example |
Client Email | LMI_PAYER_EMAIL | No ** | Customer Email Addresses |
Customer ID on the Seller side | LMI_PAYER_ID | No | May contain letters of the English alphabet, numbers and the hyphen "-". The maximum length is 25 characters. |
Encrypted payment data received from Google | LMI_PAYMENT_TOKEN | No | Value from paymentData.paymentMethodData.tokenizationData.token received from Google |
Splitting payment | LMI_SPLIT | No | A payment splitting the amount into multiple recipients. This parameter specifies a JSON array with payment splitting rules. When using the LMI_SPLIT parameter, one charge from the client and several credits to recipients occur. Example JSON string: ` [{" CompanyId ": 1," Amount ": 20," CompanyName ":" "," Description ":" "," EDRPOU ":" "," IBAN ": ""}, {"CompanyId": 2, "Amount": 12, "CompanyName": "", "Description": "", "EDRPOU": "", "IBAN": ""}] " |
Payer IP | LMI \ _PAYER \ _IP | No | Payer's IP address |
Site URL | LMI \ _MERCHANT \ _URL | No | Website URL where the payment was made |
XML-response format:
<Response>
<Retval></Retval>
<Retdesc></Retdesc>
<Retdata>
<LMI_SYS_PAYMENT_ID></LMI_SYS_PAYMENT_ID>
<Is3ds></Is3ds>
<action></action>
<PaReq></PaReq>
<MD></MD>
<ErrorMessage></ErrorMessage>
</Retdata>
</Response>
Title | Field in XML | Description |
---|---|---|
Request execution code | Retval | 0 - successful command execution; 1 - Incorrect signature \ (HASH ); 2 - incorrect parameters; 3 - A card of this type cannot be processed; 4,5,6,7 - internal error; 8 - in progress |
Description of the execution code | Retdesc | |
Internal payment number in the PaySoft system | Retdata / LMI \ _SYS \ _PAYMENT \ _ID | Number of the accepted payment in the PaySoft system. |
Is3ds | flag of the card's involvement in 3D-Secure \ (0 - the card does not require 3DSecure verification; 1 - the card needs 3D-Secure verification ). | |
action | Client redirect URL. Displayed only if Retval = 0 and Retdata / Is3ds = 1 | |
PaReq | request parameters for 3D-Secure. Displayed only if Retval = 0 and Retdata / Is3ds = 1 | |
MD | request parameters for 3D-Secure. Displayed only if Retval = 0 and Retdata / Is3ds = 1 | |
ErrorMessage | additional error information |
If in response the Retdata / Is3ds = 1 field value was received, this means that the card requires verification using 3D-Secure technology. To carry out such a check, it is necessary to generate and send an html-form using the POST method to the address specified in the Retdata / action field.
Attention! You cannot ignore the fact that the card is involved in 3D-Secure. If Is3ds = 1 was received in response to paymentCreate, then you cannot skip this step (card authorization using 3D-Secure ) and go directly to the paymentConfirm command.
An example HTML form containing all the required fields:
<form method = "POST" action = "action">
<input type = "hidden" name = "PaReq" value = "%PaReq%">
<input type = "hidden" name = "MD" value = "%MD%">
<input type = "hidden" name = "TermUrl" value = "%TERMURL%">
</form>
Html form parameters:
- %ACTION% - the value of the Retdata / action field from the response to the request
- %PaReq% - the value of the Retdata / PaReq field from the response to the request
- %MD% - value of the Retdata / MD field from the response to the request
- %TERMURL% - URL address of your page, to which the client will return after 3D-Secure verification. May contain GET parameters.
After 3DSecure verification, the client will be redirected to the address specified in TermUrl using a POST request. PaRes and MD will be among the parameters of this request.