Я делаю проект в ASP.NET Core. Мое требование - я хочу интегрировать PayPal в качестве платежного шлюза.
Пользователь может видеть набор предметов, с помощью кнопки BUY NOW , и когда нажата кнопка, я хочу отправить имя и стоимость этого предмета в PayPal, чтобы он взимал сумму с пользователя.
Когда платеж пройдет успешно, я хочу, чтобы PayPal перенаправил на один из методов контроллера и сохранил эту транзакцию.
Теперь моя проблема,
- Я не уверен, что использую правильный API.
- Даже если я использую этот API, я получаю ошибку с кодом 400
Я использую приведенный ниже код для генерации токена.
$.ajax({
url: 'https://api.sandbox.paypal.com/v1/oauth2/token',
datatype: 'json',
type: 'POST',
beforeSend: function (xhr) {
xhr.setRequestHeader('Authorization', 'Basic ' + btoa('client ID and secret'));
},
data: {
'grant_type': 'client_credentials',
});
Приведенная выше функция дает мне ключ и, используя его, я делаю приведенный ниже вызов API. Теперь я не уверен, что приведенный ниже API подходит для этой цели.
$.ajax({
url: 'https://api.sandbox.paypal.com/v1/payments/payment',
type: 'POST',
headers: {
'Content-Type':'application/json',
'Authorization': 'Bearer ' + accessToken
},
data: {
"intent": "sale",
"payer": {
"payment_method": "paypal"
},
"transactions": [
{
"amount": {
"total": "30.11",
"currency": "USD",
"details": {
"subtotal": "30.00",
"tax": "0.07",
"shipping": "0.03",
"handling_fee": "1.00",
"shipping_discount": "-1.00",
"insurance": "0.01"
}
},
"description": "The payment transaction description.",
"custom": "EBAY_EMS_90048630024435",
"invoice_number": "48787589673",
"payment_options": {
"allowed_payment_method": "INSTANT_FUNDING_SOURCE"
},
"soft_descriptor": "ECHI5786786",
"item_list": {
"items": [
{
"name": "hat",
"description": "Brown hat.",
"quantity": "5",
"price": "3",
"tax": "0.01",
"sku": "1",
"currency": "USD"
}
],
"shipping_address": {
"recipient_name": "Brian Robinson",
"line1": "4th Floor",
"line2": "Unit #34",
"city": "San Jose",
"country_code": "US",
"postal_code": "95131",
"phone": "011862212345678",
"state": "CA"
}
}
}
],
"note_to_payer": "Contact us for any questions on your order.",
"redirect_urls": {
"return_url": "https://example.com/return",
"cancel_url": "https://example.com/cancel"
}
Выше API-вызова - точный пример на самом сайте разработчика PayPal , но, тем не менее, он выдает следующую ошибку:
{"name":"AUTHENTICATION_FAILURE","message":"Authentication failed due to invalid authentication credentials or a missing Authorization header.","links":[{"href":"https://developer.paypal.com/docs/api/overview/#error","rel":"information_link"}]}
Это правильный API, который я должен использовать, или есть какой-то другой? Пожалуйста, помогите мне в этом.
Спасибо.