Произвести оплату через PayPal API в ASP.NET Core - PullRequest
0 голосов
/ 16 января 2019

Я делаю проект в ASP.NET Core. Мое требование - я хочу интегрировать PayPal в качестве платежного шлюза.

Пользователь может видеть набор предметов, с помощью кнопки BUY NOW , и когда нажата кнопка, я хочу отправить имя и стоимость этого предмета в PayPal, чтобы он взимал сумму с пользователя.

Когда платеж пройдет успешно, я хочу, чтобы PayPal перенаправил на один из методов контроллера и сохранил эту транзакцию.

Теперь моя проблема,

  1. Я не уверен, что использую правильный API.
  2. Даже если я использую этот 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, который я должен использовать, или есть какой-то другой? Пожалуйста, помогите мне в этом.

Спасибо.

...