PLEASE NOTE: These forums are no longer utilized and are provided as an archive for informational purposes only. All support issues will be handled via email using our support ticket system. For more detailed information on this change, please see this blog post.

Get PHP variables in validation

  1. dn11233455
    Member

    I am trying to integrate NGPVAN's contribution services with Gravity Forms. Their API takes a PHP array that looks something like this:

    $d = new NgpDonation('your-credentials', true, array(
        'FirstName' => 'John',
        'LastName' => 'Doe',
        'Address1' => '100 Elm Street',
        'Zip' => '12345',
        'Cycle' => '2012',
        'Amount' => '50.00',
        'CreditCardNumber' => '4111111111111111',
        'ExpYear' => '13',
        'ExpMonth' => '05'
    ));

    with many other possible fields. My code for validation is:

    add_action("gform_validation", "process_credit_card_data");
    
    /*
    * Courtsey of
    * http://www.newmediacampaigns.com/blog/accept-campaign-donations-with-the-ngp-contribution-api
    * http://www.gravityhelp.com/documentation/page/Gform_validation
    */
    
    function process_credit_card_data($validation_result) {
        // print_r($form); // for debugging
        // print_r($validation_result);
        // print_r($_POST);
        if ($validation_result['is_valid']) {
                        // cycle information
                $cycle = '2012';
            /* ******************** General Web Contribute Form ******************** */
            if (($validation_result['form']['id'] == 4)) {
                $source = 'ccOnline';
          // attempt payment -- being ready to reject if needed.
                // name information
                $firstName = rgpost("input_{$field['16']}");
                $lastName = rgpost("input_{$field['17']}");
                $email = rgpost("input_{$field['3']}");
                $phone = rgpost("input_{$field['4']}");
    
                // address information
                    $address1 = rgpost("input_{$field['18']}");
                    $address2 = rgpost("input_{$field['19']}");
                    $city = rgpost("input_{$field['20']}");
                    $state = rgpost("input_{$field['21']}");
                    $zip = rgpost("input_{$field['22']}");
    
                // amount information
                  $amountradio = rgpost("input_{$field['6']}");
                  $amount = '5';
    
    		    // credit card information
                $ccnum = rgpost("input_{$field['8']}");
                $exmonth = rgpost("input_{$field['9']}");
                $exyear = rgpost("input_{$field['10']}");
    
                // recurring information
             //   $recurring = rgpost("input_11');
              //  $recurringfreq = rgpost("input_12');
             //   $recurringtotal = rgpost("input_13');
    
                // employment information
                $employer = rgpost("input_{$field['14']}");
                $occupation = rgpost("input_{$field['15']}");
    
                $result = do_transaction($lastName, $firstName, $email, $phone, $address1, $address2, $city, $state, $zip, $amount, $ccnum, $expMonth, $expYear, $employer, $occupation, $cycle, $source);
                if ($result !== true) {
                    $validation_result['is_valid'] = false;
                    foreach($validation_result["form"]["fields"] as &$field){
                        if ($field["id"] == "8"){
                            $field["failed_validation"] = true;
                            $field["validation_message"] = $result;
                            break;
                        }
                    }
                    } else {
                    // I like to blank credit card data so it's not stored locally.
                    $_POST['input_8'] = '*****';
                }
                return $validation_result;
                /* ******************** End General Web Contribute Form ******************** */
                } else {
                return $validation_result;
            }
            } else {
            return $validation_result;
        }
    }
    
     // This is the function that is called above
    function do_transaction($lastName, $firstName, $email, $phone, $address1, $address2, $city, $state, $zip, $amount, $ccnum, $exmonth, $exyear, $employer, $occupation, $cycle, $source) {
        require 'NgpDonation.php';
    
        // Your string goes below. Will look something like the following:
        $apiString = "*******REDACTED FOR CONFIDENTIALITY********";
        $d = new NgpDonation($apiString, true, array(
        'FirstName' => $firstName,
        'LastName' => $lastName,
        'Email' => $email,
        'HomePhone' => $phone,
        'Address1' => $address1,
        'Address2' => $address2,
        'City' => $city,
        'State' => $state,
        'Zip' => $zip,
        'Cycle' => $cycle,
        'Amount' => $amount,
        'CreditCardNumber' => $ccnum,
        'ExpYear' => $exyear,
        'ExpMonth' => $exmonth,
        'Employer' => $employer,
        'Occupation' => $occupation,
        'Source' => $source
        ));
        $result = $d->save();
        if ($result) {
            return true;
            } else {
            if ( $d->hasErrors() ) {
                $errors = $d->getErrors();
                //print_r($errors);
            }
            if ( $d->hasFault() ) {
                $fault = $d->getFault();
                //print_r($fault);
            }
            $result = $d->getResult();
            $errorString = 'testingerror';
            return $errorString;
        }
    }

    Every time I send the form I get the validation error. Am I pulling the variables incorrectly? Any help would be greatly appreciated.

    Posted 12 years ago on Monday June 25, 2012 | Permalink