PayPal订阅 :目前情况似乎不起作用。请稍后重试



我目前正在沙盒环境中通过 REST API 设置PayPal订阅。 我能够添加产品,添加计划,还可以使用API添加订阅。 但是在付款页面(PayPal端),它要求单击订阅,发生错误。

页面上发生错误:https://www.sandbox.paypal.com/webapps/billing/subscriptions?ba_token=BA-0T473376T5204322K,当我点击Login to subscribe按钮时。

错误页面图像

当我检查控制台时,这是它在页面上触发的响应:

请求网址: https://www.sandbox.paypal.com/webapps/billing/api/billagmt/BA-0T473376T5204322K/createCart

标头Request Method: POST Status Code: 400 Bad Request

响应{"ack":"contingency","contingency":"VALIDATION_ERROR","meta":{"calc":"...some string...","rlog":"...some string.."},"server":"...some string..."}

我无法进行任何类型的调试,因为它发生在PayPal页面上。 请帮助我找出我身边是否出了什么问题(即API)?

我的代码

API 调用 ( 添加订阅 )

$request = json_encode($req);
$header = [ 'Content-Type: application/json', 'Authorization: Bearer '.$this->getOauthToken() ];
$method = 'POST';
$url = $this->paypal_url.'billing/subscriptions';
$response = json_decode($this->callAPI($header, $method, $request, $url));

助手

// Call API
private function callAPI($header, $method, $request, $url) 
{
$curl = curl_init();
switch ($method) {
case "POST":
curl_setopt($curl, CURLOPT_POST, 1);
if ($request)
curl_setopt($curl, CURLOPT_POSTFIELDS, $request);
break;
case "PUT":
curl_setopt($curl, CURLOPT_CUSTOMREQUEST, "PUT");
if ($request)
curl_setopt($curl, CURLOPT_POSTFIELDS, $request);                               
break;
default:
if ($request)
$url = sprintf("%s?%s", $url, http_build_query($request));
}
// OPTIONS:
curl_setopt($curl, CURLOPT_URL, $url);
curl_setopt($curl, CURLOPT_HTTPHEADER, $header);
curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($curl, CURLOPT_HTTPAUTH, CURLAUTH_BASIC);
// EXECUTE:
$result = curl_exec($curl);
if(!$result){ die("Connection Failure"); }
curl_close($curl);
return $result;
}
// Fetch Oauth Token
private function getOauthToken() 
{   
$url = $this->paypal_url.'oauth2/token';
$header = [ 
"Content-Type: application/x-www-form-urlencoded", 
"Authorization: Basic " . base64_encode($this->client_id.':'.$this->client_secret) 
];
$curl = curl_init();
curl_setopt($curl, CURLOPT_POST, 1);
curl_setopt($curl, CURLOPT_POSTFIELDS, 'grant_type=client_credentials');
curl_setopt($curl, CURLOPT_URL, $url);
curl_setopt($curl, CURLOPT_HTTPHEADER, $header);
curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1);
$result = curl_exec($curl);
if(!$result) { die("Connection Failure"); } 
curl_close($curl);
$response = json_decode($result);
return $response->access_token;
}

它给了我 HATEOAS 链接,例如:https://www.sandbox.paypal.com/webapps/billing/subscriptions?ba_token=BA-0T473376T5204322K,错误发生的地方。

此外,根据 API 要求,我的数据是完整的。 因为我已经修改了有关数据不兼容的所有可能错误。

如果是关于问题的完整描述,那么请尝试帮助我,而不仅仅是触发保留,而是找出问题。

我们也有类似的问题。一些订阅付款正在进行,而另一些则没有。表单有效负载看起来相同。

当它返回错误时,我们意识到订阅付款重复次数的值(srt)设置为1。文档指出,最小值应为 2,最大值为 52。

相关内容

  • 没有找到相关文章

最新更新