【问题标题】:Pick a specific part from json string从 json 字符串中选择特定部分
【发布时间】:2016-07-20 17:01:51
【问题描述】:

我正在尝试将我的结帐页面与支付网关连接起来。为此,我使用 php Curl 并生成响应。响应包含各种付款细节,但我只需要获取存储在“longurl”中的 url 进行重定向。

{ "success": true, "payment_request": { "id": "9f999fc8407d473c8c8f910e8398a527", "phone": "+917894561230", "email": "foo@example.com", "buyer_name": "", "amount": "798.00", "purpose": "ad", "status": "Pending", "send_sms": true, "send_email": true, "sms_status": "Pending", "email_status": "Pending", "shorturl": null, "longurl": "https://www.instamojo.com/@mghj/9f999fc8407d473c8c8f910e8398a527", "webhook": "http://www.example.com/webhook/", "created_at": "2016-07-20T16:53:12.349Z", "modified_at": "2016-07-20T16:53:12.349Z", "allow_repeated_payments": false }

<?php
$payer_name = $_POST['name'];
$amt = $_POST['net_amt'];
$amt = (int)$amt;
$payer_email = $_POST['email'];
$payer_no = $_POST['mobno'];
$payer_no = (int)$payer_no;

$ch = curl_init();

curl_setopt($ch, CURLOPT_URL, 'https://www.instamojo.com/api/1.1/payment-requests/');
curl_setopt($ch, CURLOPT_HEADER, FALSE);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, TRUE);
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, TRUE);
curl_setopt($ch, CURLOPT_HTTPHEADER,
            array("X-Api-Key:39ae74945179d56e3",
                  "X-Auth-Token:21f3446b20aab6"));
$payload = Array(
    'purpose' => 'ad',
    'amount' => $amt,
    'phone' => $payer_no,
    'buyer_name' => $payer_name,
    'redirect_url' => 'http://www.example.com/redirect/',
    'send_email' => true,
    'webhook' => 'http://www.example.com/webhook/',
    'send_sms' => true,
    'email' => 'foo@example.com',
    'allow_repeated_payments' => false
);
curl_setopt($ch, CURLOPT_POST, true);
curl_setopt($ch, CURLOPT_POSTFIELDS, http_build_query($payload));
$response = curl_exec($ch);
curl_close($ch);
echo $response;
?>

【问题讨论】:

  • 你不直接处理json。这是一种传输格式。您将该 json 解码为本机数据结构,然后像处理其他任何结构一样处理该结构。

标签: javascript php json curl


【解决方案1】:

首先,将其解码为数组。然后访问它。

$result = json_decode($response,true);

echo $result['payment_request']['longurl'];

【讨论】:

  • 当我试图在新窗口中打开链接时,它被阻止为弹出窗口,你能建议我用方法避免这个@Mojtaba echo "&lt;script&gt;"; $url1 = $result['payment_request']['longurl']; echo "window.open('$url1','_blank');"; echo "&lt;/script&gt;";
  • @Aditya,您无法控制浏览器的弹出窗口阻止程序。另一种方法是使用 javascript 弹出窗口,如 jquery modal。浏览器可能会阻止本机弹出窗口
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2016-07-08
  • 2021-06-16
  • 1970-01-01
  • 2017-08-10
  • 1970-01-01
  • 1970-01-01
  • 2017-06-06
相关资源
最近更新 更多