Php Paypal Rest API激活计费计划
我正在尝试激活以前创建的计费计划,但收到格式错误的json错误 激活端点:Php Paypal Rest API激活计费计划,php,rest,paypal,Php,Rest,Paypal,我正在尝试激活以前创建的计费计划,但收到格式错误的json错误 激活端点: "/v1/payments/billing-plans/{plan-id}" 请求机构: [ { "path": "", "value": { "state": "ACTIVE" }, "op": "replace" } ] 在PHP中: $payLoad = json_encode(array(array( 'pa
"/v1/payments/billing-plans/{plan-id}"
请求机构:
[
{
"path": "",
"value": {
"state": "ACTIVE"
},
"op": "replace"
}
]
在PHP中:
$payLoad = json_encode(array(array(
'path' => "",
'value' => array(
'state' => 'ACTIVE'
),
'op' => 'replace'
)));
我得到的答复是:
{"name":"MALFORMED_REQUEST","message":"Incoming JSON request does not map to API request"....}
编辑:我还尝试将路径的值设置为“/”
但是没有用 您可以尝试使用此代码,它适用于我:
<?php
$header = array();
$header[] = 'Content-type: application/json';
$header[] = 'Authorization: Bearer XXXXX-XXXXXXXXXXXXXXXXXXXXXXXXX';
$url = 'https://api.sandbox.paypal.com/v1/payments/billing-plans/P-34L0290663823456FEE7TINY';
$data ='[
{
"op": "replace",
"path": "/",
"value": {
"state": "ACTIVE"
}
}
]';
//open connection
$ch = curl_init();
//set connection properties
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_HTTPHEADER,$header);
//curl_setopt($ch, CURLOPT_POST, true);
curl_setopt($ch, CURLOPT_POSTFIELDS, $data);
curl_setopt($ch, CURLOPT_CUSTOMREQUEST, 'PATCH');
curl_setopt($ch,CURLOPT_SSL_VERIFYHOST, 0);
curl_setopt($ch,CURLOPT_SSL_VERIFYPEER, false);
//execute post
$result = curl_exec($ch);
$err = curl_errno($ch);
$errmsg = curl_error($ch) ;
$info = curl_getinfo($ch);
curl_close($ch);
if( $err )
{
echo 'error';
}
if( $errmsg ){
echo '<h3>Error</h3>'.$errmsg;
}
else
echo $result;
?>
您可以尝试使用此代码,它适用于我:
<?php
$header = array();
$header[] = 'Content-type: application/json';
$header[] = 'Authorization: Bearer XXXXX-XXXXXXXXXXXXXXXXXXXXXXXXX';
$url = 'https://api.sandbox.paypal.com/v1/payments/billing-plans/P-34L0290663823456FEE7TINY';
$data ='[
{
"op": "replace",
"path": "/",
"value": {
"state": "ACTIVE"
}
}
]';
//open connection
$ch = curl_init();
//set connection properties
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_HTTPHEADER,$header);
//curl_setopt($ch, CURLOPT_POST, true);
curl_setopt($ch, CURLOPT_POSTFIELDS, $data);
curl_setopt($ch, CURLOPT_CUSTOMREQUEST, 'PATCH');
curl_setopt($ch,CURLOPT_SSL_VERIFYHOST, 0);
curl_setopt($ch,CURLOPT_SSL_VERIFYPEER, false);
//execute post
$result = curl_exec($ch);
$err = curl_errno($ch);
$errmsg = curl_error($ch) ;
$info = curl_getinfo($ch);
curl_close($ch);
if( $err )
{
echo 'error';
}
if( $errmsg ){
echo '<h3>Error</h3>'.$errmsg;
}
else
echo $result;
?>
您可以尝试使用此代码,它适用于我:
<?php
$header = array();
$header[] = 'Content-type: application/json';
$header[] = 'Authorization: Bearer XXXXX-XXXXXXXXXXXXXXXXXXXXXXXXX';
$url = 'https://api.sandbox.paypal.com/v1/payments/billing-plans/P-34L0290663823456FEE7TINY';
$data ='[
{
"op": "replace",
"path": "/",
"value": {
"state": "ACTIVE"
}
}
]';
//open connection
$ch = curl_init();
//set connection properties
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_HTTPHEADER,$header);
//curl_setopt($ch, CURLOPT_POST, true);
curl_setopt($ch, CURLOPT_POSTFIELDS, $data);
curl_setopt($ch, CURLOPT_CUSTOMREQUEST, 'PATCH');
curl_setopt($ch,CURLOPT_SSL_VERIFYHOST, 0);
curl_setopt($ch,CURLOPT_SSL_VERIFYPEER, false);
//execute post
$result = curl_exec($ch);
$err = curl_errno($ch);
$errmsg = curl_error($ch) ;
$info = curl_getinfo($ch);
curl_close($ch);
if( $err )
{
echo 'error';
}
if( $errmsg ){
echo '<h3>Error</h3>'.$errmsg;
}
else
echo $result;
?>
您可以尝试使用此代码,它适用于我:
<?php
$header = array();
$header[] = 'Content-type: application/json';
$header[] = 'Authorization: Bearer XXXXX-XXXXXXXXXXXXXXXXXXXXXXXXX';
$url = 'https://api.sandbox.paypal.com/v1/payments/billing-plans/P-34L0290663823456FEE7TINY';
$data ='[
{
"op": "replace",
"path": "/",
"value": {
"state": "ACTIVE"
}
}
]';
//open connection
$ch = curl_init();
//set connection properties
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_HTTPHEADER,$header);
//curl_setopt($ch, CURLOPT_POST, true);
curl_setopt($ch, CURLOPT_POSTFIELDS, $data);
curl_setopt($ch, CURLOPT_CUSTOMREQUEST, 'PATCH');
curl_setopt($ch,CURLOPT_SSL_VERIFYHOST, 0);
curl_setopt($ch,CURLOPT_SSL_VERIFYPEER, false);
//execute post
$result = curl_exec($ch);
$err = curl_errno($ch);
$errmsg = curl_error($ch) ;
$info = curl_getinfo($ch);
curl_close($ch);
if( $err )
{
echo 'error';
}
if( $errmsg ){
echo '<h3>Error</h3>'.$errmsg;
}
else
echo $result;
?>
如果回答有点晚,很抱歉,但我最近也遇到了同样的问题,我想我会将解决方案分享给可能遇到这个问题的其他人 如果您计划使用PHPSDK进行定期付款(plan)补丁调用,则源代码需要稍微更改 这是由PPHttpConnection.php中的第56行引起的,switch语句仅在方法为post时附加post字段。但是,补丁请求也会发送有效负载,因此也需要添加post字段,如果没有这些字段,API将返回格式错误的JSON错误,因为它不会接收任何内容
switch($this->httpConfig->getMethod()) {
case 'POST':
curl_setopt($ch, CURLOPT_POST, true);
curl_setopt($ch, CURLOPT_POSTFIELDS, $data);
break;
}
将上述内容更改为:
switch($this->httpConfig->getMethod()) {
case 'POST':
curl_setopt($ch, CURLOPT_POST, true);
curl_setopt($ch, CURLOPT_POSTFIELDS, $data);
break;
case 'PATCH':
curl_setopt($ch, CURLOPT_POSTFIELDS, $data);
break;
}
然后,补丁调用应该可以完美地工作 如果回答有点晚,我很抱歉,但我最近也遇到了同样的问题,我想我会将解决方案分享给任何可能遇到这个问题的人 如果您计划使用PHPSDK进行定期付款(plan)补丁调用,则源代码需要稍微更改 这是由PPHttpConnection.php中的第56行引起的,switch语句仅在方法为post时附加post字段。但是,补丁请求也会发送有效负载,因此也需要添加post字段,如果没有这些字段,API将返回格式错误的JSON错误,因为它不会接收任何内容
switch($this->httpConfig->getMethod()) {
case 'POST':
curl_setopt($ch, CURLOPT_POST, true);
curl_setopt($ch, CURLOPT_POSTFIELDS, $data);
break;
}
将上述内容更改为:
switch($this->httpConfig->getMethod()) {
case 'POST':
curl_setopt($ch, CURLOPT_POST, true);
curl_setopt($ch, CURLOPT_POSTFIELDS, $data);
break;
case 'PATCH':
curl_setopt($ch, CURLOPT_POSTFIELDS, $data);
break;
}
然后,补丁调用应该可以完美地工作 如果回答有点晚,我很抱歉,但我最近也遇到了同样的问题,我想我会将解决方案分享给任何可能遇到这个问题的人 如果您计划使用PHPSDK进行定期付款(plan)补丁调用,则源代码需要稍微更改 这是由PPHttpConnection.php中的第56行引起的,switch语句仅在方法为post时附加post字段。但是,补丁请求也会发送有效负载,因此也需要添加post字段,如果没有这些字段,API将返回格式错误的JSON错误,因为它不会接收任何内容
switch($this->httpConfig->getMethod()) {
case 'POST':
curl_setopt($ch, CURLOPT_POST, true);
curl_setopt($ch, CURLOPT_POSTFIELDS, $data);
break;
}
将上述内容更改为:
switch($this->httpConfig->getMethod()) {
case 'POST':
curl_setopt($ch, CURLOPT_POST, true);
curl_setopt($ch, CURLOPT_POSTFIELDS, $data);
break;
case 'PATCH':
curl_setopt($ch, CURLOPT_POSTFIELDS, $data);
break;
}
然后,补丁调用应该可以完美地工作 如果回答有点晚,我很抱歉,但我最近也遇到了同样的问题,我想我会将解决方案分享给任何可能遇到这个问题的人 如果您计划使用PHPSDK进行定期付款(plan)补丁调用,则源代码需要稍微更改 这是由PPHttpConnection.php中的第56行引起的,switch语句仅在方法为post时附加post字段。但是,补丁请求也会发送有效负载,因此也需要添加post字段,如果没有这些字段,API将返回格式错误的JSON错误,因为它不会接收任何内容
switch($this->httpConfig->getMethod()) {
case 'POST':
curl_setopt($ch, CURLOPT_POST, true);
curl_setopt($ch, CURLOPT_POSTFIELDS, $data);
break;
}
将上述内容更改为:
switch($this->httpConfig->getMethod()) {
case 'POST':
curl_setopt($ch, CURLOPT_POST, true);
curl_setopt($ch, CURLOPT_POSTFIELDS, $data);
break;
case 'PATCH':
curl_setopt($ch, CURLOPT_POSTFIELDS, $data);
break;
}
然后,补丁调用应该可以完美地工作 我知道有点晚了,但这对邮递员的补丁请求(而不是POST)有效
我知道有点晚了,但这对邮递员的补丁请求(而不是POST)起到了作用
我知道有点晚了,但这对邮递员的补丁请求(而不是POST)起到了作用
我知道有点晚了,但这对邮递员的补丁请求(而不是POST)起到了作用
你能试试这个请求体吗:[{“op”:“replace”,“path”:“/,“value”:{“state”:“ACTIVE”}]实际上这就是我正在尝试的,我改为使用空值进行尝试,但仍然是相同的错误。应该提到php将其计算为“\/”。您可以尝试此请求正文:[{“op”:“replace”,“path”:“/”,“value”:{“state”:“ACTIVE”}]实际上这就是我正在尝试的,我改为尝试使用空值,但仍然是相同的错误。应该提到php将其计算为“\/”。您可以尝试此请求正文:[{“op”:“replace”,“path”:“/”,“value”:{“state”:“ACTIVE”}]实际上这就是我正在尝试的,我改为尝试使用空值,但仍然是相同的错误。应该提到php将其计算为“\/”。您可以尝试此请求正文:[{“op”:“replace”,“path”:“/”,“value”:{“state”:“ACTIVE”}]实际上这就是我正在尝试的,我改为尝试使用空值,但仍然是相同的错误。应该提到php将其计算为“\/”。问题出在其他地方(不在给定的代码中),但我将留下问题和答案,以便将来对其他人有用。这个答案中的代码是有效的。问题出在其他地方(不在给定的代码中),但我将留下问题和答案,以便将来对其他人有用。这个答案中的代码是有效的。问题出在其他地方(不在给定的代码中),但我将留下问题和答案,以便将来对其他人有用。这个答案中的代码是有效的。问题出在其他地方(不在给定的代码中),但我将留下问题和答案,以便将来对其他人有用。此答案中的代码有效。感谢您的回答!这就是我实际做的,但我认为它不是在问题上下文中发布的,无论如何,将此标记为最佳答案。谢谢,从Paypal SDK的上下文中我想更合理:)谢谢你的回答!这就是我实际做的,但我认为它不是在问题上下文中发布的,无论如何,将此标记为最佳答案。谢谢,从Paypal SDK的上下文中我想更合理:)谢谢你的回答!这是我实际做的,但我认为无论如何,这不是在问题的背景下发布的