PayPal API - NSS: сертификат клиента не найден (ник не указан) - PullRequest
0 голосов
/ 25 мая 2020

У меня следующая проблема. Я пытаюсь создать план с помощью API PayPal с этим кодом:

$clientId = "xxx";
$secret = "xxx";
$mode = ".sandbox";
$product_id = "xxx";

$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, "https://api".$mode.".paypal.com/v1/oauth2/token");
curl_setopt($ch, CURLOPT_HEADER, false);
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
curl_setopt($ch, CURLOPT_POST, true);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); 
curl_setopt($ch, CURLOPT_USERPWD, $clientId.":".$secret);
curl_setopt($ch, CURLOPT_POSTFIELDS, "grant_type=client_credentials");
$result = curl_exec($ch);
$json = json_decode($result);
$access_token=$json->access_token;
curl_close($ch);

$ch = curl_init();
$headers=array('Content-Type:application/json','Authorization:Bearer '.$access_token); 
curl_setopt($ch, CURLOPT_HTTPHEADER, $headers);
curl_setopt($ch, CURLOPT_URL, "https://api".$mode.".paypal.com/v1/billing/plans");
curl_setopt($ch, CURLOPT_HEADER, false);
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
curl_setopt($ch, CURLOPT_CUSTOMREQUEST, 'POST');
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); 
curl_setopt($ch, CURLOPT_POSTFIELDS, '{
"product_id": "'.$product_id.'",
  "name": "Basic",
  "description": "Basic",
  "status": "ACTIVE",
  "billing_cycles": [
    {
      "frequency": {
        "interval_unit": "MONTH",
        "interval_count": 1
      },
      "tenure_type": "REGULAR",
      "sequence": 2,
      "total_cycles": 0,
      "pricing_scheme": {
        "fixed_price": {
          "value": "'.$amount.'",
          "currency_code": "EUR"
        }
      }
    }
  ],
  "payment_preferences": {
    "auto_bill_outstanding": true,
        "setup_fee": {
          "currency_code": "EUR",
          "value": "0"
        },
        "setup_fee_failure_action": "CONTINUE",
        "payment_failure_threshold": 3
      },
  "taxes": {
    "percentage": "19",
    "inclusive": true
  }
}');
$result = curl_exec($ch);
echo 'Curl-Fehler: ' . curl_error($ch);
$json = json_decode($result);
$plan_id=$json->id;
curl_close($ch);
echo $plan_id; 


Но я получаю следующее сообщение об ошибке:

NSS: сертификат клиента не найден (никнейм не указан)

Раньше я создавал продукт со следующим кодом, и он отлично работает:

$clientId = "xxx";
$secret = "xxx";
$mode = ".sandbox";

$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, "https://api".$mode.".paypal.com/v1/oauth2/token");
curl_setopt($ch, CURLOPT_HEADER, false);
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
curl_setopt($ch, CURLOPT_POST, true);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); 
curl_setopt($ch, CURLOPT_USERPWD, $clientId.":".$secret);
curl_setopt($ch, CURLOPT_POSTFIELDS, "grant_type=client_credentials");
$result = curl_exec($ch);
$json = json_decode($result);
$access_token=$json->access_token;
curl_close($ch);

$ch = curl_init();
$headers=array('Content-Type:application/json','Authorization:Bearer '.$access_token); 
curl_setopt($ch, CURLOPT_HTTPHEADER, $headers);
curl_setopt($ch, CURLOPT_URL, "https://api".$mode.".paypal.com/v1/catalogs/products");
curl_setopt($ch, CURLOPT_HEADER, false);
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
curl_setopt($ch, CURLOPT_CUSTOMREQUEST, 'POST');
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); 
curl_setopt($ch, CURLOPT_POSTFIELDS, '{
"name": "xxx",
  "description": "xxx",
  "type": "SERVICE",
  "category": "SOFTWARE",
  "home_url": "https://domain.de/"
}');
$result = curl_exec($ch);
$json = json_decode($result);
$product_id=$json->id;
curl_close($ch);
echo $product_id;

поэтому я не знаю, что я делаю неправильно в первом коде, когда второй код работает. Кто-нибудь может мне помочь?

большое спасибо

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...