将api响应转换为php字符串

时间:2015-03-13 05:28:21

标签: php json api

下面是我的代码,我试图在php字符串中获得特定的api响应(msg,amt)。 .................................................. .................................................. ....................................

$key = "XXXXX";
$mykey = "XXXXX";
$command = "Check";
$value = "5454355435"; 


$r = array('key' => $key , 'value' => $value, 'command' =>  $command);

$qs= http_build_query($r);
$wsUrl = "https://info.service-provider.com";

$c = curl_init();
curl_setopt($c, CURLOPT_URL, $wsUrl);
curl_setopt($c, CURLOPT_POST, 1);
curl_setopt($c, CURLOPT_POSTFIELDS, $qs);
curl_setopt($c, CURLOPT_CONNECTTIMEOUT, 30);
curl_setopt($c, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($c, CURLOPT_SSL_VERIFYHOST, 0);
curl_setopt($c, CURLOPT_SSL_VERIFYPEER, 0);
$o = curl_exec($c);
if (curl_errno($c)) {
  $sad = curl_error($c);
  throw new Exception($sad);
}
curl_close($c);

$valueSerialized = @unserialize($o);
if($o === 'b:0;' || $valueSerialized !== false) {
  print_r($valueSerialized);
}

print_r($o);

响应:

{"status":1,"msg":"1 out of 1 Transactions Fetched Successfully","transaction_details":{"2767712494": {"mihpayid":"268999084","request_id":"","ref_num":"020814301298","amt":"1.00","txnid":"5454355435","additional_charges":"0.00","productinfo":"SHIRT"}}}

2 个答案:

答案 0 :(得分:2)

您的字符串格式为json。要从中获取价值,您应该将其转换为array,如下所示:

$json = '{"status":1,"msg":"1 out of 1 Transactions Fetched Successfully","transaction_details":{"2767712494": {"mihpayid":"268999084","request_id":"","ref_num":"020814301298","amt":"1.00","txnid":"5454355435","additional_charges":"0.00","productinfo":"SHIRT"}}}';

$array = json_decode($json, true);

echo '<pre>'; print_r($array);

您的数组将如下所示:

Array
(
    [status] => 1
    [msg] => 1 out of 1 Transactions Fetched Successfully
    [transaction_details] => Array
        (
            [2767712494] => Array
                (
                    [mihpayid] => 268999084
                    [request_id] => 
                    [ref_num] => 020814301298
                    [amt] => 1.00
                    [txnid] => 5454355435
                    [additional_charges] => 0.00
                    [productinfo] => SHIRT
                )

        )

)

要获得msg,您应该这样写:

echo $array['msg'];

您可以从json_decode

获取更多信息

让我知道更多帮助。

答案 1 :(得分:0)

此响应看起来像JSON格式。 将此响应字符串传递给php方法json_decode,如:
$response = json_decode($yourResponseString,true);
然后你应该能够像普通的关联数组一样访问它的属性:
$msg = $response['msg'];