The gform_paypal_hash_matches filter allows additional validation of the hash to be performed in Gravity Forms.
Usage
To use this filter, add the following code to your theme’s functions.php file:
add_filter('gform_paypal_hash_matches', 'your_function_name', 10, 4);
Parameters
- $hash_matches (bool): Indicates if the hash matches.
- $entry_id (int): The ID of the current entry.
- $hash (string): The hash.
- $custom_field (string): The pipe-delimited string in the IPN from PayPal. This contains the entry id and the hash.
More information
See Gravity Forms Docs: gform_paypal_hash_matches
Examples
Basic hash validation
This example shows a simple validation of the hash, returning false if the entry ID is greater than 100.
add_filter('gform_paypal_hash_matches', 'validate_hash', 10, 4);
function validate_hash($hash_matches, $entry_id, $hash, $custom_field) {
// Perform further checks on the hash or force failure
if ($entry_id > 100) {
return false;
}
return true;
}
Custom hash validation
This example demonstrates a custom hash validation using a secret key to compare with the received hash.
add_filter('gform_paypal_hash_matches', 'custom_hash_validation', 10, 4);
function custom_hash_validation($hash_matches, $entry_id, $hash, $custom_field) {
// Your secret key
$secret_key = "your_secret_key";
// Calculate the expected hash
$expected_hash = md5($entry_id . $secret_key);
// Compare the expected hash with the received hash
return $hash === $expected_hash;
}
Logging hash validation results
This example logs the hash validation results to a custom log file.
add_filter('gform_paypal_hash_matches', 'log_hash_validation', 10, 4);
function log_hash_validation($hash_matches, $entry_id, $hash, $custom_field) {
// Log the validation result to a file
file_put_contents('hash_validation_log.txt', "Entry ID: $entry_id, Hash Matches: " . ($hash_matches ? 'true' : 'false') . "\n", FILE_APPEND);
return $hash_matches;
}
Hash validation based on custom field
This example validates the hash based on a custom field value.
add_filter('gform_paypal_hash_matches', 'custom_field_hash_validation', 10, 4);
function custom_field_hash_validation($hash_matches, $entry_id, $hash, $custom_field) {
// Check if the custom field contains a specific value
if (strpos($custom_field, 'custom_value') !== false) {
// Perform additional validation or force failure
return false;
}
return $hash_matches;
}