Digital Wallet Payments
Secure, convenient payments anywhere
About Digital Wallet Payments
Digital wallets are gaining popularity and growing share in the payments landscape, fueled by increased acceptance, mobile shopping, and reshaping of the customers’ buying habits through digitalization, accelerated by the Covid Pandemic. Experts expect digital wallets transactions to account for a third of the ecommerce sales in North America by 2025.
Considering this preference of customers and the business need of our merchants, CSG Forte supports digital wallet payments to give customers a secure, simple, and convenient way to pay using mobile wallets. For customers, this means no more entering payment details for each purchase as digital wallets can safely store card information, making payments much simpler, faster, and minimizing typing errors.
Using digital wallets offers the following habits:
- Better authentication: Enhanced security through the use of username and password, PIN, fingerprint, or facial recognition
- Better data security:Data exposure is kept to an absolute minimum.
Forte supports the following Digital Wallet Payments:
- Apple Pay TM
- Google Pay TM
- PayPal
- Venmo (Venmo is supported ONLY in the US)
This page is specific to the prerequisites and conditions for digital wallet transactions for Forte Checkout and Custom integrations powered by Forte Rest API.
Compatible devices
- Apple Pay
- Apple Pay will be available on devices running iOS and Mac OS. A list of Apple Pay compatible devices is available Apple Pay-compatible device
- Supported browser: Safari
- Google Pay
- Google PayTM will be available on devices running Android OS and IOS. A list of Google Pay compatible devices is available at Google Pay-compatible device
- Supported browsers: Google Chrome, Apple Safari, Microsoft Edge.
- Paypal
- Paypal will work on mobile and desktop devices. (Note: Pop-up blockers may affect the payment experience. Please ensure to allow pop-up blocker, if needed.)
- You can check the recommended browsers list here. For browsers not listed, the payment buttons could continue to work, but compatibility is not guaranteed.
Prerequisities to process Apple PayTM
1. You must process credit cards through Fiserv or Vantiv.
2. You must adhere to Apple’s “Acceptable Use Guidelines” listed here.
3. Accepting Donations? If you’re a non-profit organization and are accepting donations, you must follow the process specified by Apple before you begin implementing Apple Pay on your website. Please refer to the process from Apple here.
4. To enable Apple Pay for a Merchant Location create a support ticket.
Prerequisities to process Google PayTM
- You must process credit cards through Fiserv or Vantiv.
- You must adhere to Google Pay API Terms of Service and Acceptable Use Policy.
- Are you accepting Donations? If you’re a non-profit organization accepting donations, you must provide valid 501(c)3 status proof from the IRS to qualify to implement Google pay.
- You must register a support ticket to enable Google Pay at the Merchant ID (Location) level.
NOTE: Convenience fee split charge model and debit cards fee different from credit card fees are not supported.
Prerequisites to process PayPal and Venmo
Note: Venmo is supported ONLY in the US
- You may connect your existing PayPal business accounts to accept payments from PayPal wallets.
- If you do not have a PayPal account, you may create a new business account and link it to CSG Forte, to start accepting payments from PayPal.
- You must have a merchant account with CSG Forte to connect your PayPal account to for PayPal payments processing.
NOTE: convenience fee is not supported. - PayPal is available for merchants operating in the US and Canada. Some of its payment methods will only be available at select regions. See information about PayPal credit here and PayPal Pay later here.
- You must register a support ticket to request PayPal at the Merchant ID (Location) level and/or if you are connected through a Partner, they can request the enablement for you.
- After the rate plans are created a PayPal onboarding link will be displayed in DEX under the tab: Merchant location details and Product and services. Please follow the process displayed on screen including creating a new PayPal Login or entering the credentials to existing PayPal account, reading, and accepting terms and conditions.
Apple Pay Integration with Forte Checkout
Refer to the Pre-requisites to process Apple Pay section before integrating with Forte Checkout
Apple Pay provides a secure payment method that can simplify your customer's checkout experience. Apple Pay stores payment information on a user's device and authenticates a user via Face ID or Touch ID, eliminating the need for them to manually type in their card, billing and shipping details.
When the Forte Checkout modal is opened, our system does various checks to detect if the processor, merchant, and customer meets Apple Pay enablement requirements. If it does, then the customer will be presented with an Apple Pay button and will be able to speed up the checkout process using information securely stored on the device.
Customers will be eligible to add their credit and/or debit cards as Apple Pay works with many of the major credit and debit cards from the top banks. See more information about supported cards here.
Supported Transactions
FCO supports Apple Pay when:
- The amount is preset (fixed):
- Only Single Amount is supported.
- The “total amount” parameter should be greater than zero for a sale transaction.
- The “total_amount_attr” parameter should not be editable.
- Performing Manual Entry (keyed) transactions.
The swipe parameter value should be set to ‘false’ or ‘auto.’ In the ‘auto’ case, if no reader is detected, it should switch to ‘Manual Entry.’
- The transaction method is Sale.
- Apple payment method tokens can be used to authorize Merchant Initiated Transaction (MIT) for recurring Card on File (COF) payments.
- The “allowed_methods” is null or contains at least one card brand (Visa, Mastercard, Discover, or American Express) and Apple Pay will not be supported if only “eCheck” is passed in the “allowed_methods
Note: For convenience fee merchants, only split funding is supported. Split charge is not currently supported for Apple Pay.
Process to enable Apple Pay on your Merchant ID (Location):
Refer to the Pre-requisites to process Apple Pay section before integrating with Forte Checkout.
NOTE: Before proceeding with sandbox testing for apple pay. ensure to complete below steps.
Please follow the steps below to enable Apple Pay for your Location(s) (merchant ID(s)):
- To identify your web page(s) as one of the merchants processing payments with CSG Forte, you will need to:
a. Download our “Domain Association file” from here.b. Upload the file with the name “
apple-developer-merchantid-domain-association
” in the following path:/.well-known/apple-developer-merchantid-domain-association
NOTE: If you receive payments in more than one domain, you need to ensure these steps are followed for each domain.
- Once the file is uploaded, create a support ticket to enable Apple Pay at the Merchant ID (Location) level.
Provide the following details in the ticket:a. Domain(s) that will be registered.
b. Product on which Apple Pay should be enabled.
Google Pay Integration with Forte Checkout
Google Pay is a digital wallet platform that empowers customers to make online purchases securely without the need to enter their card details for each payment.
Consumers can save payment methods, like a debit or credit card and additional information, such as shipping details, to their Google Account or store it in the Google Pay app. When the cardholder pays using Google Pay on the web, Google Pay displays a payment sheet where cardholders can select which card to use and confirm the purchase.
When the Forte Checkout modal is opened, our system does various checks to detect if the processor, merchant, and customer meet the requirements for Google Pay enablement. If they do, then the customer will be presented with a Google Pay button and will be able to speed up the checkout process using information securely stored on the device.
We offer the following card networks to be used with Google Pay: Visa, Mastercard, American Express and Discover.
Supported Transactions
FCO supports Google Pay when:
- The amount is preset (fixed):
- Only Single Amount is supported.
- The “total amount” parameter should be greater than zero for a sale transaction.
- The “total_amount_attr” parameter should not be editable.
- For Manual Entry transactions, the swipe parameter value should be set to ‘false’ or ‘auto’. If set to ‘auto’ and no reader is detected, it should switch to ‘Manual Entry’.
- The supported transaction methods are:
- sale
- auth
- token
- Google payment method tokens can be used to authorize Merchant Initiated Transaction (MIT) for recurring Card On File (COF) payments.
- If “allowed_methods” is passed, it must contain at least one card brand (Visa, Mastercard, Discover, or American Express). Google Pay will not be supported if only “eCheck” is passed in the “allowed_methods”
NOTE: For convenience fee merchants, only split funding is supported. Split charge is not currently supported for Google Pay and Google Pay will not be displayed if the Debit Card Fee and Credit Card fee have different values.
Process to enable Google Pay on your Merchant ID (Location)
Refer to the Pre-requisites to process Google Pay section before integrating with Forte Checkout.
1. Create a ticket requesting Google Pay to be enabled at your location level. If your organization has several locations, please list each merchant location applicable.
PayPal Integration with Forte Checkout
Refer to the Pre-requisites to process PayPal section before integrating with Forte Checkout
PayPal is a streamlined, secure, simple, and convenient payment option that allows end users to select from the available payment methods in their PayPal wallets.
When the Forte Checkout modal is opened and the merchant is onboarded to PayPal via CSG Forte, the customer will be presented with a 'PayPal' button. This allows for a faster checkout process using the payment methods stored in their PayPal wallet.
Supported Transactions
FCO supports PayPal when:
- The amount is preset (fixed):
- Only Single Amount is supported.
- The “total amount” parameter should be greater than zero for a sale transaction.
- The “total_amount_attr” parameter should not be editable.
- For Manual Entry transactions, the swipe parameter value should be set to ‘false’ or ‘auto’. If set to ‘auto’ and no reader is detected, it should switch to ‘Manual Entry’.
- Non convenience fee merchants.
- Several transaction method/types are supported:
- Sale transaction (method=Sale):
- This is intended to be used in a one time or normal sale transaction.
- Sale and token (method=Sale with token saving):
- setting the “save_token” parameter to ‘true’ allows for a sale and token creation at the same time.
- Sale transaction (method=Sale):
- Sale with previously created token (method=Sale using paypal paymethod tokens):
Note: All amount settings are supported.- The “total_amount_attr” parameter can be set to ‘edit ‘.
- Token creation (method=token).
- PayPal method tokens can be used to authorize Merchant Initiated Transaction (MIT) for recurring Card on File (COF) payments.
- When creating tokens in Forte checkout for PayPal transactions, it’s important to note that these tokens are associated with a specific PayPal entity known as the “Billing Agreement ID”. This ID is generated by PayPal upon the approval of the user.
- Which are returned in webhooks for effective transaction monitoring.
Note:
For all PayPal transactions, the billing address will be automatically obtained from the account holder’s PayPal details and passed on to the transactions, callbacks, and webhooks.
- Users also have the option to choose a shipping address or add a new shipping address on the PayPal checkout window. If the collect_shipping_address parameter is passed as true in the button parameter in FCO, the shipping address selected in the PayPal checkout window will be passed on to the transactions, callback and webhooks.
Process to enable PayPal /Venmo on your Merchant ID (Location):
NOTE : Venmo is supported ONLY in the US
This list of steps is applicable to direct merchants and those not part of a partner enrollment process. In the latter case, the partner will handle the enrollment or PayPal enablement.
- Create a ticket requesting PayPal to be enabled at your location level. If your organization has several locations, please list each merchant location applicable.
- A CSG Forte team member will forward your request to pre-qualify each requested merchant location for enablement.
- For each merchant that qualifies, a unique PayPal onboarding link will be created to begin their onboarding process.
- In Dex, users with appropriate permissions will navigate to the Location Details screen, Products and Services tab to select the PayPal onboarding link and begin the enablement.
- Once the PayPal account is successfully created and linked, the PayPal button will be enabled in Forte Checkout.
NOTE: Venmo will show up as a payment method option once PayPal is enabled on Merchant ID (Location) for merchants and customers located in the US.
Venmo Integration with Forte Checkout
NOTE : Venmo is supported ONLY in the US
Refer to the Pre-requisites to process Paypal / Venmo section before integrating with Forte Checkout
Venmo offers a streamlined, secure, simple, and convenient payment option that enables end users to select from the available payment methods in their Venmo wallets.
When the Forte Checkout modal is opened, if the merchant has a PayPal account and is onboarded to PayPal via CSG Forte, US customers will be presented with a “Venmo” button and will be able to speed up the checkout process using the payment methods stored on their Venmo app.
Supported Transactions
FCO supports Venmo:
- For US-based merchants and US-based consumers only.
- When Payments are in USD.
- When the amount is preset (fixed):
- Only Single Amount is supported.
- The “total amount” parameter should be greater than zero for a sale transaction.
- The “total_amount_attr” parameter should not be editable.
- The supported transaction method is “sale”.
Note: For all PayPal transactions billing address will be automatically obtained from account holder’s PayPal details and will be passed on to the transactions, callback and webhooks.
.
Sandbox Testing PayPal on Forte Checkout:
PayPal will be displayed as a payment method option on all sandbox Merchant ID’s(Location) for testing purposes .To have PayPal added as a pay method option on a live Merchant ID(Location ) please refer to the process here.
Sandbox Testing – PayPal will be displayed as a payment method option in Forte Checkout workbench, for testing.
Note: PayPal checkout window will not be displayed when choosing PayPal as the payment method in the workbench. Logging into PayPal, selecting a payment method or confirming the payment method in PayPal checkout window will not be available through the workbench.
• Once PayPal is selected as the payment method option in Forte Checkout-Workbench, user will be navigated to the “Shipping Information” screen (if collect_shipping_address=true) or to the “Amount Summary” screen. The simulated PayPal account holder information will be displayed under the “Payment information” header.
Once the PayPal transaction is completed, it can be viewed through Dex(Sandbox).
Testing PayPal on Forte Checkout:
The amounts specified below may be passed on Forte Checkout – Workbench (Sandbox) to force the indicated response.
Sale Transactions:
- Once PayPal is selected as the payment method option in Forte Checkout-Workbench, user will be navigated to the “Shipping Information” screen (if collect_shipping_address=true) or to the “Amount Summary” screen. The simulated PayPal account holder information will be displayed under the “Payment information” header.
- Once the PayPal transaction is completed, it can be viewed through Dex(Sandbox).
Scenario | total_amount | pg_response _code | pg_response_type | pg_response_ description |
Approval | Any other amount not otherwise listed: 1983,1984,1985, 1989,19.83,19.84.1985, 1989,1.33,9.98,9.97 | A01 | A | Approved |
Decline | $1.33 | U83 | D | Declined |
Error | $9.98 | E99 | E | Internal Error |
Decline | $1984 or $19.84 | U84 | D | Auth Timeout (FCO: Transaction Timeout) |
Decline | $1985 or $19.85 | U85 | D | Auth Error |
Decline | $1989 or $19.89 | U89 | D | Auth Unavail |
Pending | $9.97 | P01 | P | Pending |
Sale transactions with save_token=true
Sale Transactions:
Scenario | total_amount | pg_response_ code | pg_response_ type | pg_response_ description |
Decline | 1984 or $19.84 | U84 | D | Auth Timeout (FCO: Transaction Timeout) |
Decline | 1985 or $19.85 | U85 | D | Auth Error |
Decline | 1989 or $19.89 | U89 | D | Auth Unavail |
Decline | $19.83, $1983, or $1.33 | U83 | D | Declined |
Approval | Any other amount not otherwise listed: 1983,1984,1985, 1989,19.83, 19.84.1985, 1989,1.33, 9.98,9.97 | A01 | A | Approved |
Error | $9.98 | E99 | E | Internal Error |
Pending | $9.97 | P01 | P | Pending |
Apple Pay Integration with Rest API
Refer to the Pre-requisites to process Apple Pay section before integrating with REST API
Merchants can take advantage of their custom implementation for digital wallets by integrating with CSG Forte’s REST API.
If you need to check the API integration setup, refer here. For Rest API endpoints, refer here. Or visit our documentation on postman here.
Apple Pay Integration Process
The steps listed below are included as a guide to simplify the information about the process to integrate Apple Pay with REST API. Refer to the Pre-requisites to process Apple Pay section before proceeding.
Note: Some links below require signing into your Apple Developer Account for access.
- To create an Apple Developer Account, visit the Apple Developer site and click on the "Account" tab.
-
Use your developer account console to register a Merchant Identifier and create Payment Processing Certificate here.
NOTE: To generate the Payment Processing Certificate on your own, ensure you have “openssl” installed and run the following steps:openssl ecparam -out private.key -name prime256v1 -genkey
openssl req -new -sha256 -key private.key -nodes -out request.csr
-
Once the Payment Processing Certificate is generated, to verify your domain ownership, from the "Apple Pay on the Web" section, under "Merchant Domains" click on "Add Domain" and follow the instructions on the screen.
-
Whitelist the below IPs from Apple to allow inbound traffic from Apple.
Please confirm all the current applicable IPs to whitelist here.
• 17.32.139.128/27
• 17.32.139.160/27
• 17.140.126.0/27
• 17.140.126.32/27
• 17.179.144.128/27
• 17.179.144.160/27
• 17.179.144.192/27
• 17.179.144.224/27
• 17.253.0.0/16 -
To uniquely identify your business as a merchant you need to set up the Merchant ID and complete the Payment Request in Apple.
• Navigate to "Apple Pay Merchant Identity" and click on "Create Certificate". To create “Certificate Signing Request” (CSR), run the following command (Note: Ensure you have openssl installed)
•
openssl req -sha256 -nodes -newkey rsa:2048 -keyout applepaytls.key -out applepaytls.csr
Upload the generated applepaytls.csr file in the Apple Developer portal. Once the file is uploaded, under “Merchant Identity Certificate”, click on “Download” to download merchant_id.cer” file. This will download a cert file from Apple. Use the files “merchant_id.cer” and “applepaytls.key” to complete payment request. -
Documents for Reference:
• Apple Pay Offline testing / Sandbox details are here.
• Adhere to Development Guidance design published by Apple here.
• Ensure you are complying with Apple’s server requirements listed here.
-
Testing in CSG Forte’s Sandbox:
• To enable Apple Pay for your Merchant sandbox, create a ticket for CSG Forte tech support here.
• Refer to Get CSG Forte’s Sandbox Account section to set up a Sandbox account.
• Once you are integrated to Apple Pay button to get DAPN details from Apple, refer to the section Submit a Payment Request to REST API section to submit a payment request.
-
Go Live in Production – CSG Forte
• Once you've completed your testing in Sandbox and are registered for the wallet you are testing, you're ready to go Live in production. For reference you can find information here.
Google Pay Integration Process
- Before your Google Pay API implementation is production-ready, you must register with Google Pay Business Console, accept Google Terms of Service, and receive a Google merchant ID after your website passes a Google review.
- Enforce Development Guidance design.
- When you choose a payment tokenization method, do the following to connect :NOTE: if you decrypt the payment token in your own systems, they are required to be PCI DSS Level 1 compliant to handle sensitive payment data.
- To enable decryption on your end, set the tokenization Specification type to”DIRECT” when creating the Google Pay paymentDataRequest.
- In this process you will need to provide a public key to Google. Google will utilize this key to encrypt the payment details, which can subsequently be decrypted using the corresponding private key.
- For guidance on the decryption process, refer to the Payment data cryptography
- When you define supported payment card networks, do the following:
- For getAllowedCardNetworks, specify the card types that your merchant account is configured to accept.
- For getAllowedAuthCardMethods, specify both PAN_ONLY and CRYPTOGRAM_3DS
- Ensure your integration meets the requirement outlined in the Google Pay Web integration checklist and Google Pay Web Brand Guidelines
- Submit your payment integration for Google approval using Google Pay Business Console Link:
- After integrating the payment method and obtaining screenshots that demonstrate the transaction flow and correct handling, you will need to submit the following information in the Google Console:
- Website URL (secured)
- Integration type: Direct
- Screenshots of the transaction flow
- After that information is correctly uploaded you will be able to submit your integration for review and after that review you should receive an email notification that will allow you to change your code to the Production environment and commit to go live.
- After integrating the payment method and obtaining screenshots that demonstrate the transaction flow and correct handling, you will need to submit the following information in the Google Console:
- Testing in CSG Forte’s Sandbox:
- To enable Google Pay for your Merchant sandbox account create a ticket for CSG Forte tech support here.
- Refer to the section below section to set up a Sandbox account.
- Once you are integrated to Google Pay button to get card details from Google, refer to the section Submit a Payment Request to REST API section to submit a payment request.
- Once you’ve completed your testing in Sandbox and are registered for the wallet you are testing, you’re ready to go Live in production. For reference you can find information here.
Submitting Apple / Google Pay Request to Rest API
The steps below provide details on processing a Digital Wallet transaction. Refer to the “Pre-requisites to process Apple Pay” or "Pre-requisites to process Google Pay” section, depending on your integration method, before proceeding.
Get CSG Forte’s Sandbox Account
If you have not already, ensure that you have a Sandbox account in Dex to generate API credentials and possess your API authentication credentials.
Submit Apple Pay / Google Pay Payment Request to REST API
When sending a REST digital wallet request, merchants need to provide the following additional fields from the wallet's decrypted payload:
Data Field | Content | Requ | Supported values |
card.wallet_cryptogram | This one-time encrypted string represents the transaction and merchant information | R | |
DPAN(as card.account_number) | This device-specific identifier replaces the card number to securely conduct transactions | R | |
card.wallet_type | This field will indicate the wallet use to obtain the cryptogram | R | Apple Pay, Google Pay |
card.wallet_source | This will indicate the platform on which the payment request was received | R | InApp: integrations capturing payments on Mobile Web: integrations capturing payments on browser |
transaction.cof_transaction_type | Use this data field only for credential on file (COF) transactions, to show if it is recurring (0) or customer initiated (1). | O | 1: Initial 0: Recurring |
NOTE: If you are storing the DPAN for subsequent MIT (Merchant Initiated Transactions) transactions, you must use the Credentials on File (COF) framework.
Refer to the REST API documentation for sample calls on submitting a payment using Digital wallets.
Sample Transaction Requests
The snippets below display samples of the initial and subsequent transactions using DPAN and token.
Initial Transaction with DPAN
Sample POST Request URI:
{baseURI}}/organizations/org_{{organizationID}}/locations/loc_{{locationID}}/transactions
Additional parameters to be passed in the request:
card.account_number = DPAN
card.card_type
card.expire_year
card.expire_month
card.wallet_cryptogram
card.wallet_type
card.wallet_source
transaction.cof_transaction_type = 1
Sample POST request:
{
"action": "sale",
"authorization_amount": 5.00,
"service_fee_amount": 3.00,
"billing_address": {
"first_name": "Jennifer",
"last_name": "McFly"
},
"card": {
"name_on_card": "Jennifer McFly",
"account_number": "4111111111111111",
"card_type": "visa",
"expire_month": "12",
"expire_year": "2030",
"wallet_type": "ApplePay",
"wallet_source": "Web",
"wallet_cryptogram": "1K4ortp4uVams7mfCPohYcF"
}
}
Sample POST response:
{
"transaction_id": "trn_6fcaa151-57ad-4fc6-95fd-63e01d6b25b3",
"location_id": "loc_124125",
"action": "sale",
"authorization_amount": 5.00,
"service_fee_amount": 3.00,
"subtotal_amount": 2.00,
"authorization_code": "0IN552",
"entered_by": "3c28bbf362bf661820ea102642c7a9d6",
"billing_address": {
"first_name": "Jennifer",
"last_name": "McFly"
},
"card": {
"name_on_card": "Jennifer McFly",
"last_4_account_number": "1111",
"masked_account_number": "****1111",
"expire_month": 12,
"expire_year": 2030,
"card_type": "visa",
"wallet_type": "ApplePay"
},
"response": {
"environment": "sandbox",
"response_type": "A",
"response_code": "A01",
"response_desc": "TEST APPROVAL",
"authorization_code": "0IN552",
"avs_result": "Y",
"cvv_result": "M"
},
"links": {
"disputes": "https://sandbox.forte.net/v3/transactions/trn_6fcaa151-57ad-4fc6-95fd-63e01d6b25b3/disputes",
"settlements": "https://sandbox.forte.net/v3/transactions/trn_6fcaa151-57ad-4fc6-95fd-63e01d6b25b3/settlements",
"self": "https://sandbox.forte.net/v3/transactions/trn_6fcaa151-57ad-4fc6-95fd-63e01d6b25b3/"
}
}
Subsequent Transaction with DPAN (MIT)
Sample POST Request URI:
{baseURI}}/organizations/org_{{organizationID}}/locations/loc_{{locationID}}/transactions
Additional parameters to be passed in the request
card.account_number = DPAN
card.card_type
card.expire_year
card.expire_month
card.wallet_type
card.wallet_source
transaction.cof_transaction_type = 0 (recurring)
transaction.cof_initial_transaction_id
NOTE: To send subsequent sale transactions after an initial transaction was authorized using DPAN you will need to submit transaction.cof_initial_transaction_id
as received in the initial transaction response.
Sample POST Request:
{
"action":"sale",
"authorization_amount":5.00,
"service_fee_amount":3.00,
"billing_address":{
"first_name":"Jennifer",
"last_name":"McFly"
},
"card":{
"name_on_card":"Jennifer McFly",
"account_number": "4111111111111111",
"card_type":"visa",
"expire_month":"12",
"expire_year":"2030",
"wallet_type":"ApplePay",
"wallet_source":"Web"
},
"cof_transaction_type": "0",
"cof_initial_transaction_id": "123123123123"
}
Sample POST Response:
{
"transaction_id": "trn_47e31e47-0112-40a0-bea7-9c18ec1fe502",
"location_id": "loc_124125",
"action": "sale",
"authorization_amount": 5.00,
"service_fee_amount": 3.00,
"subtotal_amount": 2.00,
"authorization_code": "9TD084",
"entered_by": "3c28bbf362bf661820ea102642c7a9d6",
"billing_address": {
"first_name": "Jennifer",
"last_name": "McFly"
},
"card": {
"name_on_card": "Jennifer McFly",
"last_4_account_number": "1111",
"masked_account_number": "****1111",
"expire_month": 12,
"expire_year": 2030,
"card_type": "visa",
"wallet_type": "ApplePay"
},
"cof_transaction_type": "0",
"cof_initial_transaction_id": "123123123123",
"response": {
"environment": "sandbox",
"response_type": "A",
"response_code": "A01",
"response_desc": "TEST APPROVAL",
"authorization_code": "9TD084",
"avs_result": "Y",
"cvv_result": "M"
},
"links": {
"disputes": "https://sandbox.forte.net/v3/transactions/trn_47e31e47-0112-40a0-bea7-9c18ec1fe502/disputes",
"settlements": "https://sandbox.forte.net/v3/transactions/trn_47e31e47-0112-40a0-bea7-9c18ec1fe502/settlements",
"self": "https://sandbox.forte.net/v3/transactions/trn_47e31e47-0112-40a0-bea7-9c18ec1fe502/"
}
}
Subsequent Transaction with Tokens (MIT)
Sample POST Request URI:
{{baseURI}}/organizations/org_{{organizationID}}/locations/loc_{{locationID}}/transactions
Additional parameters to be passed in the request
transaction.paymethod_token
card.wallet_source (optional)
transaction.cof_transaction_type = 0
NOTE: To send subsequent sale transactions, after an initial transaction was authorized using payment method tokens you will need to submit transaction.paymethod_token
, indicate that this is a subsequent transaction sending transaction.cof_transaction_type:0
and specify card.wallet_source
(optional).
Sample POST Request:
{
"action": "sale",
"authorization_amount": 5.00,
"service_fee_amount": 3.00,
"paymethod_token": "mth_R2R5wyAiQJmp06xbB24KQA",
"card": {
"wallet_source": "web"
},
"billing_address": {
"first_name": "Jennifer",
"last_name": "McFly"
},
"cof_transaction_type": "0",
"cof_initial_transaction_id": "295070186326529"
}
Sample POST Response:
{
"transaction_id": "trn_46fe0a79-c022-4f27-8ec1-27193649a572",
"location_id": "loc_124125",
"paymethod_token": "mth_R2R5wyAiQJmp06xbB24KQA",
"action": "sale",
"authorization_amount": 5.00,
"service_fee_amount": 3.00,
"subtotal_amount": 2.00,
"authorization_code": "7KP191",
"entered_by": "3c28bbf362bf661820ea102642c7a9d6",
"billing_address": {
"first_name": "Jennifer",
"last_name": "McFly"
},
"cof_transaction_type": "0",
"cof_initial_transaction_id": "295070186326529",
"response": {
"environment": "sandbox",
"response_type": "A",
"response_code": "A01",
"response_desc": "TEST APPROVAL",
"authorization_code": "7KP191",
"avs_result": "Y",
"cvv_result": "M",
"paymethod_token": "mth_R2R5wyAiQJmp06xbB24KQA"
},
"links": {
"disputes": "https://sandbox.forte.net/v3/transactions/trn_46fe0a79-c022-4f27-8ec1-27193649a572/disputes",
"settlements": "https://sandbox.forte.net/v3/transactions/trn_46fe0a79-c022-4f27-8ec1-27193649a572/settlements",
"self": "https://sandbox.forte.net/v3/transactions/trn_46fe0a79-c022-4f27-8ec1-27193649a572/"
}
}
PayPal Integration with Rest API
Refer to the Pre-requisites to process PayPal section before integrating with REST API.
Merchants can take advantage of their custom implementation for digital wallets by integrating with CSG Forte’s REST API. If you need to check the API integration setup, refer here. For Rest API endpoints, refer here. Or visit our documentation on postman here.
PayPal Integration Process
The steps listed below are included as a guide to simplify the information about the process to integrate PayPal with REST API. Refer to the Pre-requisites to process PayPal section before proceeding.
To accept PayPal payment methods, you will need to:
- Create a HTML button with PayPal Icon.
- Click PayPal button, this calls the Forte REST API end points.
- Testing in CSG Forte’s Sandbox.
- To enable PayPal for your Merchant sandbox, create a ticket for CSG Forte tech support here.
- Refer to Get CSG Forte’s Sandbox Account section to set up a Sandbox account.
- Once you are integrated to PayPal button, refer to the section – Submit a PayPal Payment Request to REST API to submit a payment request.
- Go Live in Production – CSG Forte
Once you’ve completed your testing in Sandbox and are registered for the wallet you are testing, you’re ready to go Live in production. For reference you can find information here.
Submit a PayPal Payment Request to REST API
Below steps provide details to integrate with CSG Forte’s REST API to process Digital Wallet transaction. Refer to the “Pre-requisites to process PayPal "section, depending on your integration method, before proceeding.
Get CSG Forte’s Sandbox Account
If you have not already, ensure you have a Sandbox account in Dex to generate API credentials and that you have your API authentication credentials.
Follow the steps to create and process PayPal transaction via REST API.
Creating an Order to Process a PayPal Sale Transaction
Step 1: Create an Order
Merchants need to create an order in PayPal to enable a PayPal Transaction. Use the Create orders POST endpoint to create an order and to obtain an orderID (vendor_order_number) and approval URL (vendor_approval_url) from PayPal’s response.
You will need to use the vendor_approval_url to redirect the user to authorize the payment on PayPal checkout.
Refer to the REST API documentation for sample POST Request and Responses.
Step 2: (Optional) Update PayPal order
Merchants can update shipping _address and/or authorization_amount on a previously created order.
Use the Update a PayPal Order PUT endpoint to update shipping_address and authorization_amount.
Refer to the REST API documentation for sample PUT Request and Response.
Step 3: (Optional) Show Order details
Merchants can retrieve an order using Vendor_order_number to know details of a particular order. Use the order ID GET endpoint to obtain the order details.
Refer to the REST API documentation for sample GET Request and Response.
Step 4: Capture the Order
Merchants can capture an order by sending the vendor_order_number in the "vendor" object while performing a sale transaction. Use the transaction(PayPal) POST endpoint to capture the order.
Refer to the REST API documentation for sample POST Request and Response.
Creating a PayPal Token to Process a Transaction
Step 1: Create Billing Agreement Token
Merchants need to create a Billing Agreement to be able to generate a PayPal paymethod token. Use the Create Agreement Token POST endpoint to create a billing agreement token and to obtain an agreenement token (vendor_agreement_token) and approval URL (vendor_approval_url) from PayPal’s response. You will need to use the vendor_approval_url to redirect your users to approve the agreement on PayPal checkout.
Refer to the REST API documentation for sample POST Request and Response.
Step 2: Creating a Customer and Paymethod Token
There are several scenarios for token handling and creation. Check the list below to find the one that best matches your process and business needs.Use below endpoints to create a customer and paymethod token by using a vendor_agreement_token:
1. Customer endpoint - POST Customer with PayPal Payment Method
{{baseURI}}/organizations/org_{{organizationID}}/locations/loc_{{locationID}}/customers/
2.Customer endpoint - POST Customer with Billing/Shipping Address and PayPal Payment Data{{baseURI}}/organizations/org_{{organizationID}}/locations/loc_{{locationID}}/customers/
3.Paymethods endpoint - POST Customer PayPal Paymethod
{{baseURI}}/organizations/org_{{organizationID}}/locations/loc_{{locationID}}/customers/cst_{{customertoken}}/paymethods
4.Paymethods endpoint - POST Clientless PayPal Paymethod{{baseURI}}/organizations/org_{{organizationID}}/locations/loc_{{locationID}}/paymethods
Refer to the REST API documentation for sample POST Request and Response.
Step 3: Create a Sale Transaction using PayPal Paymethod Token
Use Transaction with PayPal Token POST endpoint to create sale transaction. Refer to the REST API documentation for sample POST Request and Response.
Sandbox Testing Paypal on Forte Rest API
To test PayPal integration on the Forte REST API sandbox environment, you can use predefined parameters to simulate specific responses across endpoints. To enable PayPal on a live Merchant ID(Location ) please refer to the process here.
NOTE: In the Sandbox environment, the responses are simulated.
Testing PayPal on Forte REST API:
Orders:
- For POST Create order passing “authorization_amount” specified below triggers corresponding responses as given in below
- For GET Order by ID and PUT Update a PayPal Order passing “vendor_order_number “ specified below to force the indicated response as given in below table
Action | Rest Endpoint | Vendor Account ID | Vendor Order Number | Method | Sample Request Parameters and Value | Sample Response Parameters and Value | response_desc | Status Code | Comments |
Create Order Creates a Paypal vendor_order_number and provides a vendor_approval_url | {{baseURI}}/organizations/org_{{organizationID}}/locations/loc_{{locationID}}/vendors/ven_{{vendorAccountID}}/orders | J9DMTTR9SVNAW | - | POST | { | { | Create Successful | 201 Created | authorization amount vendor_order_number |
Create Order - Decline Fails to create a PayPal vendor_order_number | {{baseURI}}/organizations/org_{{organizationID}}/locations/loc_{{locationID}}/vendors/ven_{{vendorAccountID}}/orders | J9DMTTR9SVNAW | POST | { | { | Declined. Unable to create PayPal order right now. Please choose another payment method | 400 Bad Request | authorization amount vendor_order_number | |
Update Order
| {{baseURI}}/organizations/org_{{organizationID}}/locations/loc_{{locationID}}/vendors/ven_{{vendorAccountID}}/orders/<<vendor_order_number>> | J9DMTTR9SVNAW | 9PD12829Y43477777 | PUT | { | { | Update Successful | 200 OK | NOTE: Orders can be updated only when the "vendor_order_status" is "PAYER ACTION REQUIRED" or "APPROVED" |
GET Order
| {{baseURI}}/organizations/org_{{organizationID}}/locations/loc_{{locationID}}/vendors/ven_{{vendorAccountID}}/agreements/agg_{{vendor_billing_agreement_token}} | J9DMTTR9SVNAW | 9PD12829Y43477777 | GET | - | { | Get Successful. | 200 OK | Ability to GET the details of an order.
|
Update Order
| {{baseURI}}/organizations/org_{{organizationID}}/locations/loc_{{locationID}}/vendors/ven_{{vendorAccountID}}/orders | J9DMTTR9SVNAW | 9PD12829Y43488888 | PUT | { | { | Unable to update PayPal order right now. Please contact tech support. | 400 | vendor_order_number status code |
- For POST Transaction (PayPal) passing vendor_order_number specified below to force the indicated response as given in below
Scenario | vendor_order_number | response_code | response_type | response_desc | Status Code |
Approval | 9PD12829Y43477777 | A01 | A | Approved | 201 Created |
Decline | 9PD12829Y43488888 | U83 | D | Declined | 400 Bad Request |
Internal Error | 9PD12829Y43499999 | E99 | E | Internal Error | 400 Bad Request |
Auth Timeout | 9PD12829Y43411111 | U84 | D | Auth Timeout | 400 Bad Request |
Auth Error | 9PD12829Y43422222 | U85 | D | Auth Error | 400 Bad Request |
Auth Unavail | 9PD12829Y43433333 | U89 | D | Auth Unavail | 400 Bad Request |
Pending Approval | 9PD12829Y43466666 | P01 | P | Pending | 201 Created |
Agreements:
- For POST Create Agreement Token , passing “email_address” specified below to force the indicated response as given in below
- For GET Agreement token by ID , POST Customer with PayPal Payment Method, POST Customer PayPal Paymethod passing “vendor_billing_agreement_token” specified below to force the indicated response as given in below
- For POST Transaction with PayPal Token passing paymethod token that is created above will force the indicated response as given in below table
Action | Rest Endpoint | Vendor Account ID | vendor billing agreement token | Email address | Method | Sample Request Parameters and Value | Sample Response Parameters and Values | response_desc | Status Code | Comment |
Creating Agreements (PayPal)
| {{baseURI}}/organizations/org_{{organizationID}}/locations/loc_{{locationID}}/vendors/ven_{{vendorAccountID}}/agreements | 695XN37M9ZSNC | POST | { | { | Create Successful | 201 Created | Note: Creates a vendor_agreement_token as shown in sample request and response | ||
Creating Agreements (PayPal)
| {{baseURI}}/organizations/org_{{organizationID}}/locations/loc_{{locationID}}/vendors/ven_{{vendorAccountID}}/agreements | decline@notanemail.com | POST | { | { | Unable to create PayPal Agreement Token right now. Please choose another payment method or contact tech support | 400 Bad Request | vendor_account_email Status_code | ||
GET Agreement
| {{baseURI}}/organizations/org_{{organizationID}}/locations/loc_{{locationID}}/vendors/ven_{{vendorAccountID}}/agreements/agg_{{vendor_billing_agreement_token}} | 695XN37M9ZSNC | BA-9PD12829Z43477777 | GET | { | Get Successful | 200 OK | Ability to GET the details of an order. | ||
GET Agreement
| {{baseURI}}/organizations/org_{{organizationID}}/locations/loc_{{locationID}}/vendors/ven_{{vendorAccountID}}/agreements/agg_{{vendor_billing_agreement_token}} | BA-9PD12829Z43477777 | GET | { | "The value for field vendor_billing_agreement_token is invalid. Check for possible formatting issues." | 400 Bad Request | ||||
GET Agreement
| {{baseURI}}/organizations/org_{{organizationID}}/locations/loc_{{locationID}}/vendors/ven_{{vendorAccountID}}/agreements/agg_{{vendor_billing_agreement_token}} | BA-9PD12829Z4347777 or | { | "This API Access ID does not have permission to access the requested vendor_billing_agreement_token." | 401 Unauthorized | |||||
GET Agreement
| {{baseURI}}/organizations/org_{{organizationID}}/locations/loc_{{locationID}}/vendors/ven_{{vendorAccountID}}/agreements/agg_{{vendor_billing_agreement_token}} | BA-9PD12829Z4347777 or | { | "This API Access ID does not have permission to access the requested vendor_billing_agreement_token." | 401 Unauthorized | |||||
Creating Customer token/paymethod token. | {{baseURI}}/organizations/org_{{organizationID}}/locations/loc_{{locationID}}/customers/ | BA-9PD12829Z43477777 | POST | { | { | Create Successful | 201 Created | vendor_billing_agreement_token Status Code | ||
Creating Customer token/paymethod token. | {{baseURI}}/organizations/org_{{organizationID}}/locations/loc_{{locationID}}/customers/ | BA-9PD12829Z43422222 | POST | { | { | The vendor_billing_agreement_token provided in the request is not approved. Please approve the vendor_billing_agreement_token using the link provided in vendor_approval_url before using it in customer or paymethod endpoin | 401 Unauthorized | vendor_billing_agreement_token Status Code | ||
Creating customer/ paymethod token. | {{baseURI}}/organizations/org_{{organizationID}}/locations/loc_{{locationID}}/customers/ | BA-9PD12829Z43422222 | POST | { | { | The vendor_billing_agreement_token provided in the request is not approved. Please approve the vendor_billing_agreement_token using the link provided in vendor_approval_url before using it in customer or paymethod endpoint | 401 Unauthorized | vendor_billing_agreement_token Status Code | ||
Get Customer token. | {{baseURI}}/organizations/org_{{organizationID}}/locations/loc_{{locationID}}/customers/cst_{{customertoken}} | GET | { | Get Successful | 200 OK | Note: Use the customertoken that is created using the vendor_billing_agreement_token |