Getting Started With Webhooks
Integrate PayPro Global webhooks with your backend or 3rd party systems via a dedicated URL for tracking events related to your orders and transactions.
Webhook Overview
A webhook is a messaging service that automatically sends you alerts for specific events regarding your transactions. These events include charges, refund, and other event types in your product order database.
Our webhooks create a connection between our backend and yours. They are simple to integrate and enable you to receive the exact transaction data and order purchasing information from PayPro Global, and respond accordingly on your end.
Webhook Usage
The PayPro Global Platform performs webhook transmissions using the POST method. We send POST requests via HTTPS to the different endpoints you have set.
Webhook Request
We use an HTTP 200 status code to indicate a successful request. All other response codes indicate some kind of failure.
For keygen (key generator), we expect the response to be a license in any format. Everything you return to us for this request will be delivered to the customer as the license key.
The Content-Type header of the request is application/x-www-form-urlencoded.
Webhook Failure
When the initial attempt to deliver the Instant Payment Notification (IPN) fails, we will retry the call to your webhook URL every 30 minutes for a maximum of 3 attempts. After the last failed attempt, we will send an email notification to the 'contact' email on record. Alternatively, you can configure a dedicated email in Notifications -> Failed IPNs.
If the keygen (LicenseRequested) fails, we will do the same scheme of retries. Additionally, the system will notify you via email after each failed attempt, indicating that we were unable to deliver the license key to the customer. If your key generator is up and running again during the timeframe of retries, there is no need to send the key to the customer manually or generate it on your side. Our system will automatically request the license again and deliver it to the customer promptly.
Webhook History
In the dashboard, navigate to Reports -> Others -> IPN to see the logs of all webhook events we sent, filtered by successful or failed results, product, and date. Selecting the corresponding events and clicking on the Letter icon or Bulk actions -> Resend menu options, will create another attempt to deliver the webhook data to your endpoint.
Webhooks for Multiple Product Orders
If all of the products in an order have a dedicated webhook URL set up, the vendor will receive a webhook for each product after the order is placed.
Webhook Security
To ensure you receive the webhooks that are sent by PayPro Global we offer three levels of protection:
- Permanent IP addresses from which we send a request:
IPv4 | 198.199.123.239 157.230.8.40 |
IPv6 | 2604:a880:400:d0::1843:7001 2604:a880:400:d1::b6c:c001 |
-
A hash parameter. Its value is encoded using a secret key known only between you and PayPro Global. Moreover, it can always be changed regularly.
-
A verification signature. Its value is SHA256 encoded using a validation key known only between you and PayPro Global. Additionally, it can be regenerated from your PayPro Global vendor account at any time.
If the server you are using to host the IPN script is configured to block IP address, please make sure that you add the PayPro Global IP address to the whitelisted IPs. This is essential for the IPN service to run smoothly.
Webhook Setup
Ensure you set up a dedicated URL to which we will send the HTTP POST requests.
To set up webhooks:
- Navigate to Store settings -> Product setup in your PayPro Global account.
- Create a new product using the Add product option, or click Edit on the existing product.
- Enter a URL in the 1.Product in the IPN URL field. You may apply it to all products at ones.
- Click the Save button to confirm your changes.
Webhook Event Setup
Additional setup steps are required for the events of LicenseRequested
and InstantLeadNotification
.
License Requested
To enable the LicenseRequested
event:
- Navigate to Store settings -> License management in your PayPro Global account.
- Create a new license provider using the Add license or click the Edit button on the existing license provider. In both cases, the type should be External License Generator.
- Enter a URL in the URL field.
- Click the Save button to confirm your setup.
After saving, you will also be able to test the keygen with the dedicated Test button.
Instant Lead Notification
To enable the InstantLeadNotification
event:
- Navigate to Marketing -> Lead management in the PayPro Global account menu.
- Create a new lead group using the Add lead group option or click Edit on the existing custom lead group.
- Enter a URL in the ILN field.
- Click the Save button to confirm your changes.
Please contact your account manager for more details on the Instant Lead Notification (ILN).
Webhook Types
Work seamlessly with PayPro Global by integrating our webhook events.
We have broken down our webhook events into three categories:
- Order-related
- Subscription-related
- Others
Order-related
Type id | Type name | Description |
---|---|---|
1 | OrderCharged | Triggered when an order has been successfully processed for a one-time fee product or for the initial order of the subscription. |
2 | OrderRefunded | Triggered when an order has been fully refunded. |
3 | OrderChargedBack | Triggered when we have received a chargeback for the order. |
4 | OrderDeclined | Triggered in three cases:
|
5 | OrderPartiallyRefunded | Triggered when an order has been partially refunded. |
14 | OrderChargedBackWon | Triggered when a dispute over the chargeback is won in our favor. |
17 | OrderOnWaiting | Triggered when an order has been moved to our manual review process or a customer used a non-instant payment method, and we are waiting for the payment to process the order. |
Subscription-related
Type id | Type name | Description |
---|---|---|
6 | SubscriptionChargeSucceed | Triggered when a recurring payment (order) has been successfully processed. |
7 | SubscriptionChargeFailed | Triggered when a recurring payment (order) has failed. |
8 | SubscriptionSuspended | Triggered when a subscription has been suspended by the customer, vendor, or our Support Team (as per the customer's or vendor's request). |
9 | SubscriptionRenewed | Triggered when a subscription has been successfully renewed either by the customer or our Support Team (per the customer's or vendor's request). |
10 | SubscriptionTerminated | Triggered when a subscription has been terminated. |
11 | SubscriptionFinished | Triggered when a subscription has ended. |
13 | TrialCharge | Triggered when a trial order has been processed. |
21 | SubscriptionPaymentInfoChanged | Triggered under two conditions:
|
Others
Type id | Type name | Description |
---|---|---|
12 | LicenseRequested | Triggered when a request for a license key is made. |
15 | OrderCustomerInformationChanged | Triggered when the customer's billing email is changed either by our Support Team (as per the customer's or vendor's request) or from the vendor's control panel. |
16 | InstantLeadNotification | Triggered when we have sent all of the follow-up emails from the lead management campaign. |
-
For events such as
OrderRefunded
,OrderChargeback
, andOrderDecline
, you will see a parameter calledACTION_REASON
containing the reason for a refund, chargeback, or declined transaction. -
Events such as
InstantLeadNotification
,OrderOnWaiting
, andSubscriptionPaymentInfoChanged
are fired when you have access to the extended webhooks. For more information, please contact our team at [email protected]. -
The data from the
InstantLeadNotification
event is sent to a URL provided in the following section of the PayPro Global account menu: Marketing -> Lead management -> custom lead group -> ILN.
Cross-reference:
- For detailed information about subscription statuses, please visit the link here.
- For detailed information about event 12. LicenseRequested, please visit the link here.
Webhook Parameters
Key/Value | Description |
---|---|
IPN_TYPE_ID |
|
IPN_TYPE_NAME | Text representation of IPN_TYPE_ID. |
ORDER_ID | Integer order ID. |
ORDER_STATUS_ID |
|
ORDER_STATUS | Text representation of ORDER_STATUS_ID. |
PRODUCT_ID | Integer product ID. |
PRODUCT_QUANTITY | Product items quantity. |
ORDER_ITEM_ID | Integer order item (product in the order) ID. |
ORDER_ITEM_NAME | Order item (product in the order) name. |
ORDER_ITEM_TYPE_ID |
|
ORDER_ITEM_TYPE_NAME | Text representation of ORDER_ITEM_TYPE_ID. |
VENDOR_BALANCE_CURRENCY_CODE | Balance currency of a vendor account. The balance currency can differ from the currency the customer has been charged in. |
ORDER_ITEM_BALANCE_CURRENCY_TOTAL_AMOUNT | Order item price converted into the balance currency of a vendor account. The balance currency can differ from the currency the customer has been charged in. |
ORDER_ITEM_BALANCE_CURRENCY_VENDOR_AMOUNT | The order item amount transferred to the vendor balance. It can be positive or negative. |
ORDER_ITEM_BALANCE_CURRENCY_AFFILIATE_AMOUNT | Affiliate’s share of the order item converted into the vendor balance currency. The balance currency can differ from the currency the customer has been charged in. |
ORDER_ITEM_BALANCE_CURRENCY_PARTNERS_AMOUNT | Partner’s share of the order item converted into the vendor balance currency. The balance currency can differ from the currency the customer has been charged in. |
ORDER_ITEM_BALANCE_CURRENCY_PAYPRO_EXPENSES_AMOUNT | PayPro Global commission for the order item converted into the vendor balance currency. The balance currency can differ from the currency the customer has been charged in. |
ORDER_ITEM_BALANCE_CURRENCY_REFUNDED | The order item refunded amount converted into the vendor balance currency. The balance currency can be different from the currency the customer has been charged in. |
ORDER_ITEM_BALANCE_CURRENCY_VENDOR_REFUNDED | Vendor’s share of the refunded order item amount converted into the vendor balance currency. The balance currency can differ from the currency the customer has been charged in. |
ORDER_ITEM_BALANCE_CURRENCY_AFFILIATE_REFUNDED | Affiliate’s share of the refunded order item amount converted into the balance currency of the affiliate account. The balance currency can differ from the currency the customer has been charged in. |
ORDER_ITEM_BALANCE_CURRENCY_PARTNERS_REFUNDED | Partner’s share of the refunded order item amount converted into the balance currency of the partner account. The balance currency can differ from the currency the customer has been charged in. |
ORDER_TOTAL_BALANCE_CURRENCY_AMOUNT | Total order value, including all order items and tax fees converted into the vendor balance currency. The balance currency can differ from the currency the customer has been charged in. |
ORDER_BALANCE_CURRENCY_VENDOR_AMOUNT | Vendor balance amount from the order in the balance currency. |
ORDER_TAXES_BALANCE_CURRENCY_AMOUNT | Total tax fees of all order items converted into the vendor balance currency. The balance currency can differ from the currency the customer has been charged in. |
ORDER_BALANCE_CURRENCY_REFUNDED | Refunded order amount converted into the vendor balance currency. The balance currency can differ from the currency the customer has been charged in. |
ORDER_BALANCE_CURRENCY_VENDOR_REFUNDED | Vendor’s share of the refunded order amount converted into the vendor balance currency. The balance currency can differ from the currency the customer has been charged in. |
ORDER_BALANCE_CURRENCY_AFFILIATE_REFUNDED | Affiliate’s share of the refunded order amount converted into the affiliate balance currency. The balance currency can differ from the currency the customer has been charged in. |
ORDER_BALANCE_CURRENCY_PARTNERS_REFUNDED | Partner’s share of the refunded order amount converted into the partner balance currency. The balance currency can differ from the currency the customer has been charged in. |
ORDER_ITEM_LICENSES | Product license keys. If more than one license key is issued for an order item (product), they are separated with “,\t” (comma and tab). |
PAYMENT_METHOD_ID |
|
PAYMENT_METHOD_NAME | Text representation of PAYMENT_METHOD_ID. |
ORDER_CURRENCY_CODE | The currency in which the customer has been charged for the order. |
ORDER_PLACED_TIME_CUSTOMER_TIMEZONE | Order placement time using the customer's time zone (taken from the customer’s browser/operating system). |
CUSTOMER_TIMEZONE | Customer’s time zone from browser/operating system. |
ORDER_PLACED_TIME_UTC | Order placement time in UTC. |
ORDER_REFERRER_URL | The webpage from where the customer came to the checkout page. |
ORDER_ITEM_SKU | The product SKU if it has been set up. |
ORDER_ITEMS_COUNT | The total number of the order items. |
ORDER_ITEM_UNIT_PRICE | The initial item value before any discounts were applied. |
ORDER_ITEM_TOTAL_AMOUNT | Order item price in the order currency. |
ORDER_ITEM_VENDOR_AMOUNT | Vendor’s share of the order item in the order currency. The funds transferred to the vendor balance are specified by ORDER_ITEM_BALANCE_CURRENCY_VENDOR_AMOUNT and VENDOR_BALANCE_CURRENCY_CODE. |
ORDER_ITEM_AFFILIATE_AMOUNT | Affiliate’s share of the order item in the order currency. |
ORDER_ITEM_PARTNERS_AMOUNT | Partner’s share of the order item in the order currency. |
ORDER_ITEM_REFUNDED | Order item refunded amount. |
ORDER_ITEM_VENDOR_REFUNDED | Vendor’s share of the order item refunded amount. |
ORDER_ITEM_AFFILIATE_REFUNDED | Affiliate’s share of the order item refunded amount. |
ORDER_ITEM_PARTNERS_REFUNDED | Partner’s share of the order item refunded amount. |
ORDER_ITEM_COUPON_DISCOUNT | Discount for the order item generated by a coupon in the order billing currency chosen by the customer on the checkout page. |
ORDER_ITEM_DYNAMIC_DISCOUNT | Discount for the order item generated by the dynamic settings in the order billing currency chosen by the customer on the checkout page. |
ORDER_ITEM_LEAD_DISCOUNT | Discount for the order item generated by the lead management offer in the order billing currency chosen by the customer on the checkout page. |
ORDER_ITEM_PROMO_DISCOUNT | Discount for the order item generated by cross-sell/up-sell promotions in the order billing currency chosen by the customer on the checkout page. |
ORDER_ITEM_VOLUME_DISCOUNT | Discount for the order item generated by the volume range discount in the order billing currency chosen by the customer on the checkout page. |
ORDER_ITEM_API_DISCOUNT | Discount for the order item generated by a dedicated API method in the order billing currency chosen by the customer on the checkout page. |
ORDER_ITEM_TOTAL_DISCOUNT | Total order item discount in the order billing currency. |
ORDER_TOTAL_AMOUNT | The total order value of all transactions including tax fees in the order billing currency. The result is 0 if no real transaction takes place. |
ORDER_TOTAL_AMOUNT_SHOWN | The total order value without tax fees in the order billing currency. |
ORDER_TOTAL_AMOUNT_WITH_TAXES_SHOWN | The total order value including tax fees in the order billing currency. |
ORDER_TAXES_AMOUNT | The total tax amount for all order items. |
ORDER_ITEM_TAX_NAME | Tax name of the order item. It is sent only if taxes are applied to the order. If a few tax categories are applied to the same order item, the parameter will be numbered ORDER_ITEM_TAX_NAME_1, ORDER_ITEM_TAX_NAME_2, etc. |
ORDER_ITEM_TAX_RATE | Tax rate from the order item. It is sent only if taxes are applied to the order. If a few tax categories are applied to the same order item, the parameter will be numbered ORDER_ITEM_TAX_RATE_1, ORDER_ITEM_TAX_RATE_2, etc. |
ORDER_REFUNDED | Refunded order amount. |
ORDER_VENDOR_REFUNDED | Vendor’s share of the refunded order amount. |
ORDER_AFFILIATE_REFUNDED | Affiliate’s share of the refunded order amount. |
ORDER_PARTNERS_REFUNDED | Partner’s share of the refunded order amount. |
ORDER_CUSTOM_FIELDS | Custom fields used in the order. |
CUSTOMER_ID | Integer customer ID. |
CUSTOMER_FIRST_NAME | The customer's first name. |
CUSTOMER_FIRST_NAME_ASCII | The customer's first name converted into ASCII if you are collecting data in ASCII only. |
CUSTOMER_LAST_NAME | The customer's last name. |
CUSTOMER_LAST_NAME_ASCII | The customer's last name converted into ASCII if you are collecting data in ASCII only. |
CUSTOMER_NAME | The customer's first and last name. |
CUSTOMER_NAME_ASCII | The customer's first and last name converted into ASCII if you are collecting data in ASCII only. |
CUSTOMER_EMAIL | The customer's email address. |
CUSTOMER_IP | The customer's IP address. |
CUSTOMER_COUNTRY_CODE | The customer's country specified on the checkout page. |
CUSTOMER_COUNTRY_NAME | The customer's country name chosen on the checkout page. |
CUSTOMER_COUNTRY_CODE_BY_IP | The customer's country name detected by the customer's IP address if the detection process succeeds. |
CUSTOMER_COUNTRY_NAME_BY_IP | The customer's country name detected by the customer's IP address if the detection process succeeds. |
CUSTOMER_STATE_CODE | The customer's state code, if applicable. |
CUSTOMER_STATE_NAME | The customer's state name, if applicable. |
CUSTOMER_CITY | The customer's city. |
CUSTOMER_STREET_ADDRESS | The customer's street address. |
CUSTOMER_STREET_NUMBER | The customer's street number. This field is only available if the chosen billing country is Mexico, Brazil, Chile. |
CUSTOMER_ZIPCODE | The customer's ZIP/postal code. |
CUSTOMER_PHONE | The customer's phone number. |
CUSTOMER_FISCAL_NUMBER_PERSONAL | The customer's personal fiscal number. Available if the billing country is Brazil. |
CUSTOMER_FISCAL_NUMBER_CORPORATE | The customer's corporate fiscal number. Available if the billing country is Brazil. |
CORPORATE_PURCHASE | Allowed values are True or False. |
COMPANY_NAME | The company name, if provided. |
LICENSED_TO_NAME | The licensee's name if the license was sent to another person. |
LICENSED_TO_NAME_ASCII | The licensee's name converted into ASCII if you collect data in ASCII only, and the license was sent to another person. |
LICENSED_TO_EMAIL | The licensee's email address if the license was sent to another person. |
ACTION_REASON | The action reason, if available, in case of decline, refund, chargeback, or subscription cancellation. |
AFFILIATE_AGREEMENT_ID | The integer affiliate agreement ID if the order item has an affiliate commission. |
AFFILIATE_NETWORK_ID | The integer affiliate network ID if the order item has an affiliate commission. |
AFFILIATE_VENDOR_ACCOUNT_ID | The integer affiliate vendor account ID if the order item has an affiliate commission. |
COUPON_CODE | The coupon code used in the order. |
COUPON_ID | The coupon ID if a coupon has been applied. |
COUPON_NAME | The used coupon name if a coupon has been applied. |
CREDIT_CARD_BIN | The bank identification number (BIN). |
CREDIT_CARD_BIN_RESULT | The bank branch information. |
CREDIT_CARD_LAST4 | The last 4 digits of the credit card used by the customer during the payment process. |
CREDIT_CARD_EXPIRATION_DATE | The credit card expiration date if paid using a credit card. |
MAXMIND_RESULT | The MaxMind result. |
CUSTOM_LICENSE_INFO | The custom license information specified in the external license generator pool in case of a LicenseRequested IPN type. |
HASH | The IPN verification signature hash is MD5(“1”) for test orders or MD5 (OrderId+SecretKey) in case of real orders. Example: MD5(456346wErt6HmQ). The secret key can be specified in Store Settings –> General settings -> Integration tab in the PayPro Global Control Panel. The IPN hash computes in the following manner:
|
SIGNATURE | The IPN verification signature hash is SHA256({ORDER_ID}+{ORDER_STATUS}+{ORDER_TOTAL_AMOUNT}+{CUSTOMER_EMAIL}+{VALIDATION_KEY}+{TEST_MODE}+{IPN_TYPE_NAME}). The "+" character here is not a part of the input string but a sign of concatenation. Example: The validation key can be found in Store Settings –> General settings -> Integration tab in the PayPro Global Control Panel. |
PAYPAL_ACCOUNT | The customer's PayPal account if used. |
SHIPPING_COUNTRY_CODE | The code of the country where the product should be delivered to. |
SHIPPING_COUNTRY_NAME | The name of the country where the product should be delivered to. |
SHIPPING_STATE_CODE | The state code (if applicable) where the product should be delivered to. |
SHIPPING_STATE_NAME | The state name (if applicable) where the product should be delivered to. |
SHIPPING_CITY | The name of the city where the product should be delivered to. |
SHIPPING_FIRST_NAME | The first name of the recipient. |
SHIPPING_FIRST_NAME_ASCII | The first name of the recipient converted into ASCII. |
SHIPPING_LAST_NAME | The last name of the recipient. |
SHIPPING_LAST_NAME_ASCII | The last name of the recipient converted into ASCII. |
SHIPPING_STREET_ADDRESS | The street address of where the product should be delivered to. |
SHIPPING_ZIPCODE | The ZIP or postal code of where the product should be delivered to. |
SUBSCRIPTION_ID | Integer subscription ID. |
SUBSCRIPTION_NEXT_CHARGE_DATE | Subscription next charge date. |
SUBSCRIPTION_NEXT_CHARGE_AMOUNT | The reference next charge amount or the billing next charge amount depends on the product pricing configuration. |
SUBSCRIPTION_NEXT_CHARGE_CURRENCY_CODE | The reference currency code or the billing currency code depends on the product pricing configuration. |
SUBSCRIPTION_NEXT_CHARGE_CURRENCY | Allowed values are 0 or 1.
|
SUBSCRIPTION_STATUS_ID |
|
SUBSCRIPTION_STATUS_NAME | Text representation of SUBSCRIPTION_STATUS_ID. |
SUBSCRIPTION_INITIAL_ORDER_ID | The order ID number for the subscription initial charge. |
SUBSCRIPTION_RENEWAL_TYPE | The subscription renewal type. Allowed values are Manual or Auto. |
SUBSCRIPTION_NUMBER_OF_BILLING_CYCLES | The billing cycle the customer is currently on. |
SUBSCRIPTION_NUMBER_OF_FAILED_ATTEMPTS | The number of failed attempts to charge a subscription. |
SUBSCRIPTION_CANCELLATION_REASON_ID |
It is sent only in cases where the subscription has been manually canceled by the customer, a PayPro Global representative, or the vendor. |
SUBSCRIPTION_FINISH_DATE | The subscription expiration date. It is sent only in IPN type 11. SubscriptionFinished. |
IS_ON_TRIAL_PERIOD | Allowed values are 0 or 1. The value is 1 if a product has a trial period, 0 otherwise. |
TRIAL_PERIOD_TILL | The trial period end date if the product has a trial period. |
OPTION_GROUP_IDS | List of group IDs from the combination items if the product has the multiple options pricing variations enabled. |
OPTION_GROUP_ITEM_IDS | List of group item IDs from the combination items if the product has the multiple options pricing variations enabled. |
PRODUCT_COMBINATION_ID | The combination value ID of the combination group item if the product has the multiple options pricing variations enabled. |
PRODUCT_COMBINATION_NAME | The combination value name of the combination group item if the product has the multiple options pricing variations enabled. |
SELECTION_GROUP_ITEM_IDS | The list of group item IDs for the product selection if the product has the multiple options pricing variations enabled. |
SELECTION_GROUP_ITEM_NAMES | The list of group item names for the product selection if the product has the multiple options pricing variations enabled. |
CUSTOMER_LANGUAGE_CODE | The language selected by a customer during the purchase. |
REGIONAL_PRICE | Allowed values are True or False. |
INVOICE_LINK | The invoice URL. |
BUNDLED_ITEMS_COUNT | Bundled product count. |
REFUND_ISSUED_BY | Allowed values are PayPro Global or Vendor. It is sent only in IPN types:
|
TEST_MODE | Allowed values are 1 or 0. |
CROSS_SELL_MAIN_ITEM_ID | Order item ID of a product that was sold in a cross-sell offer. |
CROSS_SELL_ITEM_IDS | Order item IDs of the products that were sold in a cross-sell offer. |
IS_CROSS_SELL_ITEM | Allowed values are True or False. If True, then the item was sold in a cross-sell offer. |
CHECKOUT_QUERY_STRING | Checkout query string. |
IS_RESENT | Allowed value is 1. It is passed only if webhook/IPN request is resent. |
LEAD_TYPE_ID | Lead type ID. Allowed values 1 or 2.
It is sent only in IPN type 16. InstantLeadNotification. |
LEAD_TYPE_NAME | Lead type name. It is sent only in IPN type 16. InstantLeadNotification. |
LEAD_CAMPAIGN_ID | Lead campaign ID. It is sent only in IPN type 16. InstantLeadNotification. |
LEAD_FOLLOW_UP_ID | Lead follow up ID. It is sent only in IPN type 16. InstantLeadNotification. |
Webhook Testing
Test out your webhook configuration before going live.
We provide 2 options to test webhooks:
- IPN simulator
- A test order
IPN simulator
To open the simulator, please log into your PayPro Global account, and go to Developer tool -> IPN simulator. This tool instantly sends extensive purchase details directly to the URL you provided and allows you to check if your server has received the webhooks in real-time.
To generate a webhook event, you need to fill in the following information:
-
IPN handler URL – add your IPN/webhook server’s URL to ensure the communication between PayPro Global’s notification system and your database;
-
Transaction type – select the transaction for which you wish to receive our instant notifications from the dropdown list available there.
Please note that we have already filled out all the necessary and frequently used fields in the internal statistics with our standard values to free the vendor from constantly filling them out during each test.
A test order
You can also test webhooks by placing a test order. To enable a test mode, add the following URL parameters &use-test-mode=true&secret-key=SECRETKEY
. The latter is your unique key which can be found in Store settings -> General settings -> Integration tab.
Please note that all transaction-related parameters will have a 0 value for test orders.
Webhook Type: LicenseRequested
The webhook type of LicenseRequested is an excellent option if:
- the activation of your products requires a license code
- you're hosting a license generator on your end and want to return a code in real-time mode when the order is processed
We use the webhook functionality to dynamically receive your license code and pass it to the customer.
To set up the external license generator:
- Navigate to Store settings -> License management in your PayPro Global account.
- Create a new license provider using the Add license option and choose type: External License Generator.
- Enter a webhook URL in the URL field.
- Click the Save button to confirm your setup.
When this process has been completed, we will send you a webhook request:
IPN_TYPE_ID=12
IPN_TYPE_NAME=LicenseRequested
In response to our request, your server must send a license key. This generates the license code for the product every time the purchase is successfully completed.
We provide this license key to your customers via the thank you page and in the purchase confirmation email. Our system considers any response from your server as a license key, but it is better if you return the license key as plain text.
You can add Custom license Info which we will send you in the request via the value CUSTOM_LICENSE_INFO
.
Separate Webhook Endpoints
Receive webhook notifications to various production environments with PayPro Global.
If you have several production environments and you need to configure a webhook URL for every environment, you can pass the IPN domain via a dedicated URL parameter to the checkout page.
Navigate to Store Settings -> General Settings -> Integration and in IPN URLs section enter a single IPN domain per line. For example: https://some.domain/ipn?p=1
.
After this, you need to use an actual domain as the URL parameter &ipn-domain=ipn.example.com
on the checkout page to get a post-purchase alert to appear. The value of the ipn-domain
is a filter for the IPN URLs list.
If you want to invalidate the checkout process without ipn-domain
checkout URL parameter, then contact your account manager ([email protected]) to enable this option for your account.