### Webhook Setup Source: https://developers.payproglobal.com/docs/integrate-with-paypro-global/webhook-ipn Set up a dedicated URL for receiving HTTP POST requests from PayPro Global. This involves configuring the IPN URL in your product setup. ```APIDOC ## Webhook Setup ### Description To receive webhook notifications, you need to set up a dedicated URL within your PayPro Global account. This URL will receive HTTP POST requests for various events. ### Steps 1. Navigate to **Store settings -> Product setup** in your PayPro Global account. 2. Create a new product (**Add product**) or edit an existing one (**Edit**). 3. Enter your webhook URL in the **IPN URL** field under the **1.Product** section. This can be applied to all products. 4. Click the **Save** button. ``` -------------------------------- ### Webhook Event Setup: LicenseRequested Source: https://developers.payproglobal.com/docs/integrate-with-paypro-global/webhook-ipn Specific setup is required for the `LicenseRequested` event, involving configuring an External License Generator in your license management settings. ```APIDOC ## Webhook Event Setup: LicenseRequested ### Description Additional setup is required to enable the `LicenseRequested` event, which involves configuring an external license generator. ### Steps 1. Navigate to **Store settings -> License management** in your PayPro Global account. 2. Create a new license provider (**Add license**) or edit an existing one (**Edit**). 3. Ensure the type is set to **External License Generator**. 4. Enter the URL for your license generator in the **URL** field. 5. Click the **Save** button. ### Testing After saving, you can test the key generation using the dedicated **Test** button. ``` -------------------------------- ### Get Subscription Details Request Example (JSON) Source: https://developers.payproglobal.com/docs/api/subscriptions/get-subscription-details An example JSON payload for requesting subscription details. It includes the subscription ID, vendor account ID, API secret key, and an optional date format. ```json { "dateFormat": "a", "subscriptionId": 1111111, "vendorAccountId": 123456, "apiSecretKey": "your_api_secret_key" } ``` -------------------------------- ### Get Store Products API Request Example Source: https://developers.payproglobal.com/docs/api/products/get-store-products This JSON object demonstrates a sample request to the Get Store Products API. It includes various parameters to filter and identify the desired products, along with necessary authentication details. ```json { "productIds": [ 12345, 12345 ], "productNames": [ "Test_product", "Test_product_2" ], "productSKUs": [ "your_SKU_1", "your_SKU_2" ], "productStatusId": 1, "productChargingTypeId": 2, "languageCode": "en", "vendorAccountId": 123456, "apiSecretKey": "your_api_secret_key" } ``` -------------------------------- ### Get Store Products API Source: https://developers.payproglobal.com/docs/api/overview Fetches specific details for products in the store, such as ID, name, description, logo, and SKU. This is essential for effective product management. It allows filtering by product IDs, names, SKUs, and status, along with vendor account and API secret key. ```json { "productIds": [ 1, 2 ], "productNames": [ "sample string 1", "sample string 2" ], "productSKUs": [ "sample string 1", "sample string 2" ], "productStatusId": 1, "productChargingTypeId": 1, "languageCode": "sample string 1", "vendorAccountId": 123456, "apiSecretKey": "your_api_secret_key" } ``` -------------------------------- ### URL Parameters for Product Configuration Source: https://developers.payproglobal.com/docs/checkout-pages/url-parameters This section outlines the various URL parameters used to configure products within the PayPro Global system. These parameters allow for dynamic setting of product details, pricing, discounts, and subscription options. ```APIDOC ## URL Parameters ### Description These parameters are used in the URL to dynamically configure products and checkout settings for PayPro Global. ### Method GET (Implied, as these are URL parameters) ### Endpoint `/websites/developers_payproglobal` (Base endpoint, parameters are appended) ### Parameters #### Query Parameters - **products[i][id]** (integer) - Required - Product ID of the product you want to sell. `[i]` represents the product's position in the cart. - **products[i][qty]** (integer) - Optional - Product quantity of the product you want to sell. `[i]` represents the product's position in the cart. - **products[i][agreement-id]** (integer) - Optional - Affiliate agreement ID of the product you want to sell. `[i]` represents the product's position in the cart. - **products[i][data]** (string) - Optional - Dynamic encrypted data of the product. Requires 'Encrypted dynamic settings' to be activated in product settings. `[i]` represents the product's position in the cart. - **products[i][name]** (string) - Optional - Dynamic product name. Requires 'Non-encrypted dynamic settings' to be activated in product settings. `[i]` represents the product's position in the cart. - **products[i][description]** (string) - Optional - Dynamic product description. Requires 'Non-encrypted dynamic settings' to be activated in product settings. `[i]` represents the product's position in the cart. - **products[i][discountpercentage]** (decimal) - Optional - Dynamic percentage discount for the product. Requires 'Non-encrypted dynamic settings' to be activated in product settings. `[i]` represents the product's position in the cart. - **products[i][price][CURRENCY_CODE][amount]** (decimal number) - Optional - Dynamic product price in the selected currency. Requires 'Non-encrypted dynamic settings' to be activated in product settings. `[i]` represents the product's position in the cart. Refer to documentation for available `CURRENCY_CODE`s. - **products[i][recurringprice][CURRENCY_CODE][amount]** (decimal number) - Optional - Dynamic product recurring price in the selected currency. Requires 'Non-encrypted dynamic settings' to be activated in product settings. `[i]` represents the product's position in the cart. Refer to documentation for available `CURRENCY_CODE`s. - **products[i][price][CURRENCY_CODE][sku]** (string) - Optional - Predefined dynamic product SKU. Requires 'Non-encrypted dynamic settings' to be activated in product settings. `[i]` represents the product's position in the cart. - **products[i][hash]** (string) - Optional - Hash protection for the product. Requires 'Non-encrypted dynamic settings' to be activated in product settings. `[i]` represents the product's position in the cart. - **products[i][LinkExpiration]** (date (UTC, yyyy-mm-ddThh:mm:ss)) - Optional - Predefined date and time when the URL becomes invalid. Requires 'Non-encrypted dynamic settings' to be activated in product settings. `[i]` represents the product's position in the cart. - **products[i][allow-recurring-charges]** (boolean) - Optional - Allowed values: `true` or `false`. If `true`, subscription renewal is automatic; otherwise, manual. `[i]` represents the product's position in the cart. - **products[i][skip-trial-period]** (boolean) - Optional - Allowed values: `true` or `false`. If `true`, allows skipping the trial period and paying instantly. Applicable if specific trial period options are enabled in subscription settings. `[i]` represents the product's position in the cart. - **products[i][download-warranty]** (boolean) - Optional - Allowed values: `true` or `false`. If `true`, the download warranty is added to the cart. `[i]` represents the product's position in the cart. - **products[i][media-backup]** (boolean) - Optional - Allowed values: `true` or `false`. If `true`, the backup media is added to the cart. `[i]` represents the product's position in the cart. - **products[i][option-groups][OPTION_GROUP_ID]** (integer) - Optional - Product option group ID for groups where only one item ID can be chosen. `[i]` represents the product's position in the cart. - **products[i][option-groups][OPTION_GROUP_ID][]** (integer) - Optional - Product option group ID for groups where multiple item IDs can be chosen. Applies to selection option groups. `[i]` represents the product's position in the cart. - **custom-fields[CUSTOM_FIELD_ID][]** (integer) - Optional - Custom field ID specified in Page templates -> 3.Design -> option 'I want to add custom fields'. - **x-\** (string) - Optional - Any custom value to be passed to the checkout page and received back via webhook (e.g., `&x-userid=123`). - **page-template** (integer) - Optional - Checkout page template ID. - **all-payment-methods** (boolean) - Optional - Allowed values: `true` or `false`. If `true`, all available payment methods are displayed. - **enable-auto-renewal** (boolean) - Optional - Allowed values: `true` or `false`. If `true`, the subscription renewal type is set to automatic. - **coupon-code-to-add** (string) - Optional - Apply a coupon code. ### Request Example ``` https://your-payproglobal-shop.com/checkout?products[0][id]=123&products[0][qty]=1&products[0][price][USD][amount]=19.99&products[1][id]=456&products[1][allow-recurring-charges]=true&x-customer-id=abc789 ``` ### Response #### Success Response (200) - **URL** (string) - The generated checkout URL with the specified parameters. #### Response Example ```json { "checkout_url": "https://your-payproglobal-shop.com/checkout?products[0][id]=123&products[0][qty]=1&products[0][price][USD][amount]=19.99&products[1][id]=456&products[1][allow-recurring-charges]=true&x-customer-id=abc789" } ``` ``` -------------------------------- ### Get Store Products API Response Example Source: https://developers.payproglobal.com/docs/api/products/get-store-products This JSON object illustrates a typical response from the Get Store Products API. It contains the requested product details, the original request parameters, and a success status indicator. ```json { "response": { "storeProducts": [{ "id": 12345, "name": "Test_product", "description": "product_description", "logo": null, "sku": null },{ "id": 12345, "name": "Test_product_2", "description": "product_description", "logo": "/Content/files/logo.png", "sku": "SKU" }] }, "request": { "productIds": [ 12345, 12345 ], "productNames": [ "Test_product", "Test_product_2" ], "productSKUs": [ "your_SKU_1", "your_SKU_2" ], "productStatusId": 1, "productChargingTypeId": 2, "languageCode": "en", "vendorAccountId": 123456, "apiSecretKey": "your_api_secret_key" }, "errors": [], "isSuccess": true } ``` -------------------------------- ### Skip Trial Period with URL Parameter Source: https://developers.payproglobal.com/docs/subscriptions/subscription-overview This code snippet demonstrates how to use a URL parameter to allow customers to skip the trial period and pay instantly for a product. This is useful for products with an initial trial period where immediate payment might be desired. ```text &products[1][skip-trial-period]=true ``` -------------------------------- ### POST /api/Products/GetStoreProducts Source: https://developers.payproglobal.com/docs/api/overview Retrieves details for specific products in your store. ```APIDOC ## POST /api/Products/GetStoreProducts ### Description Fetches detailed information about products in your store, including ID, name, description, logo, and SKU. ### Method POST ### Endpoint https://store.payproglobal.com/api/Products/GetStoreProducts ### Parameters #### Request Body - **productIds** (array of integers) - Optional - A list of product IDs to retrieve. - **productNames** (array of strings) - Optional - A list of product names to filter by. - **productSKUs** (array of strings) - Optional - A list of product SKUs to filter by. - **productStatusId** (integer) - Optional - Filter products by their status ID. - **productChargingTypeId** (integer) - Optional - Filter products by their charging type ID. - **languageCode** (string) - Optional - The language code for product details. - **vendorAccountId** (integer) - Required - The vendor account ID. - **apiSecretKey** (string) - Required - The API secret key for authentication. ### Request Example ```json { "productIds": [ 1, 2 ], "productNames": [ "sample string 1", "sample string 2" ], "productSKUs": [ "sample string 1", "sample string 2" ], "productStatusId": 1, "productChargingTypeId": 1, "languageCode": "sample string 1", "vendorAccountId": 123456, "apiSecretKey": "your_api_secret_key" } ``` ### Response #### Success Response (200) (Response details not provided in the source text) #### Response Example (Response example not provided in the source text) ``` -------------------------------- ### Create Order API Source: https://developers.payproglobal.com/docs/api/orders/do-reference-charge This endpoint allows you to create a new order with specified product details, pricing, and currency conversion options. It requires vendor authentication details. ```APIDOC ## POST /websites/developers_payproglobal ### Description This endpoint creates a new order, optionally converting the price to a local currency based on the current exchange rate. The new order ID will be placed in a local currency. ### Method POST ### Endpoint /websites/developers_payproglobal ### Parameters #### Request Body - **referencedOrderId** (integer) - Required - The ID of the referenced order. - **productId** (integer) - Required - The ID of the product. - **priceCurrencyCode** (string) - Required - The currency code of the price (e.g., "USD"). - **priceValue** (number) - Required - The value of the price. - **referenceChargeName** (string) - Required - The name of the reference charge. - **sku** (string) - Required - The Stock Keeping Unit for the product. - **customFields** (object) - Optional - A key-value object for custom fields. - **some-key-1** (string) - Description for custom field 1. - **some-key-2** (string) - Description for custom field 2. - **orderItemDetails** (array[object]) - Required - An array of order item details. - **orderItemName** (string) - Required - The name of the order item. - **unitPriceValue** (number) - Required - The unit price value. - **quantity** (integer) - Required - The quantity of the item. - **affiliateAgreementId** (any) - Optional - The affiliate agreement ID. - **convertToReferenceCurrency** (boolean) - Required - Whether to convert to the reference currency. - **vendorAccountId** (integer) - Required - The vendor account ID. Found in Account settings > Business info. - **apiSecretKey** (string) - Required - The vendor account API secret key. Found in Store settings > General settings > Integration tab. ### Request Example ```json { "referencedOrderId": 12345678, "productId": 12345, "priceCurrencyCode": "USD", "priceValue": 99.95, "referenceChargeName": "Premium Upgrade", "sku": "your_SKU", "customFields": { "some-key-1": "your custom value 1", "some-key-2": "your custom value 2" }, "orderItemDetails": [ { "orderItemName": "Upgrade", "unitPriceValue": 99.95, "quantity": 3 }, { "orderItemName": "Upgrade", "unitPriceValue": 99.95, "quantity": 3 } ], "affiliateAgreementId": null, "convertToReferenceCurrency": true, "vendorAccountId": 123456, "apiSecretKey": "your_api_secret_key" } ``` ### Response #### Success Response (200) - **response** (object) - Contains details about the processed order. - **orderId** (integer) - The ID of the created order. - **orderStatusName** (string) - The name of the order status. - **orderStatusId** (integer) - The ID of the order status. - **orderDeclineReason** (any) - The reason for order decline, if any. - **error** (any) - Any error object associated with the response. - **request** (object) - Echoes the request details. - **errors** (array[object]) - An array of errors, if any. - **propertyWithError** (string) - The property that has an error. - **propertyErrorMessages** (array[string]) - An array of error messages for the property. - **isSuccess** (boolean) - Indicates if the request was successful. #### Response Example ```json { "response": { "orderId": 12345678, "orderStatusName": "Processed", "orderStatusId": 5, "orderDeclineReason": null, "error": null }, "request": { "referencedOrderId": 12345678, "productId": 12345, "priceCurrencyCode": "USD", "priceValue": 99.95, "referenceChargeName": "Premium Upgrade", "sku": "your_SKU", "customFields": { "some-key-1": "your custom value 1", "some-key-2": "your custom value 2" }, "orderItemDetails": [{ "orderItemName": "Upgrade", "unitPriceValue": 99.95, "quantity": 3 }, { "orderItemName": "Upgrade", "unitPriceValue": 99.95, "quantity": 3 }], "affiliateAgreementId": null, "convertToReferenceCurrency": true, "vendorAccountId": 123456, "apiSecretKey": "your_api_secret_key" }, "errors": [], "isSuccess": true } ``` ``` -------------------------------- ### Get Orders List Request Sample (JSON) Source: https://developers.payproglobal.com/docs/api/orders/get-list This JSON object demonstrates a sample request payload for the Get List endpoint. It includes parameters for pagination, search criteria such as order IDs and date ranges, sorting options, and authentication details. ```json { "skip": 0, "take": 50, "search": { "orderIds": [ 12345678, 12345678 ], "subscriptionId": null, "customerEmail": null, "orderStatusId": null, "dateFrom": "2023-10-02T08:00:34", "dateTo": "2024-10-02T09:30:34" }, "sortByDate": "asc", "includeTestOrders": false, "vendorAccountId": 123456, "apiSecretKey": "your_api_secret_key" } ``` -------------------------------- ### Encrypted Dynamic Settings Source: https://developers.payproglobal.com/docs/checkout-pages/dynamic-checkout-links This section describes how to pass product details using a single encrypted parameter when encryption is enabled. ```APIDOC ## GET /checkout ### Description Allows passing product details via a single encrypted parameter when encryption is enabled. This method enhances security by encrypting all dynamic data. ### Method GET ### Endpoint `https://store.payproglobal.com/checkout` ### Parameters #### Query Parameters - **products[N][data]** (string) - Required - An encrypted string containing all dynamic product data. `N` represents the product index, starting from 1. ### Request Example ``` https://store.payproglobal.com/checkout?products[1][data]=ENCRYPTED_STRING_HERE ``` ### Response #### Success Response (200) - **status** (string) - Indicates the success of the operation. - **redirect_url** (string) - The URL to redirect the user to for checkout completion. #### Response Example ```json { "status": "success", "redirect_url": "https://secure.payproglobal.com/checkout/process?id=..." } ``` ``` -------------------------------- ### Get Order Details Source: https://developers.payproglobal.com/docs/api/subscriptions/get-subscription-details Retrieves detailed information about a specific order, including payment method, status, and creation date. ```APIDOC ## GET /websites/developers_payproglobal/orders/{orderId} ### Description Retrieves detailed information about a specific order, including payment method, status, and creation date. ### Method GET ### Endpoint /websites/developers_payproglobal/orders/{orderId} ### Parameters #### Path Parameters - **orderId** (integer) - Required - The unique identifier of the order. #### Query Parameters None #### Request Body None ### Request Example None ### Response #### Success Response (200) - **paymentMethodId** (integer) - The ID of the payment method used. - **orderStatusName** (string) - The current status of the order (e.g., "Processed"). - **paymentMethodName** (string) - The name of the payment method used (e.g., "Visa"). - **createdAt** (string) - The date and time when the order was created in ISO 8601 format. - **affiliateAgreementId** (null) - Placeholder for affiliate agreement ID, currently null. #### Response Example ```json { "data": [ { "paymentMethodId": 2, "orderStatusName": "Processed", "paymentMethodName": "Visa", "createdAt": "2023-09-09T10:32:46.097", "affiliateAgreementId": null } ], "request": { "dateFormat": "a", "subscriptionId": 1111111, "vendorAccountId": 123456, "apiSecretKey": "your_api_secret_key" }, "errors": [], "isSuccess": true } ``` ``` -------------------------------- ### Get Subscriptions Source: https://developers.payproglobal.com/docs/api/subscriptions/get-list Retrieves a list of subscriptions with various filtering and sorting options. This endpoint is useful for managing customer subscriptions and tracking their status. ```APIDOC ## GET /websites/developers_payproglobal/subscriptions ### Description Retrieves a list of subscriptions with filtering, sorting, and pagination options. ### Method GET ### Endpoint /websites/developers_payproglobal/subscriptions ### Parameters #### Query Parameters - **skip** (integer) - Optional - The number of records to skip for pagination. - **take** (integer) - Optional - The maximum number of records to return. - **search** (object) - Optional - An object containing search criteria: - **subscriptionIds** (array of integers) - Optional - Filter by subscription IDs. - **statusIds** (array of integers) - Optional - Filter by status IDs. - **customerEmail** (string) - Optional - Filter by customer email. - **dateFrom** (string) - Optional - Filter by date range (from). - **dateTo** (string) - Optional - Filter by date range (to). - **sortByDate** (string) - Optional - Sort order for dates ('asc' or 'desc'). - **dateFormat** (string) - Optional - The desired date format. - **includeOrders** (boolean) - Optional - Whether to include order information. - **vendorAccountId** (integer) - Optional - Filter by vendor account ID. - **apiSecretKey** (string) - Required - Your API secret key for authentication. ### Request Example ```json { "skip": 0, "take": 50, "search": { "subscriptionIds": [ 1111111, 1111111 ], "statusIds": [ 1111111 ], "customerEmail": "customer@email.com", "dateFrom": "2023-10-02T08:00:34", "dateTo": "2024-10-02T09:30:34" }, "sortByDate": "asc", "dateFormat": "a", "includeOrders": true, "vendorAccountId": 123456, "apiSecretKey": "your_api_secret_key" } ``` ### Response #### Success Response (200) - **id** (integer) - The unique identifier of the subscription. - **name** (string) - The name of the subscription. - **status** (string) - The current status of the subscription. - **createdAt** (string) - The date and time the subscription was created. - **nextPayment** (string) - The date and time of the next payment. - **lastPayment** (string) - The date and time of the last payment. - **currentChargeCounter** (integer) - The number of charges made. - **subscriptionPrice** (number) - The price of the subscription. - **subscriptionCurrency** (string) - The currency of the subscription price. - **subscriptionPeriod** (string) - The period of the subscription (e.g., 'Days'). - **subscriptionPeriodValue** (integer) - The value of the subscription period. - **isTrial** (boolean) - Indicates if the subscription is a trial. - **renewalType** (string) - The type of renewal (e.g., 'Auto'). - **orders** (array of integers) - A list of associated order IDs. - **request** (object) - Details of the request made. - **errors** (array) - A list of errors, if any. - **isSuccess** (boolean) - Indicates if the request was successful. #### Response Example ```json { "id": 12345678, "name": "Test_list", "status": "Active", "createdAt": "2023-09-09T11:44:10.417", "nextPayment": "2024-03-29T11:29:59.837", "lastPayment": "2024-02-29T11:29:59.837", "currentChargeCounter": 1, "subscriptionPrice": 58.83, "subscriptionCurrency": "USD", "subscriptionPeriod": "Days", "subscriptionPeriodValue": 1, "isTrial": false, "renewalType": "Auto", "orders": [ 1111 ], "request": { "skip": 0, "take": 50, "search": { "subscriptionIds": [ 1111111, 1111111 ], "statusIds": [ 1111111 ], "customerEmail": "customer@email.com", "dateFrom": "2023-10-02T08:00:34", "dateTo": "2024-10-02T09:30:34" }, "sortByDate": "asc", "dateFormat": "a", "includeOrders": true, "vendorAccountId": 123456, "apiSecretKey": "your_api_secret_key" }, "errors": [], "isSuccess": true } ``` ``` -------------------------------- ### Webhook Testing Source: https://developers.payproglobal.com/docs/integrate-with-paypro-global/webhook-ipn Information on how to test your webhook configurations before going live using the provided options. ```APIDOC ## Webhook Testing Test out your webhook configuration before going live. We provide 2 options to test webhooks: 1. **IPN simulator**: Use the IPN simulator to send test IPNs to your configured webhook URL. 2. **A test order**: Place a test order to trigger a real IPN that will be sent to your webhook URL. ``` -------------------------------- ### IPN Simulator Source: https://developers.payproglobal.com/docs/integrate-with-paypro-global/webhook-ipn The IPN simulator allows you to test your server's ability to receive IPN/webhook notifications in real-time by sending extensive purchase details to a specified URL. ```APIDOC ## IPN Simulator ### Description This tool allows you to instantly send extensive purchase details directly to a provided URL to check if your server has received the webhooks in real-time. Access it via **Developer tool - > IPN simulator** in your PayPro Global account. ### Usage 1. Log into your PayPro Global account. 2. Navigate to **Developer tool - > IPN simulator**. 3. Fill in the required information: * **IPN handler URL**: Your IPN/webhook server's URL. * **Transaction type**: Select the desired transaction type from the dropdown list. PayPro Global pre-fills necessary fields with standard values to simplify testing. ``` -------------------------------- ### Get Store Products Source: https://developers.payproglobal.com/docs/api/products/get-store-products Retrieves a list of products from your PayProGlobal store. You can filter products by their IDs, names, SKUs, status, and charging types. ```APIDOC ## POST /api/Products/GetStoreProducts ### Description Retrieves a list of products from your PayProGlobal store. You can filter products by their IDs, names, SKUs, status, and charging types. ### Method POST ### Endpoint `https://store.payproglobal.com/api/Products/GetStoreProducts` ### Parameters #### Request Body - **productIds** (array[integer]) - Conditional - The list of product IDs for which you want to get the product details. - **productNames** (array[string]) - Conditional - The list of product names for which you want to get the product details. - **productSKUs** (array[string]) - Conditional - The list of product SKU values for which you want to get the product details. - **productStatusId** (integer) - Optional - The product status. It can be active (value = 1) or inactive (value = 0). - **productChargingTypeId** (integer) - Optional - The product charging type. It can be a one-time payment (value = 1) or a subscription (value = 2). - **languageCode** (string) - Optional - The language code. It is used to get the response results storeProducts name and description in a defined language if needed. - **vendorAccountId** (integer) - Required - The vendor account ID identifies your PayPro Global account. It can be found in Account settings > Business info. - **apiSecretKey** (string) - Required - The vendor account API secret key is a unique key that was generated specifically for authenticating API requests. It can be found in Store settings > General settings > Integration tab. ### Request Example ```json { "productIds": [ 12345, 12345 ], "productNames": [ "Test_product", "Test_product_2" ], "productSKUs": [ "your_SKU_1", "your_SKU_2" ], "productStatusId": 1, "productChargingTypeId": 2, "languageCode": "en", "vendorAccountId": 123456, "apiSecretKey": "your_api_secret_key" } ``` ### Response #### Success Response (200) - **response** (object) - Contains the list of store products. - **storeProducts** (array[object]) - List of store products. - **id** (integer) - The product ID value. - **name** (string) - The product name value. - **description** (string) - The product description value. - **logo** (string) - The product logo path. - **sku** (string) - The product SKU value. - **request** (object) - Echoes the request parameters. - **errors** (array[object]) - List of errors encountered during the request. - **propertyWithError** (string) - **propertyErrorMessages** (array[string]) - **isSuccess** (boolean) - Indicates if the request was successful. #### Response Example ```json { "response": { "storeProducts": [{ "id": 12345, "name": "Test_product", "description": "product_description", "logo": null, "sku": null },{ "id": 12345, "name": "Test_product_2", "description": "product_description", "logo": "/Content/files/logo.png", "sku": "SKU" }] }, "request": { "productIds": [ 12345, 12345 ], "productNames": [ "Test_product", "Test_product_2" ], "productSKUs": [ "your_SKU_1", "your_SKU_2" ], "productStatusId": 1, "productChargingTypeId": 2, "languageCode": "en", "vendorAccountId": 123456, "apiSecretKey": "your_api_secret_key" }, "errors": [], "isSuccess": true } ``` ``` -------------------------------- ### GET /websites/developers_payproglobal/orders Source: https://developers.payproglobal.com/docs/api/orders/get-list Retrieves a list of orders based on specified criteria. This endpoint allows filtering by order IDs, date ranges, and other parameters to fetch relevant order data. ```APIDOC ## GET /websites/developers_payproglobal/orders ### Description Retrieves a list of orders based on specified criteria. This endpoint allows filtering by order IDs, date ranges, and other parameters to fetch relevant order data. ### Method GET ### Endpoint /websites/developers_payproglobal/orders ### Parameters #### Query Parameters - **skip** (integer) - Optional - The number of records to skip from the beginning of the result set. - **take** (integer) - Optional - The maximum number of records to return. - **sortByDate** (string) - Optional - The order in which to sort the results by date (e.g., 'asc', 'desc'). - **includeTestOrders** (boolean) - Optional - Whether to include test orders in the results. - **vendorAccountId** (integer) - Required - The ID of the vendor account. - **apiSecretKey** (string) - Required - The API secret key for authentication. #### Request Body - **orderIds** (array of integers) - Optional - A list of order IDs to filter by. - **subscriptionId** (integer) - Optional - The ID of the subscription to filter by. - **customerEmail** (string) - Optional - The email address of the customer to filter by. - **orderStatusId** (integer) - Optional - The ID of the order status to filter by. - **dateFrom** (string) - Optional - The start date for filtering orders (ISO 8601 format). - **dateTo** (string) - Optional - The end date for filtering orders (ISO 8601 format). ### Request Example ```json { "skip": 0, "take": 50, "search": { "orderIds": [ 12345678, 12345679 ], "subscriptionId": null, "customerEmail": null, "orderStatusId": null, "dateFrom": "2023-10-02T08:00:34", "dateTo": "2024-10-02T09:30:34" }, "sortByDate": "asc", "includeTestOrders": true, "vendorAccountId": 123456, "apiSecretKey": "your_api_secret_key" } ``` ### Response #### Success Response (200) - **id** (integer) - The unique identifier for the order. - **placedAtUtc** (string) - The date and time the order was placed in UTC. - **invoiceUrl** (string) - The URL to the invoice for the order. - **customerBillingEmail** (string) - The billing email address of the customer. - **customerBillingFirstName** (string) - The billing first name of the customer. - **customerBillingLastName** (string) - The billing last name of the customer. - **orderStatusId** (integer) - The ID of the order status. - **paymentMethodId** (integer) - The ID of the payment method used. - **orderStatusName** (string) - The name of the order status. - **paymentMethodName** (string) - The name of the payment method. #### Response Example ```json { "orders": [ { "id": 12345678, "placedAtUtc": "2023-09-09T12:37:43.113", "invoiceUrl": "https://invoice_example", "customerBillingEmail": "customer@email.com", "customerBillingFirstName": "John", "customerBillingLastName": "Doe", "orderStatusId": 5, "paymentMethodId": 2, "orderStatusName": "Processed", "paymentMethodName": "Visa" } ], "request": { "skip": 0, "take": 50, "search": { "orderIds": [ 12345678, 12345678 ], "subscriptionId": null, "customerEmail": null, "orderStatusId": null, "dateFrom": "2023-10-02T08:00:34", "dateTo": "2024-10-02T09:30:34" }, "sortByDate": "asc", "includeTestOrders": true, "vendorAccountId": 123456, "apiSecretKey": "your_api_secret_key" }, "errors": [], "isSuccess": true } ``` ``` -------------------------------- ### Non-Encrypted Dynamic Settings Source: https://developers.payproglobal.com/docs/checkout-pages/dynamic-checkout-links This section describes how to pass product details using individual URL parameters when encryption is disabled. ```APIDOC ## GET /checkout ### Description Allows passing product information via individual URL parameters when encryption is disabled. ### Method GET ### Endpoint `https://store.payproglobal.com/checkout` ### Parameters #### Query Parameters - **products[i][ID]** (string) - Required - The unique identifier for the product. - **products[i][name]** (string) - Required - The name of the product. - **products[i][description]** (string) - Optional - A description of the product. - **products[i][discountpercentage]** (number) - Optional - The discount percentage to apply to the product. - **products[i][LinkExpiration]** (string) - Optional - The expiration date and time for a link, in `yyyy-mm-ddThh:mm:ss` format. - **products[i][price][CURRENCY_CODE][amount]** (number) - Required - The amount for the product price in a specific currency. - **products[i][recurringprice][CURRENCY_CODE][amount]** (number) - Optional - The recurring amount for the product price in a specific currency. - **products[i][price][CURRENCY_CODE][sku]** (string) - Optional - The SKU for the product price in a specific currency. - **products[i][recurringprice][CURRENCY_CODE][sku]** (string) - Optional - The SKU for the recurring product price in a specific currency. - **products[i][hash]** (string) - Optional - A hash value for security if hash protection is enabled. ### Request Example ``` https://store.payproglobal.com/checkout?products[0][ID]=12345&products[0][name]=Example Product&products[0][price][USD][amount]=19.99&products[0][price][USD][sku]=SKU123 ``` ### Response #### Success Response (200) - **status** (string) - Indicates the success of the operation. - **redirect_url** (string) - The URL to redirect the user to for checkout completion. #### Response Example ```json { "status": "success", "redirect_url": "https://secure.payproglobal.com/checkout/process?id=..." } ``` ``` -------------------------------- ### Subscriptions API - Get List Source: https://developers.payproglobal.com/docs/subscriptions/subscription-management Retrieves a list of all subscriptions. ```APIDOC ## GET /api/Subscriptions/GetList ### Description Retrieves a list of all customer subscriptions. ### Method GET ### Endpoint `https://store.payproglobal.com/api/Subscriptions/GetList/` ### Parameters #### Query Parameters (No query parameters specified) ### Request Example (No request body or example provided) ### Response #### Success Response (200) - **subscriptions** (array) - A list of subscription objects. #### Response Example ```json { "subscriptions": [ { "id": "sub_123", "customerId": "cust_456", "productId": "prod_789", "status": "active", "startDate": "2023-01-01T00:00:00Z", "nextBillingDate": "2023-02-01T00:00:00Z" } ] } ``` ``` -------------------------------- ### Create License Provider Source: https://developers.payproglobal.com/docs/one-time-fee-product/licensing-and-post-purchase-product-accessing-options This endpoint allows you to create a new license provider. You can configure various options such as assigning products, controlling license key distribution, and selecting the license list type (preloaded or external). ```APIDOC ## POST /api/license-providers ### Description Creates a new license provider with specified configurations. ### Method POST ### Endpoint /api/license-providers ### Parameters #### Request Body - **name** (string) - Required - The name of the license provider. - **products_to_assign** (array of strings) - Required - IDs of products, offers, or bundles to assign licenses to. - **one_key_per_unit** (boolean) - Optional - If true, one license key is generated per quantity of the purchased product. - **use_as_attachment** (boolean) - Optional - If true, the license key will be sent as an attachment in the purchase confirmation email. - **attachment_file_name** (string) - Optional - Overrides the default file name for the license key attachment. - **send_each_key_in_separate_file** (boolean) - Optional - If true, each license key is sent in a separate file. - **license_list_type** (string) - Required - Type of license list. Accepts 'Preloaded' or 'External'. - **license_keys** (array of strings) - Required if license_list_type is 'Preloaded' - A list of license keys. - **license_key_separator** (string) - Optional if license_list_type is 'Preloaded' - The separator used for license keys. - **notify_when_keys_left** (integer) - Optional - Threshold for notifying when license key stock is low. - **notify_when_keys_given_away** (integer) - Optional - Interval for notifying about license key usage. - **external_license_generator_url** (string) - Required if license_list_type is 'External' - The URL of the external license generator. - **custom_license_info** (string) - Optional - Custom information to send to the external license generator. ### Request Example ```json { "name": "My License Provider", "products_to_assign": ["prod_123", "offer_456"], "one_key_per_unit": true, "use_as_attachment": true, "license_list_type": "Preloaded", "license_keys": ["KEY123-ABC", "KEY456-DEF"], "notify_when_keys_left": 50 } ``` ### Response #### Success Response (200) - **id** (string) - The unique identifier of the created license provider. - **name** (string) - The name of the license provider. - **products_assigned** (array of strings) - IDs of products assigned to this provider. #### Response Example ```json { "id": "lic_provider_789", "name": "My License Provider", "products_assigned": ["prod_123", "offer_456"] } ``` ``` -------------------------------- ### Product Information Source: https://developers.payproglobal.com/docs/api/products/get-product-pricing This section details the various fields available for product information, including SKU, name, quantity, and pricing details in both billing and display currencies. ```APIDOC ## Product Details ### Fields - **sku** (`string`) - The product SKU value. - **name** (`string`) - The product name. - **quantity** (`integer`) - The product quantity. ### Pricing (Billing Currency) - **billingUnitPrice** (`number`) - The unit price in the billing currency. - **billingPriceBeforeDiscount** (`number`) - The price before the discount in the billing currency. - **billingDiscount** (`number`) - The discount amount in the billing currency. - **billingPrice** (`number`) - The price with the discount in the billing currency. - **billingTaxes** (`number`) - The tax amount in the billing currency. - **billingPriceWithTaxes** (`number`) - The price with the tax amount in the billing currency. ### Pricing (Display Currency) - **displayUnitPrice** (`number`) - The unit price in the currency that was provided in `displayCurrency`. - **displayPriceBeforeDiscount** (`number`) - The price before the discount in the currency that was provided in `displayCurrency`. - **displayDiscount** (`number`) - The discount amount in the currency that was provided in `displayCurrency`. - **displayPrice** (`number`) - The price with the discount in the currency that was provided in `displayCurrency`. - **displayTaxes** (`number`) - The tax amount in the currency that was provided in `displayCurrency`. - **displayPriceWithTaxes** (`number`) - The price with the tax amount in the currency that was provided in `displayCurrency`. ### Applied Coupons - **appliedCouponCode** (`string`) - The coupon code that was applied. - **appliedCouponCodes** (`array[string]`) - The coupon codes that were applied. If any of the provided coupon codes were not applied, they are not included. ```