получить значение PayPal Custom Var - PullRequest
0 голосов
/ 15 июня 2011

Кто-нибудь знает, как извлечь скрытый ввод пользовательских переменных экспресс-проверки PayPal, как только платеж перенаправляет пользователя обратно на страницу благодарности?, Вот мой код

<form action="https://sandbox.paypal.com/cgi-bin/webscr" method="post">
<input type="hidden" name="cmd" value="_cart">
<input type="hidden" name="business" value="test@gmail.com">
<input type="hidden" name="item_name" value="<?php echo $this->input->get('GeneralHealth').'test'; ?>">
<input type="hidden" name="item_number" value="<?php echo $this->input->get('GeneralHealth'); ?>">
<input type="hidden" name="amount" value="<?php foreach($query3->result() as $row){echo $row->price; } ?>">
<input type="hidden" name="quantity" value="1" disabled="disabled">
<input type="hidden" name="currency_code" value="USD">
<input type="hidden" name="custom" value="<?php $id = $this->ion_auth->get_user(); echo $id->id; ?>" />
<input type=hidden name=notify_url value="http://ci/paragon/site/thankyou" />
<input type="hidden" name="return" value="http://ci/paragon/index.php/site/thankyou" / >
<input type="image" id="checkout" src="https://www.paypal.com/images/x-click-but6.gif" Border="0" name=submit><br>
<input type="hidden" name="add" value="1"></form>   

там, исходя из приведенного выше кода, как я получу значение скрытого настраиваемого поля?

Ответы [ 3 ]

0 голосов
/ 15 июня 2011

В своей учетной записи PayPal вы должны были указать сценарий, с которым PayPal свяжется при подтверждении транзакции. На этой же странице снова должно быть открыто другое соединение с PayPal, чтобы подтвердить, что источник действителен. После первого запроса вы должны получить всю необходимую информацию.

Вот код, который я использую:

//posts transaction data using fsockopen.
function fsockPost($url,$data) {

    //Parse url
    $web=parse_url($url);

    //build post string
    foreach($data as $i=>$v) {

        $postdata.= $i . "=" . urlencode($v) . "&";

    }
    $postdata.="cmd=_notify-validate";

    //Set the port number
    if($web[scheme] == "https") {

        $web[port]="443";
        $ssl="ssl://";

    } else {

        $web[port]="80";

    }

    //Create paypal connection
    $fp=@fsockopen($ssl . $web[host],$web[port],$errnum,$errstr,30);

//Error checking
    if(!$fp) {

        echo "$errnum: $errstr";

    } else { //Post Data

        fputs($fp, "POST $web[path] HTTP/1.1\r\n");
        fputs($fp, "Host: $web[host]\r\n");
        fputs($fp, "Content-type: application/x-www-form-urlencoded\r\n");
        fputs($fp, "Content-length: ".strlen($postdata)."\r\n");
        fputs($fp, "Connection: close\r\n\r\n");
        fputs($fp, $postdata . "\r\n\r\n");

        //loop through the response from the server
        while(!feof($fp)) {

            $info[]=@fgets($fp, 1024);

        }

        //close fp - we are done with it
        fclose($fp);

        //break up results into a string
        $info=implode(",",$info);

    }

    return $info;

}

$result=fsockPost("http://www.paypal.com/cgi-bin/webscr", $_POST);

Переменная $ result (внизу) заполнена текстом ответа (который служит подтверждением того, что он от PayPal). Значения POST, полученные при первом вызове этого скрипта (которые должны быть из PayPal), должны содержать всю необходимую информацию. Вот пример дампа этого ($ postdata) (детали были изменены ... Дух):

mc_gross=15.00&protection_eligibility=Ineligible&address_status=confirmed&payer_id=123456789T4JL&tax=0.00&address_street=23+23rd+Ave&payment_date=39%3A42%3A34+Feb+23%2C+2011+PST&payment_status=Completed&charset=windows-1252&address_zip=12345&first_name=John&mc_fee=0.81&address_country_code=US&address_name=John+Doe&notify_version=3.0&custom=&payer_status=verified&business=yourbusiness.com&address_country=United+States&address_city=NYC&quantity=1&verify_sign=AShYUCI1AJfCySIHj5coaxvlUU.RAHLmp.bWuPpa4vyNvWgV9qowpF3f&payer_email=payer_mail%40gmail.com&txn_id=48661819D0514811P&payment_type=instant&last_name=Doe&address_state=NY&receiver_email=your%40mail.com&payment_fee=0.81&receiver_id=RVBKNFXM3HCQL&txn_type=web_accept&item_name=Donation+-+23j&mc_currency=USD&item_number=d565ef66e70&residence_country=US&handling_amount=0.00&transaction_subject=Donation+-+23j&payment_gross=15.00&shipping=0.00&cmd=_notify-validate

Дайте мне знать, помогло ли это.

0 голосов
/ 24 февраля 2013

Переменная см GET содержит значение пользовательского скрытого поля, когда PayPal перенаправляет обратно на ваш сайт.

0 голосов
/ 15 июня 2011

По моему опыту, вы выполняете один из вызовов API PayPal, чтобы получить детали транзакции на основе ваших учетных данных PayPal и токена, сгенерированного PayPal в результате успешной покупки. Выезд Шаг 2С .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...