php - PHP:json_decode 返回 NULL(Paytm 校验和生成)
问题描述
我正在尝试使用 php 为 Paytm 支付网关生成校验和。
<?php
// following files need to be included
require_once("./lib/config_paytm.php");
require_once("./lib/encdec_paytm.php");
if (strcasecmp($_SERVER['REQUEST_METHOD'], 'POST') != 0) {
throw new Exception('Request method must be POST');
}
$content = trim(file_get_contents("php://input"));
$decodeData = json_decode($content, true);
// var_dump($decodeData); // this return null
if (!empty($decodeData)) {
$paramList = array();
$paramList["MID"] = $decodeData["MID"]; //Provided by Paytm
$paramList["ORDER_ID"] = $decodeData["ORDER_ID"]; //unique OrderId for every request
$paramList["CUST_ID"] = $decodeData["CUST_ID"]; // unique customer identifier
$paramList["INDUSTRY_TYPE_ID"] = $decodeData["INDUSTRY_TYPE_ID"]; //Provided by Paytm
$paramList["CHANNEL_ID"] = $decodeData["CHANNEL_ID"]; //Provided by Paytm
$paramList["TXN_AMOUNT"] = $decodeData["TXN_AMOUNT"]; // transaction amount
$paramList["WEBSITE"] = $decodeData["WEBSITE"]; //Provided by Paytm
$paramList["CALLBACK_URL"] = $decodeData["CALLBACK_URL"]; //Provided by Paytm
// $paramList["EMAIL"] = $decodeData["MID"]; // customer email id
$paramList["MOBILE_NO"] = $decodeData["MOBILE_NO"]; // customer 10 digit mobile no.
$checkSum = getChecksumFromArray($paramList, PAYTM_MERCHANT_KEY);
if (!empty($checkSum)) {
echo json_encode(array("CHECKSUMHASH" => $checkSum));
} else {
echo json_encode(array("ORDER_ID" => $decodeData["ORDER_ID"]));
}
} else {
echo "Something went wrong";
}
if (!is_array($decodeData)) {
throw new Exception(('Recieved content containes invalid JSON'));
}
结果是json_decode
回报NULL
。即$decodeData
是NULL
。Tho$content
返回正确的细节。
需要指出的一件事是
$content
包含PAYTM_MERCHANT_KEY
具有特殊字符(如 @ 和 %)的包含。这json_decode
是无法解码数据的原因吗?
还是我的代码有问题?
解决方案
推荐阅读
- timer - 如何在 CANoe Capl 中计算“事件”?
- javascript - JS:创建用户输入的行数
- server - Symfony 5 解析错误:语法错误,意外的“?” 在第 15 行的 C:\Users\public\index.php
- php - PHP GD中的多度颜色
- google-chrome - mac os 中的 Chrome 版本 80 fps 的 webgl 降级
- google-api - Google Drive API,增加配额限制的成本,“每个用户每 100 秒的查询数”和“每 100 秒的查询数”
- flutter - 测试提供者时上下文不匹配
- sql-server - Ansible 安装 SQL Server Express 2016
- sql - 基于主查询中的列的子查询
- compression - 卡卡杜,体积图像上的多分量变换