1

私は現在、Cyber​​plat の Recharge api に取り組んでいます。

クライアントは私に次のものを送ってほしいと言っています:

POST /cgi-bin/es/es_pay_check.cgi HTTP/1.0
Content-Type: application/x-www-form-urlencoded
Content-Length: 498

inputmessage=0000037901SM000001180000011800000125%0D%0Aapi17032++
++++++++++00017033%0D%0A++++++++++++++++++++00000000%0D%0ABEGIN%0
D%0ASD%3D17031%0D%0AAP%3D17032%0D%0AOP%3D17034%0D%0ASESSION%3D4b3
4d1d400000cb80029%0D%0ANUMBER%3D8888888888%0D%0AAMOUNT%3D11%2E00%
0D%0AAMOUNT%5FALL%3D11%0D%0ACOMMENT%3D%0D%0A%0D%0AEND%0D%0ABEGIN+
SIGNATURE%0D%0AiQBRAwkBAABCiUs00dQBATG5AgDHdZ6RYHykL46QBaAvnHYaY4
p0pDjgjO4K1Iyj%0D%0AfSBSvCRpS%2F0EYO9NspuyLeANEQQkkGE%2F37gUxiPqz
AgStXjpsAHH%0D%0A%3DvSgb%0D%0AEND+SIGNATURE

私は送信しています:

$ses = date("Ymdhis");
$url = "http://ru-demo.cyberplat.com/cgi-bin/DealerSertification/de_pay.cgi";
$data_string = "SD=XXXXXX&AP=XXXXXX&OP=XXXXX&SESSION=".$ses."&COMMENT=Test&NUMBER=9642065662&AMOUNT_ALL=10.0&AMOUNT=10.0";

$ch = curl_init();
curl_setopt($ch,CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_HTTPHEADER, array('Content-Type: application/x-www-form-urlencoded','Content-Length: '.strlen($data_string)));
curl_setopt($ch, CURLOPT_POSTFIELDS, "inputmessage=0000038801SM000001270000012700000125&".$data_string);
$result = curl_exec($ch);

var_dump($result);

上記の形式でリクエストを送信するのは正しい方法でしたか? 私が得ている応答bool(false)

4

2 に答える 2

0

CURLOPT_POST を true に設定することを忘れないでください。たとえば、CURLOPT_POSFIELDS をcurl_setopt($ch, CURLOPT_POST, true);設定するだけでは、POST要求が実行されない可能性があります (ただし、curl がこれを正確に処理する方法はわかりません)。

また、curl_setopt($ch, CURLOPT_VERBOSE, true);デバッグ情報を表示するために使用することもできます。これは、構成に関係なく、STDERR に出力されます。これを変更するには、CURLOPT_STDERR オプションを設定します。

于 2013-06-18T08:31:31.440 に答える