Google Pay
Server-Side Implementation
Creating transactions
Using card nonces
Include the Google Pay card nonce in the Transaction: Sale
call on your server:
Collect device data from the client and include the device_data_from_the_client in the transaction.
- Ruby
result = gateway.transaction.sale(
:amount => "10.00",
:payment_method_nonce => nonce_from_the_client,
:device_data => device_data_from_the_client,
:options => {
:submit_for_settlement => true
},
:billing => {
:postal_code => postal_code_from_the_client
}
)
Using PayPal nonces
PayPal nonces returned from the client will be a PayPalAccount
type rather than a GooglePayCard. To create a transaction with a PayPal nonce:
Collect device data from the client and include the device_data_from_the_client in the transaction.
- Ruby
result = gateway.transaction.sale(
:amount => "10.00",
:payment_method_nonce => params[:payment_method_nonce],
:device_data => params[:device_data],
:order_id => "Mapped to PayPal Invoice Number",
:options => {
:submit_for_settlement => true,
:paypal => {
:custom_field => "PayPal custom field",
:description => "Description for PayPal email receipt",
},
}
)
if result.success?
"Success ID: #{result.transaction.id}"
else
result.message
end
Because creating a transaction with a PayPalAccount nonce from Google Pay is effectively the same as creating a transaction from your PayPal integration, they have the same settlement rules and options that typical PayPal transactions have.
When making a transaction with PayPalAccount nonce through Google Pay, the resulting transaction will have facilitator_details.oauth_application_name set to Google.
Vaulting Google Pay
Google Pay cards can only be saved to your Vault for specific use cases; see the support article for details.
Vaulting of PayPal accounts from Google Pay is currently not supported. This means the options.store_in_vault and options.store_in_vault_on_success options are not supported when creating a transaction.
If your use case is supported, you can store a customer's Google Pay card in your Vault in a few different ways:
- In a separate
Payment Method: Create
request - In a separate
Customer: Create
orCustomer: Update
request - In your
Transaction: Sale
request by using options.store_in_vault or options.store_in_vault_on_success
Next Page: Testing and Go Live →