2010-06-16 3 views
2

Im реализует экспресс-проверку, API Paypal с использованием PHP.Недопустимый заголовок безопасности - с помощью curl php

У меня нет проблем с первым шагом: SetExpressCheckout. У меня есть awk = успех.

Но в методе GetExpressCheckout я получаю «Заголовок безопасности недопустим». Я стараюсь, чтобы выяснить проблему и я думаю, что узнал, может быть, это скручивание не работает хорошо ..

Что я сделал я скопировать весь URL:

https://api-3t.sandbox.paypal.com/nvp?USER=sanbox_1276609583_biz_api1.gmail.com&PWD=1276609589&SIGNATURE=AYVosblmD7khKkvvb.bNxvFT0OQ2A8GopwByEuC.CfMHt65VaUmvAEy-&VERSION=62.0&token=EC-3YG18670X88588437&METHOD=GetExpressCheckoutDetails

и вставить его в браузер , Это приведет к:

TOKEN = EC% 2d3YG18670X88588437 & CHECKOUTSTATUS = PaymentActionNotInitiated & TIMESTAMP = 2010% 2d06% 2d16T07% 3A40% 3a12Z & CorrelationId = e1a1e469bf066 & ACK = Успех & VERSION = 62% 2e0 & BUILD = 1356926 .. .

Но когда этот url выполнен в функции, которую я сделал, это не сработает. Ниже моя функция:

функция mycurl ($ URL, $ querystr) {

$ch = curl_init(); 

    curl_setopt($ch, CURLOPT_URL, $url); 

    curl_setopt($ch, CURLOPT_VERBOSE, 1); 

    curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, false); 

    curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false); 

    curl_setopt($ch, CURLOPT_POST, 1); 

    curl_setopt($ch, CURLOPT_POSTFIELDS, $querystr); 

    curl_setopt($ch, CURLOPT_RETURNTRANSFER,1); 

    $response = curl_exec($ch); 

    curl_close ($ch); 

    return $response; 

}

Я надеюсь, что кто-то может помочь в этом. большое спасибо.

Примечание: - Я использовал песочницу для этого. Я создал учетную запись для песочницы, у меня есть учетная запись «Бизнес» для представления торговца и личная учетная запись для представления покупателя.

И я использовал это:

конечной точки URL: api-3t.sandbox.paypal.com/nvp песочница URL: www.sandbox.paypal.com/cgi-bin/webscr

Это должно не проблема.

ответ

0

Это, скорее всего, вопрос объема

В функции, вы должны написать $querystr переменную в файл непосредственно перед выполнением вашего завитка вызова или распечатать его на экране и убедитесь, что все есть. Скорее всего, вы используете переменные из-за пределов своей функции для своей переменной $querystr, и в результате она является пустой или отсутствующей.

Вот пример, чтобы проиллюстрировать эту проблему

<?php 
$variable = 'bar'; 
echo $variable;   // prints bar 

function myfunc(){ 
    echo $variable;   // prints nothing 
} 
function myfunc1(){ 
    global $variable, $variable1, $variable2; 
    echo $variable;  // prints bar 
} 
?> 

См http://us3.php.net/manual/en/language.variables.scope.php для получения дополнительной информации

также добавить эту строку после того, как вы установите $ ответа переменной

echo '<pre>'; print_r($response); echo '</pre>'; 

вы получаете код ошибки и длинное сообщение об ошибке, посмотрите их на сайте Paypals для получения дополнительной информации здесь: [https://cms.paypal.com/us/cgi-bin/?cmd=_render-content&content_ID=developer/e_howto_api_nvp_errorcodes]

Смежные вопросы