繁体   English   中英

如何在PHP中使用来自json响应的PayPal Hateoas链接?

[英]How to use a PayPal Hateoas link from json response in PHP?

这是我关于stackoverflow的第一个问题。

我正在寻找一种在json响应中使用(解析)Hateoas链接的方法,如下所示:

{  
  "links": [{
    "href": "https://api.paypal.com/v1/payments/sale/36C38912MN9658832",
    "rel": "self",
    "method": "GET"
  }, {
    "href": "https://api.paypal.com/v1/payments/payment/PAY-5YK922393D847794YKER7MUI",
    "rel": "parent_payment",
    "method": "GET"
  }]
}

获得在PHP中使用的链接,如下所示:

GET https://api.paypal.com/v1/payments/sale/36C38912MN9658832  

我已经搜索了几个小时,以寻找解决方案,但只获得有关如何创建Hateoas链接的命中。

我知道如何将json转换为数组,但是我不知道如何在PHP中编写可用的链接。

我的目标是使用该链接从Paypal检索详细信息。

编辑
我看不清楚。 例如,我想从json中获取url和方法,其中'rel'=='self'。

希望你们中的一个能帮助我。

先感谢您。

经过反复试验,我自己找到了解决方案。

可以使用array_filter(array_map())这样完成:

$key = 'rel';
$val = 'self';

$links_array = json_decode('{  
  "links": [{
    "href": "https://api.paypal.com/v1/payments/sale/36C38912MN9658832",
    "rel": "self",
    "method": "GET"
  }, {
    "href": "https://api.paypal.com/v1/payments/payment/PAY-5YK922393D847794YKER7MUI",
    "rel": "parent_payment",
    "method": "GET"
  }]
}');

$arr_filtered = array_filter(array_map(function($elem) use ($key, $val) {
  if ($elem[$key] == $val) { return $elem; }
}, $links_array['links']));

echo 'array filtered: ', var_dump($arr_filtered);
echo 'wanted array: ', var_dump($arr_filtered[0]);

结果是:

array(3) { ["href"]=> string(57) "https://api.paypal.com/v1/payments/sale/36C38912MN9658832" ["rel"]=> string(4) "self" ["method"]=> string(3) "GET" }

但是最后,我选择了老式的foreach循环,如下所示:

$link_arr = NULL;
foreach($links_array['links'] as $linkkey => $linkval) {
  if ($linkval[$key] == $val) {
    $link_arr = $linkval;
    break;
  }
}

echo 'link-arr: ',var_dump($link_arr);

这给了我相同的结果。

从而解决了我的问题。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM