получение неверного запроса при открытии файла строки запроса в CURL - PullRequest
1 голос
/ 07 декабря 2010
$URL:https://demo.firstach.com/https/TransRequest.asp?Login_ID=someit&Transaction_Key=somekey&Customer_ID=23&Customer_Name=Muhammad Naeem&Customer_Address=Address&Customer_City=city&Customer_State=HI&Customer_Zip=54000&Customer_Phone=--&Customer_Bank_ID=111111118&Customer_Bank_Account=12345678901234567890&Account_Type=Business Checking&Transaction_Type=Debit&Frequency=Once&Number_of_Payments=1&Effective_Date=12%2F05%2F2010&Amount_per_Transaction=10.00&Check_No=&Memo=&SECCType=WEB 

$ch = curl_init(); 
    curl_setopt($ch, CURLOPT_URL,$url); // set url to post to 
    curl_setopt($ch, CURLOPT_RETURNTRANSFER,1); // return into a variable 
    curl_setopt($ch, CURLOPT_TIMEOUT, 0); // times out after Ns 
    curl_setopt($ch, CURLOPT_FAILONERROR, 0); 
    curl_setopt($ch, CURLOPT_VERBOSE, 1); 
    curl_setopt($ch, CURLOPT_HEADER, 1); 
    curl_setopt($ch, CURLOPT_COOKIEFILE, 1); 
    curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1); 
    $result = curl_exec($ch); // run the whole process 

    print_r($result); 

    curl_close($ch); 

я также использовал file_get_conent и fopen, но все возвращают мне ошибку BAD REQUEST, пожалуйста, помогите мне

для более подробной информации, пожалуйста, см. Ссылку ниже

http://www.uqwibble.com/Phase-2/ach.php

1 Ответ

2 голосов
/ 07 декабря 2010

Хорошо, учитывая, что код, который вы разместили, является точным, тогда эта строка является проблемой:

$URL:https://demo.firstach.com/https/TransRequest.asp?Login_ID=someit&Transaction_Key=somekey&Customer_ID=23&Customer_Name=Muhammad Naeem&Customer_Address=Address&Customer_City=city&Customer_State=HI&Customer_Zip=54000&Customer_Phone=--&Customer_Bank_ID=111111118&Customer_Bank_Account=12345678901234567890&Account_Type=Business Checking&Transaction_Type=Debit&Frequency=Once&Number_of_Payments=1&Effective_Date=12%2F05%2F2010&Amount_per_Transaction=10.00&Check_No=&Memo=&SECCType=WEB

здесь, похоже, вы пытаетесь определить $URL, но когда вы используете его с cURL, вы ссылаетесь $url.Вариабели чувствительны к регистру.Во-вторых, у вас есть $URL:, который недействителен, вы хотите использовать $url =.

Кроме того, я бы закодировал параметры следующим образом:

$baseurl = 'https://demo.firstach.com/https/TransRequest.asp';
$params = array(
 'Login_ID' =>  'someit',
 'Transaction_Key' => 'somekey',
 'Customer_ID'= => 23,
 'Customer_Name' => 'Muhammad Naeem',
 'Customer_Address' => 'Address',
 'Customer_City' => 'city',
 'Customer_State' => 'HI',
 'Customer_Zip' => '54000',
 'Customer_Phone' => '--',
 'Customer_Bank_ID' => '111111118'
 'Customer_Bank_Account' => '12345678901234567890'
 'Account_Type' => 'Business Checking'
 'Transaction_Type' => 'Debit'
 'Frequency' => 'Once'
 'Number_of_Payments' => 1,
 'Effective_Date'=> '12/05/2010',
 'Amount_per_Transaction' => '10.00',
 'Check_No'=> '',
 'Memo'=> '',
 'SECCType' => 'WEB'
);

$url = sprintf('%s?%s', $baseurl, http_build_query($params));

Таким образом http_build_query позаботится обо всей вашей кодировке URL-адреса, и вы сможете работать с массивом до того, как это будет сделано, поэтому его легкоПосмотрите, что происходит, и добавьте / удалите / измените параметры.В качестве альтернативы, если это почтовый запрос, вы можете использовать:

curl_setopt($ch, CURLOPT_POSTFIELDS, $params);

, который позаботится обо всей кодировке параметров и о том, что не напрямую из массива, поэтому их не нужно добавлятьвручную до $url.

...