Php 通过curl发送http请求时出错

Php 通过curl发送http请求时出错,php,json,curl,Php,Json,Curl,我想通过php发送收费请求,这是我通过邮递员发送的,它起到了作用,但当我尝试使用php时,我得到了错误响应 我尝试使用curl发送请求,并使用函数发送请求。但是,在点击php之后,我得到了“无效请求”的响应 下面是代码片段: <?php define('TML_CHARGE_URL2', 'http://sandbox-apigw.mytelenor.com.mm/v1/mm/en/customers/products/vas'); $client_id="MDq0MdGtZUGZ

我想通过php发送收费请求,这是我通过邮递员发送的,它起到了作用,但当我尝试使用php时,我得到了错误响应

我尝试使用curl发送请求,并使用函数发送请求。但是,在点击php之后,我得到了“无效请求”的响应

下面是代码片段:

<?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);
?>
{
    "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"
} 

您需要更改调用API方法

1) 完成
json\u encode

2) 删除字符串中不必要的
'JsonData='。

改变你的方法如下

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;
}

那么,你想从我们这里得到什么?我们甚至不知道您使用的API和文档在哪里。@u\u mulder您不明白什么?我不明白您的问题是什么。@u\u mulder我需要通过php发送http请求,所以我使用了一种方法。。。正在通过json中的某些输入调用Url。。。当我运行这个php时,我得到了错误响应,这就是我面临的问题。。现在你明白了吗?@tanni你试过我的naswer了吗?