Php 如何将JSON数据发布到Paypal Adaptive
我正在尝试使用使用curl的Paypal自适应API 文档告诉我可以用JSON格式发送参数,但我总是收到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
无效请求(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 )
);