2017-08-13 1 views
-2

Ich möchte Ladeanforderung über PHP senden, die ich über Postbote geschickt habe und es funktioniert, aber wenn ich dies mit PHP versuche, bekomme ich Fehler Antwort.Fehler beim Senden http Anfrage über curl

Ich habe versucht, die Anfrage mit Curl und verwendete Funktion senden die Anfrage zu senden. Aber nachdem ich das php getippt habe, bekomme ich die Antwort "ungültige Anfrage". Hier

ist der Code-Schnipsel:

<?php 


define('TML_CHARGE_URL2', 'http://sandbox-apigw.mytelenor.com.mm/v1/mm/en/customers/products/vas'); 


$client_id="MDq0MdGtZUGZWfanE8k2fva7GsLvwS0I"; 
$client_secret="GEzAxTE6YYSfLEAD"; 
$accessToken="ytSxhvjSUfNEurD5M6SOJPm6XAfu"; 

/* CP & Product Codes */ 

$cpid="15"; 
$login="apigwtest"; 
$password="apigwtestpwd"; 
$client_id="175612092873562378"; 
$msisdn="9791000601"; 

$prod_code = "APIGW_TEST"; 



$requestParamList = array("cpID" => $cpid, 
"clientTransactionId" => $client_id, 
"loginName" => $login, 
"password" => $password, 
"id" => array (
    "type" => "MSISDN", 
    "value" => $msisdn 
), 
"productCode" => $prod_code 

); 



function callAPI($apiURL, $requestParamList) { 
$jsonResponse = ""; 
$responseParamList = array(); 
$JsonData =json_encode($requestParamList); 
$postData = 'JsonData='.urlencode($JsonData); 
$ch = curl_init($apiURL); 
curl_setopt($ch, CURLOPT_CUSTOMREQUEST, "POST");                  
curl_setopt($ch, CURLOPT_POSTFIELDS, $postData); 
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); 
curl_setopt ($ch, CURLOPT_SSL_VERIFYHOST, 0); 
curl_setopt ($ch, CURLOPT_SSL_VERIFYPEER, 0); 
echo $status_code = curl_getinfo($ch, CURLINFO_HTTP_CODE); //get status code 

curl_setopt($ch, CURLOPT_HTTPHEADER, array(
'Content-Type: application/json', 
'Content-Length: ' . strlen($postData), 
    'Authorization: Bearer ytSxhvjSUfNEurD5M6SOJPm6XAfu' 
    ) 
); 
echo $jsonResponse = curl_exec($ch); 
$responseParamList = json_decode($jsonResponse,true); 
return $responseParamList; 
} 


function oneshotpayment($requestParamList) { 
return callAPI(TML_CHARGE_URL, $requestParamList); 
} 
function subscription_payment($requestParamList) { 
    return callAPI(TML_CHARGE_URL2, $requestParamList); 
} 

echo subscription_payment($requestParamList); 
?> 

Die Fehlerreaktion ist wie folgt:

{ 
    "transactionId": "", 
    "timestamp": "2017-08-13T17:28:24+06:30", 
    "recipientMsisdn": "", 
    "code": "500.023.003", 
    "error": "Internal Server Error", 
    "message": "Request input is malformed or invalid" 
} 
+2

Also, was Sie von uns wollen? Wir wissen nicht einmal, welche API Sie verwenden und wo die Dokumente sind. –

+0

@u_mulder was hast du nicht verstanden? – tanni

+2

Ich habe nicht verstanden, was ist deine Frage. –

Antwort

0

Sie benötigen callAPI Methode zu ändern.

1) Sie brauchen nicht urlencode zu tun, nachdem Sie json_encode

2 getan haben) entfernen unnecessory Verketten von 'JsonData='. in String.

ändern Sie die Methode wie unter

function callAPI($apiURL, $requestParamList) { 
$postData = ""; 
$responseParamList = array(); 
$postData =json_encode($requestParamList); 
$ch = curl_init($apiURL); 
curl_setopt($ch, CURLOPT_CUSTOMREQUEST, "POST");              
curl_setopt($ch, CURLOPT_POSTFIELDS, $postData); 
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); 
curl_setopt ($ch, CURLOPT_SSL_VERIFYHOST, 0); 
curl_setopt ($ch, CURLOPT_SSL_VERIFYPEER, 0); 
echo $status_code = curl_getinfo($ch, CURLINFO_HTTP_CODE); //get status code 

curl_setopt($ch, CURLOPT_HTTPHEADER, array(
'Content-Type: application/json', 
'Content-Length: ' . strlen($postData), 
    'Authorization: Bearer ytSxhvjSUfNEurD5M6SOJPm6XAfu' 
    ) 
); 
echo $jsonResponse = curl_exec($ch); 
$responseParamList = json_decode($jsonResponse,true); 
return $responseParamList; 
}