У меня следующая проблема. Я пытаюсь создать план с помощью 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;
поэтому я не знаю, что я делаю неправильно в первом коде, когда второй код работает. Кто-нибудь может мне помочь?
большое спасибо