Apple Pay Alternative
GW Integration option
Payment flow
- Customer initiates Apple Pay payment on the merchant's website.
- Merchant sends the payment request to PaySage.io
- PaySage.io returns a payment link to the merchant.
- The merchant redirects the customer to the payment link. The link opens the page which displays the transaction amount along with a button to make a payment using Apple Pay.
- The customer completes the payment using Apple Pay.
- PaySage.io sends a webhook notification to the merchant.
Info
This integration option only supports EUR
currency.
Payment
Request
Send a payment request with the following additional parameters:
Parameter | Type | Description |
---|---|---|
request | object | |
amount * required |
bigInteger | Transaction amount in minimal currency units, for example, 5000 (50 euros). |
return_url * required |
string | URL to return the customer to when the transaction is completed. |
ip * required |
string | The customer's IP address. |
method | object | A section of the payment method. |
type * required |
string | apple_pay_alt |
customer | object | A section of the customer details. |
phone | string | The customer's phone number. |
email * required |
string | The customer's email address. |
first_name | string | The customer's first name. |
last_name | string | The customer's last name. |
middle_name | string | The customer's middle name. |
country | string (2) | The customer's country in the ISO 3166-1 Alpha-2 format. For example, DE . |
Request example
{
"request": {
"amount": 200,
"currency": "EUR",
"description": "description",
"return_url": "https://your_return_url.com",
"ip": "127.0.0.1",
"method": {
"type": "apple_pay_alt"
},
"customer": {
"phone": "0123456789",
"email": "email@example.com"
}
}
}
Response
Redirect your customer to the URL received as the value of the form.action
parameter.
Response example
{
"transaction": {
"uid": "5658d7ca-6f8c-4050-ac19-05980b8356e5",
"type": "payment",
"status": "pending",
"amount": 200,
"currency": "EUR",
"description": "description",
"created_at": "2024-08-14T14:51:59Z",
"updated_at": "2024-08-14T14:52:01Z",
"method_type": "apple_pay_alt",
"receipt_url": "https://backoffice.paysage.io/customer/transactions/5658d7ca-6f8c-4050-ac19-05980b8356e5/96003c2fd2601e204900b4df53b549a471743e262b15a3d8d8109d6c8ea1b1f7",
"payment": {
"status": "pending",
"gateway_id": 4379,
"ref_id": "363698704",
"message": "Transaction was initialized."
},
"apple_pay_alt": {
"type": "apple_pay_alt"
},
"customer": {
"email": "email@example.com",
"phone": "0123456789",
"ip": "127.0.0.1"
},
"manually_corrected_at": null,
"version": 0,
"message": "Transaction was initialized.",
"test": false,
"billing_address": {
"email": "email@example.com",
"phone": "0123456789"
},
"additional_data": {
"payment_method": {
"type": "alternative"
}
},
"gateway": {
"iframe": false
},
"form": {
"action": "https://example.com/url-for-redirect",
"method": "GET",
"fields": []
}
}
}
TW Integration option
Payment flow
- Customer initiates Apple Pay payment on the merchant's website.
- Merchant sends the payment request to PaySage.io
- PaySage.io returns a response with the
form
object with parameters to build a form to complete the payment. - The merchant redirects the customer to the form.
- The customer completes the payment using Apple Pay.
- PaySage.io sends a webhook notification to the merchant.
Info
This integration option supports only EUR
currency.
Payment
Request
Send a payment request with the following additional parameters:
Parameter | Type | Description |
---|---|---|
request | object | |
amount * required |
bigInteger | Transaction amount in minimal currency units, for example, 5000 (50 euros). |
return_url * required |
string | URL to return the customer to when the transaction is completed. |
method | object | A section of the payment method. |
type * required |
string | apple_pay_alt |
ip | string | The customer's IP address. |
customer | object | A section of additional information about the customer. |
country | string (2) | The customer's country in the ISO 3166-1 Alpha-2 format. For example, AT . |
phone | string | The customer's phone number. |
string | The customer's email address. | |
first_name | string | The customer's first name. |
last_name | string | The customer's last name. |
city | string (120) | The customer's billing city. |
zip | string (40) | The customer's billing ZIP or postal code. |
address | string (510) | The customer's billing address. |
birth_date | string | The customer's date of birth in the ISO 8601 format (YYYY-MM-DD ). |
Request example
{
"request": {
"amount": 500,
"currency": "EUR",
"description": "test description",
"test": true,
"tracking_id": "your_uniq_number21212",
"return_url": "https://return-url",
"method": {
"type": "apple_pay_alt"
},
"customer": {
"email":"example@example.com"
}
}
}
Response
Redirect your customer to an HTML form that is built following the example below using the values from the form
object in the response.
<form action="https://tw-integration-option/transaction/PGRRedirect?gw=XPV2&trackingId=52159906" method="POST">
<input type="hidden" name="TermUrl" value="https://tw/pay/4914ea64-519e-4b64-bbbb-188a0054a6fa/select-payment-method/apple-pay/aa269d0f-de8c-427d-a8d5-f0d79f43f23f/">
<input type="hidden" name="XPV2" value="">
<input type="submit" value="Submit">
</form>
Response example
{
"transaction": {
"uid": "ce424e47-105c-4334-a0cb-72084cb37ebf",
"type": "payment",
"status": "pending",
"amount": 500,
"currency": "EUR",
"description": "test description",
"created_at": "2024-12-19T15:39:23Z",
"updated_at": "2024-12-19T15:39:24Z",
"method_type": "apple_pay_alt",
"receipt_url": "https://backoffice.paysage.io/customer/transactions/ce424e47-105c-4334-a0cb-72084cb37ebf/7199af77e9120455f3375f0722957a1660be09f73cb6fa7f92befdc05da7cbb8",
"payment": {
"status": "pending",
"gateway_id": 4754,
"ref_id": "52159906",
"message": "Transaction is pending",
"bank_code": "10004"
},
"apple_pay_alt": {
"type": "apple_pay_alt"
},
"customer": {
"email": "example@example.com",
"ip": null
},
"manually_corrected_at": null,
"version": 0,
"message": "Transaction is pending",
"tracking_id": "your_uniq_number21212",
"test": true,
"billing_address": {
"email": "example@example.com"
},
"additional_data": {
"payment_method": {
"type": "alternative"
}
},
"smart_routing_verification": {
"status": "skipped",
"data": null
},
"gateway": {
"iframe": false
},
"form": {
"action": "https://tw-integration-option/transaction/PGRRedirect?gw=XPV2&trackingId=52159906",
"method": "POST",
"fields": [
{
"name": "TermUrl",
"value": "https://tw/pay/4914ea64-519e-4b64-bbbb-188a0054a6fa/select-payment-method/apple-pay/aa269d0f-de8c-427d-a8d5-f0d79f43f23f/"
},
{
"name": "XPV2",
"value": ""
}
]
}
}
}
Refund
Request
Send a standard refund request. The amount
value must not exceed the amount of the parent transaction.
TW2 Integration option
Payment flow
- Customer initiates Apple Pay payment on the merchant's website.
- Merchant sends the payment request to PaySage.io
- PaySage.io returns a response with the
form
object with parameters to build a form to complete the payment. - The merchant redirects the customer to the form.
- The customer completes the payment using Apple Pay.
- PaySage.io sends a webhook notification to the merchant.
Info
This integration option supports only EUR
currency.
Payment
Request
Send a payment request with the following additional parameters:
Parameter | Type | Description |
---|---|---|
request | object | |
amount * required |
bigInteger | Transaction amount in minimal currency units, for example, 5000 (50 euros). |
return_url * required |
string | URL to return the customer to when the transaction is completed. |
method | object | A section of the payment method. |
type * required |
string | apple_pay_alt |
ip | string | The customer's IP address. |
customer | object | A section of additional information about the customer. |
country | string (2) | The customer's country in the ISO 3166-1 Alpha-2 format. For example, AT . |
phone | string | The customer's phone number. |
string | The customer's email address. | |
first_name | string | The customer's first name. |
last_name | string | The customer's last name. |
city | string (120) | The customer's billing city. |
zip | string (40) | The customer's billing ZIP or postal code. |
state | string | The customer's two-letter billing state only if the billing address country is US , CA or IN . |
address | string (510) | The customer's billing address. |
Request example
{
"request": {
"amount": 100,
"currency": "EUR",
"description": "test description",
"test": false,
"tracking_id": "your_uniq_number21212",
"return_url": "https://your-success.url",
"method": {
"type": "apple_pay_alt"
},
"customer": {
"phone": "123456789",
"country": "DE",
"city": "Berlin",
"address": "Friedrichstrasse, 8",
"first_name": "Helen",
"last_name": "Kohl",
"email": "helen@example.com"
}
}
}
Response
Build an HTML form based on the parameters in the form
object. Redirect the customer to the form to finalize the payment.
Response example
{
"transaction": {
"uid": "e4e7b7d6-62d0-4ea8-bd82-d2efed7b6704",
"type": "payment",
"status": "pending",
"amount": 100,
"currency": "EUR",
"description": "test description",
"created_at": "2025-03-19T10:22:02Z",
"updated_at": "2025-03-19T10:22:02Z",
"method_type": "apple_pay_alt",
"receipt_url": "https://backoffice.paysage.io/customer/transactions/e4e7b7d6-62d0-4ea8-bd82-d2efed7b6704/ec405e5dd1336204b386dfd8a746479ced99d88537a131ebeaa25b9ec31110df",
"payment": {
"status": "pending",
"gateway_id": 5091,
"message": "Transaction was initialized."
},
"apple_pay_alt": {
"type": "apple_pay_alt"
},
"customer": {
"first_name": "Helen",
"last_name": "Kohl",
"email": "helen@example.com",
"country": "DE",
"city": "Berlin",
"address": "Friedrichstrasse, 8",
"phone": "123456789",
"ip": null
},
"manually_corrected_at": null,
"version": 0,
"message": "Transaction was initialized.",
"tracking_id": "your_uniq_number21212",
"test": false,
"billing_address": {
"first_name": "Helen",
"last_name": "Kohl",
"email": "helen@example.com",
"country": "DE",
"city": "Berlin",
"address": "Friedrichstrasse, 8",
"phone": "123456789"
},
"additional_data": {
"payment_method": {
"type": "alternative"
}
},
"gateway": {
"iframe": false
},
"form": {
"action": "tw-2/transaction/Checkout",
"method": "POST",
"fields": [
{
"name": "memberId",
"value": "13106",
"type": "hidden"
},
{
"name": "terminalid",
"value": "6093",
"type": "hidden"
},
{
"name": "partnerId",
"value": "39",
"type": "hidden"
},
{
"name": "checksum",
"value": "08d44bc275e526b1fc86d3773be4eb91",
"type": "hidden"
},
{
"name": "merchantTransactionId",
"value": "e4e7b7d6-62d0-4ea8-bd82-d2efed7b6704",
"type": "hidden"
},
{
"name": "amount",
"value": "1.00",
"type": "hidden"
},
{
"name": "currency",
"value": "EUR",
"type": "hidden"
},
{
"name": "paymentBrand",
"value": "APPLEPAY",
"type": "hidden"
},
{
"name": "paymentMode",
"value": "EW",
"type": "hidden"
},
{
"name": "orderDescription",
"value": "test description",
"type": "hidden"
},
{
"name": "country",
"value": "DE",
"type": "hidden"
},
{
"name": "city",
"value": "Berlin",
"type": "hidden"
},
{
"name": "postcode",
"value": "89836-1589",
"type": "hidden"
},
{
"name": "street",
"value": "Friedrichstrasse, 8",
"type": "hidden"
},
{
"name": "firstName",
"value": "Helen",
"type": "hidden"
},
{
"name": "lastName",
"value": "Kohl",
"type": "hidden"
},
{
"name": "email",
"value": "helen@example.com",
"type": "hidden"
},
{
"name": "merchantRedirectUrl",
"value": "https://api.paysage.io/beyag/transactions/returns/88c70e7191aa823ac0588a279d22ef5722fc26712f6eac23ab76b53a65019c48/e4e7b7d6-62d0-4ea8-bd82-d2efed7b6704",
"type": "hidden"
},
{
"name": "notificationUrl",
"value": "https://api.paysage.io/beyag/transactions/notifications/88c70e7191aa823ac0588a279d22ef5722fc26712f6eac23ab76b53a65019c48/e4e7b7d6-62d0-4ea8-bd82-d2efed7b6704",
"type": "hidden"
},
{
"name": "totype",
"value": "TW",
"type": "hidden"
},
{
"name": "phone",
"value": "456789",
"type": "hidden"
},
{
"name": "telnocc",
"value": "123",
"type": "hidden"
}
]
}
}
}
Refund
Request
Send a standard refund request. The amount
value must not exceed the amount of the parent transaction. It is possible to make multiple refunds for the same payment transaction, in this case the sum of refund amounts must not exceed the amount of the corresponding payment transaction.