0

PHPを使用してPayPal支払いを作成しようとしています。400 不正な形式のリクエスト エラーが発生し続けます。私の問題は次の文字列にあると思います:

$postData ='
{
    "intent": "sale"
    "redirect_urls": {
        "return_url": ' . $url_success .',
        "cancel_url": ' . $url_cancel .'
    },
    "payer": {
        "payment_method": "paypal"
    },
    "transactions": [
        {
            "amount": {
                "total": "' . $saleTotal .'",
                "currency": "USD"
            },
            "description": "Test payment."
        }
    ]
}
';

次に、次の行で cURL を使用して文字列を送信しています

curl_setopt($ch, CURLOPT_POSTFIELDS, $postData);

ここに私の文字列が印刷されています:

{ "intent": "sale" "redirect_urls": { "return_url": 
"http://localhost/~user/test/controller/PayPalTestView.php", "cancel_url": 
"http://localhost/~user/test/controller/CancelTestView.php" }, "payer": { 
"payment_method": "paypal" }, "transactions": [ { "amount": { "total": "8.31782", 
"currency": "USD" }, "description": "Test payment." } ] } 

これが私が得る応答です:

{"name":"MALFORMED_REQUEST","message":"The request JSON is not well 
formed.","information_link":
"https://developer.paypal.com/webapps/developer/docs/api/#MALFORMED_REQUEST",
"debug_id":"7d56ae815e584"}

何が問題なのかわかりませんが、問題は $postData にあると確信しています。この例に従ってみました: Paypal REST API Bad Requestですが、まだ機能していません。私の問題は、認証トークンを正常に送受信しているという点で、その例に似ています。私の問題は、支払い API 呼び出しを送信しようとしたときだけです。誰かが私が間違っていることを見ていますか? ありがとうございました!

4

1 に答える 1

0

以前も同じ問題がありました。私がしたことは、データを最初に配列に入れることです:

$data = array(  "intent"=>"sale", 
            "redirect_urls"=>array(
                "return_url"=>"<return site>", 
                "cancel_url"=>"<cancel site>"
            ),
            "payer"=>array(
                "payment_method"=>"paypal"
            ),
            "transactions"=>array(
                array(
                    "amount"=>array(
                        "total"=>"7.47",
                        "currency"=>"USD"
                    ),
                    "description"=>"This is the payment transaction description."
                )
            )
        );

および http ヘッダー:

$header = array(
"Content-Type:application/json",
"Authorization:Bearer <token here>"

);

次にポストフィールドで、json_encode を使用してデータをエンコードします。

curl_setopt($ch, CURLOPT_POSTFIELDS, json_encode($data));

これが役立つことを願っています。

于 2013-11-11T09:00:30.410 に答える