SagePay - 400 - неверный формат запроса - PullRequest
0 голосов
/ 24 января 2019

Я пытаюсь оформить платеж через Node.js, используя библиотеку запроса-обещания. Я получаю эту ошибку:

400 - {"description":"Incorrect request format","code":1000}

В настоящее время использую песочницу, мой код выглядит следующим образом:

    const postData = JSON.stringify({
      "transactionType": "Payment",
      "paymentMethod": {
        "card": {
          "merchantSessionKey": merchantSessionKey,
          "cardIdentifier": cardIdentifier
        }
      },
      "vendorTxCode": `demotransaction-${time}`,
      "amount": parseInt(baseGrandTotal, 10),
      "currency": baseCurrencyCode,
      "description": "Demo transaction",
      "customerFirstName": customer.address_billing.firstname,
      "customerLastName": customer.address_billing.lastname,
      "billingAddress": {
        "address1": customer.address_billing.street[0],
        "city": customer.address_billing.city,
        "postalCode": customer.address_billing.postcode,
        "country": customer.address_billing.country_id
      }
    });

    const SagePayment = new Promise((resolve, reject) => {
      const requestOptions = {
        method: 'POST',
        uri: 'https://pi-test.sagepay.com/api/v1/transactions',
        headers: {
          'Cache-Control': 'no-cache',
          'Content-Type': 'application/json',
          Authorization: 'Basic aEpZeHN3N0hMYmo0MGNCOHVkRVM4Q0RSRkxodUo4RzU0TzZyRHBVWHZFNmhZRHJyaWE6bzJpSFNyRnliWU1acG1XT1FNdWhzWFA1MlY0ZkJ0cHVTRHNocktEU1dzQlkxT2lONmh3ZDlLYjEyejRqNVVzNXU='
        },
        body: postData,
        json: true
      };

      rp(requestOptions)
        .then(data => {
          resolve(data);
        })
        .catch(err => {
          reject(err);
        });
    });

В полном ответе я вижу, что я вставляю действительный JSON в тело. Так что я очень растерялся, в чем проблема. Я проверил JSON, который я предоставляю, по API-документам и не вижу очевидной проблемы.

Пример тела JSON:

{
    "transactionType": "Payment",
    "paymentMethod": {
        "card": {
            "merchantSessionKey": "365636356",
            "cardIdentifier": "365636356"
        }
    },
    "vendorTxCode": "demotransaction-1548349070589",
    "amount": 142,
    "currency": "GBP",
    "description": "Demo transaction",
    "customerFirstName": "Name",
    "customerLastName": "Lastname",
    "billingAddress": {
        "address1": "street",
        "city": "city",
        "postalCode": "postcode",
        "country": "GB"
    }
}
...