0

curl を使用して Paypal Adaptive API を使用しようとしています。

ドキュメントは、パラメーターを JSON 形式で送信できることを示していますが、常にInvalid Request (580001)エラーが発生します。

これは私が行っているリクエストです:
ヘッダー

[X-PAYPAL-SECURITY-USERID] => XXXXXX
[X-PAYPAL-SECURITY-PASSWORD] => XXXXXX
[X-PAYPAL-SECURITY-SIGNATURE] => XXXXXX
[X-PAYPAL-REQUEST-DATA-FORMAT] => JSON
[X-PAYPAL-RESPONSE-DATA-FORMAT] => JSON
[X-PAYPAL-APPLICATION-ID] => APP-80W284485P519543T   //APP-ID for Sandbox

そして、これは私が構築したjsonデータです:

{"endingDate":"2012-06-11T12:20:02+00:00",
 "startingDate":"2012-06-20T12:20:02+00:00",
 "maxTotalAmountOfAllPayments":"1000.00",
 "currencyCode":"EUR",
 "cancelUrl":"http:\/\/localhost\/xx\/pledge?id=221&step=fail",
 "returnUrl":"http:\/\/localhost\/xx\/pledge?id=221&step=done",
 "pinType":"NOT_REQUIRED",
 "requestEnvelope":{"detailLevel":"ReturnAll","errorLanguage":"en_US"},
 "clientDetails":[]
}

JSONデータを正しく送信していないと思います。次のように JSON データを設定しています ( curlを使用):

curl_setopt( $handle, CURLOPT_POST, true );
curl_setopt( $handle, CURLOPT_POSTFIELDS, $json_data );

これはjsonデータを送信する適切な方法ですか?

4

1 に答える 1

3

わかりました私は解決策を見つけました:

ヘッダーContent-TypeContent-Length.
したがって、最終的な結果は次のとおりです。

$json_data = json_encode( $json_fields );

$this->headers = array(
// Authentication
'X-PAYPAL-SECURITY-USERID'  => $this->_username,
'X-PAYPAL-SECURITY-PASSWORD'    => $this->_password,
'X-PAYPAL-SECURITY-SIGNATURE'   => $this->_signature,

// Data format
'X-PAYPAL-REQUEST-DATA-FORMAT'  => 'JSON',
'X-PAYPAL-RESPONSE-DATA-FORMAT' => 'JSON',

// Application and Device identification
'X-PAYPAL-APPLICATION-ID'   => $this->_app_id,
'X-PAYPAL-DEVICE-IPADDRESS' => $this->_client_ip,
'Content-Type'          => 'application/json',
    'Content-Length'                => strlen( $json_data )
  );
于 2012-06-19T11:06:01.333 に答える