Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/json/15.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 如何将JSON数据发布到Paypal Adaptive_Php_Curl_Paypal - Fatal编程技术网

Php 如何将JSON数据发布到Paypal Adaptive

Php 如何将JSON数据发布到Paypal Adaptive,php,curl,paypal,Php,Curl,Paypal,我正在尝试使用使用curl的Paypal自适应API 文档告诉我可以用JSON格式发送参数,但我总是收到无效请求(580001)错误 这是我正在做的请求: 标题 [X-PAYPAL-SECURITY-USERID] => XXXXXX [X-PAYPAL-SECURITY-PASSWORD] => XXXXXX [X-PAYPAL-SECURITY-SIGNATURE] => XXXXXX [X-PAYPAL-REQUEST-DATA-FORMAT] => JSON [X

我正在尝试使用使用curl的Paypal自适应API

文档告诉我可以用JSON格式发送参数,但我总是收到
无效请求(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):


这是发送json数据的正确方式吗?

好的,我找到了解决方案:

我没有在标题中指定
内容类型
,也没有指定
内容长度

所以最终的结果是:

$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 )
  );

好的,我找到了解决方案:

我没有在标题中指定
内容类型
,也没有指定
内容长度

所以最终的结果是:

$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 )
  );