Paypal 订阅:目前似乎没有任何效果。请稍后再试
Posted
技术标签:
【中文标题】Paypal 订阅:目前似乎没有任何效果。请稍后再试【英文标题】:Paypal Subscription : Things don't appear to be working at the moment. Please try again later 【发布时间】:2019-12-18 21:11:17 【问题描述】:我目前正在沙盒环境中通过 REST API 设置 PayPal 订阅。 我能够添加产品、添加计划以及使用 API 添加订阅。 但是在支付页面(在 PayPal 端),它要求点击订阅,出现错误。
当我点击Login to subscribe
按钮时,页面出现错误:https://www.sandbox.paypal.com/webapps/billing/subscriptions?ba_token=BA-0T473376T5204322K。
Error Page Image
当我检查控制台时,这是它在页面上触发的响应:
请求网址: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 要求,我的数据也是完整的。 因为我已经修改了有关数据不兼容的所有可能错误。
如果是关于问题的完整描述,那么请尝试帮助我,而不是仅仅触发保持,而是找出问题。
【问题讨论】:
如果您需要任何其他详细信息,请询问以解决问题。 我完全不能接受有人尽管详细地描述了我的问题却只是触发了持有。 您好,您收到此问题是由于 paln 或订阅创建中的一些问题,要解决此问题,只需从 Paypal API 文档中获取 JSON 有效负载,并将您的数据一一放入,这样您就可以了解发生了什么, @SudhanshShekharDubey 我同意harish 的评论。请检查您的订阅有效负载。使用这个 -> "plan_id": "", "shipping_amount": "currency_code": "GBP", "value": "0.00" , "application_context": "brand_name": "Peerz Tutor", "locale “:“en-US”,“shipping_preference”:“SET_PROVIDED_ADDRESS”,“user_action”:“SUBSCRIBE_NOW”,“payment_method”:“payer_selected”:“PAYPAL”,“payee_preferred”:“IMMEDIATE_PAYMENT_REQUIRED”,“return_url”: "", "cancel_url": "" 感谢 manish 和 harish ,我修改了有效载荷数据并且它工作了。 【参考方案1】:我们遇到了类似的问题。一些订阅付款正在通过,而另一些则没有。表单有效负载看起来相同。
当它返回错误时,我们意识到订阅付款重复次数的值 (srt
) 设置为 1。文档指出最小值应为 2,最大值应为 52。
【讨论】:
以上是关于Paypal 订阅:目前似乎没有任何效果。请稍后再试的主要内容,如果未能解决你的问题,请参考以下文章
Paypal 我们目前无法完成您的请求。请稍后再试。我们对不便表示抱歉
我们目前无法处理您的付款,请稍后再试。给您带来的不便,我们深表歉意