Как получить идентификатор плательщика в Paypal для Java SDK? - PullRequest
0 голосов
/ 20 июня 2019

Я пытался внедрить PayPal в свое Java-приложение, однако я был озадачен несколькими вещами.

Во-первых, как и где вы получите идентификатор плательщика? Например, у меня есть следующий код:

Payer Payer = new Payer();
                Payer.setPaymentMethod("paypal");

                // Redirect URLs
                RedirectUrls redirectUrls = new RedirectUrls();
                redirectUrls.setCancelUrl("http://localhost:3000/cancel");
                redirectUrls.setReturnUrl("http://localhost:3000/return");

                // Set Payment Details Object
                Details details = new Details();
                details.setShipping(shipping);
                details.setSubtotal(subtotal);
                details.setTax(tax);

                // Set Payment amount
                Amount amount = new Amount();
                amount.setCurrency("USD");
                amount.setTotal(totalPrice);
                amount.setDetails(details);

                // Set Transaction information
                Transaction transaction = new Transaction();
                transaction.setAmount(amount);
                transaction.setDescription("Shoe Raffle Ticket by Coppers Odds");
                List<Transaction> crunchifyTransactions = new ArrayList<Transaction>();
                crunchifyTransactions.add(transaction);

                // Add Payment details
                Payment payment = new Payment();

                // Set Payment intent to authorize
                payment.setIntent("authorize");
                payment.setPayer(Payer);
                payment.setTransactions(crunchifyTransactions);
                payment.setRedirectUrls(redirectUrls);

                // Pass the clientID, secret and mode. The easiest, and most widely used option.
                APIContext apiContext = new APIContext(clientID, secret, "sandbox");

//              List<String> scopes = new ArrayList<String>() {/**
//                   * 
//                   */
//                  private static final long serialVersionUID = 1L;
//
//              {
//                  /**
//                  * 'openid'
//                  * 'profile'
//                  * 'address'
//                  * 'email'
//                  * 'phone'
//                  * 'https://uri.paypal.com/services/paypalattributes'
//                  * 'https://uri.paypal.com/services/expresscheckout'
//                  * 'https://uri.paypal.com/services/invoicing'
//                  */
//                  add("openid");
//                  add("profile");
//                  add("email");
//              }};
//              
//              String redirectUrl = Session.getRedirectURL("UserConsent", scopes, apiContext);
//              System.out.println(redirectUrl);


                Payment myPayment = null;

                String authorizationId = null;

                try {

                    myPayment = payment.create(apiContext);

                    System.out.println("createdPayment Object Details ==> " + myPayment.toString());

                    // Identifier of the payment resource created

                    payment.setId(myPayment.getId());

                    PaymentExecution PaymentExecution = new PaymentExecution();

                    // Set your PayerID. The ID of the Payer, passed in the `return_url` by PayPal.

                    PaymentExecution.setPayerId(" ");

                    // This call will fail as user has to access Payment on UI. Programmatically
                    // there is no way you can get Payer's consent.

                    Payment createdAuthPayment = payment.execute(apiContext, PaymentExecution);

                    // Transactional details including the amount and item details.

                    Authorization Authorization = createdAuthPayment.getTransactions().get(0).getRelatedResources()
                            .get(0).getAuthorization();

                    authorizationId = Authorization.getId();

                    Edit_JSON.edit(currentShoe, amountofTickets + Edit_JSON.getOriginal(currentShoe));

                    LocalDate localDate = LocalDate.now();
                    com.pulsebeat02.main.gui.windows.payment.Payment paymentFinal = new com.pulsebeat02.main.gui.windows.payment.Payment("Bought Raffle Tickets",
                            DateTimeFormatter.ofPattern("yyy/MM/dd").format(localDate),
                            "Bought " + amountofTickets + " ticket(s)", "Bought with Paypal", price, null, true, account);

                    ManagePayments.allPayments.add(paymentFinal);

                } catch (PayPalRESTException e1) {

                    // The "standard" error output stream. This stream is already open and ready to
                    // accept output data.
                    Logger.LOG.error("Payment Exception");
                    System.err.println(e1.getDetails());
                }

PayerID здесь не указан и вызывает ошибку ERROR com.paypal.base.HttpConnection - Response code: 400

Кроме того, я все еще не понимаю, как работают URL-адреса перенаправления и URL-адреса утверждения. Например, это платежный файл JSON, полученный при выполнении кода:

{
  "id": "PAYID-LUF4ZQI88510624KV359214L",
  "intent": "authorize",
  "payer": {
    "payment_method": "paypal"
  },
  "transactions": [
    {
      "related_resources": [],
      "amount": {
        "currency": "USD",
        "total": "1.30",
        "details": {
          "subtotal": "0.00",
          "shipping": "0.00",
          "tax": "0.00"
        }
      },
      "description": "Shoe Raffle Ticket by Coppers Odds"
    }
  ],
  "state": "created",
  "create_time": "2019-06-20T18:13:21Z",
  "links": [
    {
      "href": "https://api.sandbox.paypal.com/v1/payments/payment/PAYID-LUF4ZQI88510624KV359214L",
      "rel": "self",
      "method": "GET"
    },
    {
      "href": "https://www.sandbox.paypal.com/cgi-bin/webscr?cmd\u003d_express-checkout\u0026token\u003dEC-31C40815LT657700L",
      "rel": "approval_url",
      "method": "REDIRECT"
    },
    {
      "href": "https://api.sandbox.paypal.com/v1/payments/payment/PAYID-LUF4ZQI88510624KV359214L/execute",
      "rel": "execute",
      "method": "POST"
    }
  ]
}

Как мне использовать файл JSON, чтобы перенаправить покупателя на веб-сайт Paypal и убедиться, что он принимает платеж, чтобы он мог заплатить?

(здесь я обратился за помощью, потому что нашел документ устаревшим и запутанным)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...