Отправлять информацию о купленных товарах в PayPal? - PullRequest
0 голосов
/ 27 ноября 2018

Мне нужно отправить список купленных товаров и чьи платежи осуществляются с помощью Paypal, чтобы покупатель, а также продавец могли видеть, какие продукты были куплены или проданы.Вот фрагмент того, что я сделал для того же, следуя Github-коду PayPalCheckout , но я каждый раз получаю We'are sorry dialog.Вот мой фрагмент кода

private PayPalPayment prepareFinalCart() {

    List<PayPalItem> productsInCart = new ArrayList<>();
    double price;


    for (Program program : mPrograms) {
        if (null != program.programPrices.get(program.selectedPriceIndex).priceAfterDiscount) {
            price = program.programPrices.get(program.selectedPriceIndex).priceAfterDiscount;
        } else {
            price = program.programPrices.get(program.selectedPriceIndex).price;
        }
        PayPalItem item = new PayPalItem(program.type, 1, //Quantity
                new BigDecimal(price), //price
                Config.DEFAULT_CURRENCY, // currency
                 + String.valueOf(program.id)); // stock keeping unit

        productsInCart.add(item);
    }


    if (App.sCouponDetails != null) {
        App.sCouponDetails.calculateDiscount(mFinalCost);
    }


    PayPalItem[] items = new PayPalItem[productsInCart.size()];
    items = productsInCart.toArray(items);

    // Total amount
    BigDecimal subtotal = new BigDecimal(mFinalCost);

    // If you have shipping cost, add it here
    BigDecimal shipping = new BigDecimal("0.0");

    // If you have tax, add it here
    BigDecimal tax = new BigDecimal("0.0");

    PayPalPaymentDetails paymentDetails = new PayPalPaymentDetails(shipping, subtotal, tax);

    BigDecimal amount = subtotal.add(shipping).add(tax);


    // Getting Purchased Programs type
    StringBuilder programsType = new StringBuilder();
    for (int i = 0; i < mPrograms.size(); i++) {
        if (i == mPrograms.size() - 1) {
            programsType.append(mPrograms.get(i).type);
        } else {
            programsType.append(mPrograms.get(i).type).append(",");
        }
    }

    PayPalPayment payment = new PayPalPayment(amount, Config.DEFAULT_CURRENCY, "Total Amount: "/*programsType.toString()*/, Config.PAYMENT_INTENT);


    payment.items(items).paymentDetails(paymentDetails);


    // Custom field like invoice_number etc.,
    //payment.custom("This is text that will be associated with the payment that the app can use.");

    return payment;
}

Пожалуйста, подскажите, в чем здесь проблема?

Ответы [ 3 ]

0 голосов
/ 29 ноября 2018

На самом деле эти параметры b / c / d / f и т.д. относятся к классу PayPalPayment.Я только что дал его формат Json.Вот как выглядит класс PayPalPayment- PayPalPayment.java

0 голосов
/ 17 декабря 2018

решена.Вышеупомянутый код был верным, значение цены было больше, чем из 7 цифр после десятичного числа, что давало код ошибки 400 (VALIDATION_ERROR).Но теперь обработано.

0 голосов
/ 29 ноября 2018

Итак, указанная вами строка JSON:

{
   "b":28.8629,
   "c":"USD",
   "d":"Ching Flix,Syncers Flix",
   "f":{
      "b":28.8629,
      "c":0.0,
      "d":0.0
   },
   "g":"sale",
   "h":[
      {
         "b":"Ching Flix",
         "c":1,
         "d":12,
         "e":"USD",
         "f":"sku-6167"
      },
      {
         "b":"Syncers Flix",
         "c":1,
         "d":20.0700,
         "e":"USD",
         "f":"sku-6498"
      }
   ],
   "i":false
}

Это не тот формат, который будет принимать PayPal.Где эти б / с / д / ф / и т.Имена параметров, начинающиеся с?

Вам необходимо исправить запрос, чтобы он соответствовал формату PayPal.

...