4

HTML から投稿し、$postdata 配列に渡す 3 つの変数を使用しました。

    $cardnum= $_POST['Card_Num'];
    $cardexp= $_POST['Card_Exp'];
    $amount =$_POST['amount'];

これら 3 つの変数を $postdata 配列に渡す

$postdata = array(

                "vpc_CardNum" => $cardnum,
                "vpc_CardExp" => $cardexp,
                "vpc_AccessCode" => $accessCode,
                "vpc_Amount" => ($amount*100),
                "vpc_Command" => 'pay',
                "vpc_Locale" => 'en',
                "vpc_MerchTxnRef" => $unique_id,
                "vpc_Merchant" => $merchantId,
                "vpc_OrderInfo" => 'this is a product',
                "vpc_ReturnURL" => "https://localhost/success.php",
                "vpc_Version" => '1');

完全なコードは、html の下に示されています。

<!DOCTYPE html>

<html>
<head>
</head>
<body>

<form method="POST" action="integrate.php">
Credit Card Number
<input type="text" name="Card_Num">
<input type="text" name="Card_Exp" maxlength="4">
<input type="number" name="amount">
<input type="submit" value="Submit payment">

</form
</body>
</html>

完全な php コードを以下に示します。400 エラーのステータスが表示されます。

<?php

        $cardnum= $_POST['Card_Num'];
        $cardexp= $_POST['Card_Exp'];
        $amount =$_POST['amount'];


        $SECURE_SECRET = "YEOCOEN29B0785F1FF1E3C0FA8A3FUJK";   
        $accessCode = '546484645';
        $merchantId = 'ABERCROMBIEKIDS#119GARDENCITYNY';


        $cardnum= $_POST['Card_Num'];
        $cardexp= $_POST['Card_Exp'];
        $amount =$_POST['amount'];
        $unique_id = rand(999999,8988888888);//this is a sample random no
        $postdata = array(

                "vpc_CardNum" => $cardnum,
                "vpc_CardExp" => $cardexp,
                "vpc_AccessCode" => $accessCode,
                "vpc_Amount" => ($amount*100),
                "vpc_Command" => 'pay',
                "vpc_Locale" => 'en',
                "vpc_MerchTxnRef" => $unique_id,
                "vpc_Merchant" => $merchantId,
                "vpc_OrderInfo" => 'this is a product',
                "vpc_ReturnURL" => "https://localhost/success.php",
                "vpc_Version" => '1');


        $vpcURL = 'https://migs.mastercard.com.au/vpcpay?';
        $md5Hash = $SECURE_SECRET;
        $appendAmp = 0;


        foreach ($postdata as $key => $value) {

            if (strlen($value) > 0) {

                if ($appendAmp == 0) {
                    $vpcURL .= urlencode($key) . '=' . urlencode($value);
                    $appendAmp = 1;
                } else {
                    $vpcURL .= '&' . urlencode($key) . "=" . urlencode($value);
                }
                $md5Hash .= $value;
            }
        }

            var_dump($postdata);
                print_r($postdata);
        if (strlen($SECURE_SECRET) > 0) {
            $vpcURL .= "&vpc_SecureHash=" . strtoupper(md5($md5Hash));
        }
        header("Location: " . $vpcURL);

        ?>
4

1 に答える 1

0

vpc_ReturnURLlocalhostマスターカード(またはペイパル..など)ではなく、ライブサーバーである必要があります。ローカルホストにアクセスしてデータを投稿できません。


400 エラーがどのように表示されるか:

"400不正な要求"

「不正なリクエストです。このサーバーが理解できないリクエストをブラウザが送信しました。」

「不正なリクエスト - 無効な URL」

「HTTP エラー 400 - 不正な要求」

「不正なリクエスト: エラー 400」

「HTTP エラー 400。リクエストのホスト名が無効です。」

「400 - 不正な要求です。構文が正しくないため、サーバーは要求を理解できませんでした。クライアントは、変更せずに要求を繰り返すべきではありません。」

于 2016-03-21T10:46:53.580 に答える