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 我们目前无法完成您的请求。请稍后再试。我们对不便表示抱歉

我们目前无法处理您的付款,请稍后再试。给您带来的不便,我们深表歉意

Paypal帐户限制是否会影响支付网关?

PayPal 信用卡交易错误:付款失败。系统错误。请稍后再试[关闭]

Paypal IPN 不适用于订阅

Paypal 沙盒错误:目前似乎没有工作