0

我是 Visa Developer Platform (VDP) API 的新手,在尝试使用 php 将响应的输出作为 json 读取时遇到了问题。我按照教程here。我正在使用Offers Data API

我的目标是能够生成要在前端显示的交易列表。我试图通过读取 json 输出并解析交易信息来做到这一点。  

这是原始教程的内容,并且效果很好:

$curl = curl_init();

curl_setopt($curl, CURLOPT_URL, $url);

curl_setopt($curl, CURLOPT_PORT, 443);
curl_setopt($curl, CURLOPT_VERBOSE, 1);
curl_setopt($curl, CURLOPT_SSL_VERIFYHOST, 2);
curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, 1);
curl_setopt($curl, CURLOPT_SSLVERSION, 1);
curl_setopt($curl, CURLOPT_SSLCERT, $cert);
curl_setopt($curl, CURLOPT_SSLKEY, $key);

curl_setopt($curl, CURLOPT_HTTPAUTH, CURLAUTH_BASIC);
curl_setopt($curl, CURLOPT_USERPWD, "$username:$password");

curl_setopt($curl, CURLOPT_URL, $url);
curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1);

$response = curl_exec($curl);  //This output contains the json output as well

$response_info = curl_getinfo($curl); 

为了获取信息,我正在运行:$response_data = file_get_contents($response);这似乎不起作用。由于输出它不仅是 json,而且还有其他信息,所以我无法运行: $arr = json_decode($response,true);解析 json。这是 json 的样子:

{"ReturnedResults":4,"StartIndex":1,"Offers":[{"indexNumber":1,"offerContentId":105515,"offerId":

等等。json 从{"indexNumber":1需要丢弃之前的所有内容开始。请让我知道我能做些什么来解决这个问题,或者是否有更好的方法来实现目标。谢谢!

4

2 回答 2

1

目标

json 以 {"indexNumber":1 开头,之前的所有内容都需要丢弃。请让我知道我能做些什么来解决这个问题,或者是否有更好的方法来实现目标。

代码

响应变量包含一个有效的 json 对象。由于您只需要Offers您可以使用此代码来获取Offers

$response = '{"ReturnedResults":4,"StartIndex":1,"Offers":[{"indexNumber":1,"offerContentId":105515,"offerId":""}]}';

$json = json_decode($response, true);
var_dump($json['Offers']);

输出

array(1) {
  [0]=>
  array(3) {
    ["indexNumber"]=>
    int(1)
    ["offerContentId"]=>
    int(105515)
    ["offerId"]=>
    string(0) ""
  }
}
于 2021-11-18T08:30:55.257 回答
0

使用 - 初始化 cURL,CURLOPT_RETURNTRANSFER => true然后您将拥有$response变量中的内容。如果没有该选项,结果 ofcurl_exec始终为布尔值。

于 2021-11-17T01:20:05.810 回答