这是我在邮递员中运行的网址:-http://213.252.244.214/create-signature.php
。它具有两个参数string
和key
。它将返回您输入的input
和输出RJAGDhoz8yDJ7GwVLberI/NMYy2zMTTeR9YzXj7QhCM=
,但是如果我从curl运行它,它将返回D9UmS6r/qg0QI/0eIakifqrM3Nd1g6B3W7RCsiyO7sc=
。输出为JSON格式。以下是cURL代码:-
public function create_signature($input, $key) {
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL,'http://213.252.244.214/create-signature.php');
curl_setopt($ch, CURLOPT_POST, 1);
curl_setopt($ch, CURLOPT_POSTFIELDS, "string=$input&key=$key");
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
$output = curl_exec($ch);
$json = json_decode($output);
$signature = $json->output; echo $signature; echo '<br>';
curl_close($ch);
return $signature;
}
示例字符串为:-2019-01-23 14:00:594lzUTYHw01dW5EmPan01M07hEiWUaEmdKl3kzpUUqak=Ha2wZwz46l7vSboxVNx3/DAUYsInjjKtAbDSnPsdDnA=igK7XzaTBrusPc3q5OEOQg==igK7XzaTBrusPc3q5OEOQg==1.0.110671523012111548248459fR9b/McBCzk=Deposit Fund698EURLuisTurinTurinVenis13212TF990303274103325689667lg@gmail.comLuisTurinTurinVenis13212TF990303274103325689667lg@gmail.comLuisTurinTurinVenis13212TF990303274103325689667lg@gmail.comclient_deposithttp://localhost/feature/CD-716/gateways/certus_finance/paymenthttp://localhost/feature/CD-716/gateways/certus_finance/paymenthttp://localhost/feature/CD-716/gateways/certus_finance/payment
示例键为:-85e1d7a5e2d22e46
谁能告诉我为什么与众不同?任何帮助将不胜感激。
答案 0 :(得分:2)
您的$input
和$key
值未进行编码。来自curl_setopt()
manual page ...
此参数可以作为 urlencoded字符串 ...传递,也可以作为字段名称为键且字段数据为值的数组
传递。
邮递员默认执行此操作。
要省去手动编码字符串的麻烦,只需使用数组方法
curl_setopt($ch, CURLOPT_POSTFIELDS, [
'input' => $input,
'key' => $key
]);
尽管要注意这一警告...
注意:
将数组传递给 CURLOPT_POSTFIELDS 会将数据编码为 multipart / form-data ,而传递URL编码的字符串会将数据编码为 application / x-www -form-urlencoded 。
如果需要,为确保application/x-www-form-urlencoded
,您可以使用http_build_query()
构建编码字符串,例如
curl_setopt($ch, CURLOPT_POSTFIELDS, http_build_query([
'input' => $input,
'key' => $key
]));