The gform_paypal_ipn_url filter allows you to modify the PayPal IPN URL to which data is being posted.
Usage
add_filter('gform_paypal_ipn_url', 'your_function_name', 10, 1);
Parameters
- $url (string): The IPN URL.
More information
See Gravity Forms Docs: gform_paypal_ipn_url
Examples
Change IPN URL to sandbox
Send all requests to the PayPal sandbox for testing purposes.
add_filter('gform_paypal_ipn_url', 'change_ipn_url', 10, 1);
function change_ipn_url($url) {
// Send all requests to the sandbox
return "https://www.sandbox.paypal.com/cgi-bin/webscr/";
}
Add custom parameter to IPN URL
Add a custom parameter to the IPN URL for tracking purposes.
add_filter('gform_paypal_ipn_url', 'add_custom_parameter', 10, 1);
function add_custom_parameter($url) {
// Add a custom parameter to the IPN URL
return $url . "?custom_param=value";
}
Switch IPN URL based on environment
Switch the IPN URL based on the environment variable in your WordPress configuration.
add_filter('gform_paypal_ipn_url', 'switch_ipn_url', 10, 1);
function switch_ipn_url($url) {
if (defined('WP_ENV') && WP_ENV == 'sandbox') {
return "https://www.sandbox.paypal.com/cgi-bin/webscr/";
} else {
return "https://www.paypal.com/cgi-bin/webscr/";
}
}
Change IPN URL for a specific form
Change the IPN URL only for a specific form with a given form ID.
add_filter('gform_paypal_ipn_url', 'change_ipn_url_for_form', 10, 2);
function change_ipn_url_for_form($url, $entry) {
// Check if the form ID is 5
if ($entry['form_id'] == 5) {
return "https://custom-url.com/ipn/";
}
return $url;
}
Modify IPN URL based on user role
Modify the IPN URL based on the user role, sending transactions from users with a specific role to a different IPN URL.
add_filter('gform_paypal_ipn_url', 'change_ipn_url_based_on_user_role', 10, 2);
function change_ipn_url_based_on_user_role($url, $entry) {
$user = get_user_by('id', $entry['created_by']);
if (in_array('special_role', $user->roles)) {
return "https://custom-url.com/ipn/special_role/";
}
return $url;
}