PayPal не возвращается в приложение после оплаты - PullRequest
0 голосов
/ 11 февраля 2019

В моем текущем проекте Java / Spring я использую PayPal-Java-SDK, чтобы попытаться внедрить платежную систему для моего приложения.Давным-давно мне удалось заставить эту работу работать со старым проектом, который я потерял, с кодом, похожим на тот, что у меня есть сейчас, но теперь, когда я запускаю приложение и пытаюсь внести платеж, используя PayPal SDK, яперенаправить на страницу выбора способа оплаты, и, если я подтвердлю или отменим платеж, я перейду на страницу своего аккаунта вместо возврата к приложению.

У меня есть этот код:

inмой контроллер, этот метод получает вызов из представления:

  @RequestMapping(value = "/checkout", method=RequestMethod.GET)
  public String checkout(@RequestParam("usuario_id") Integer usuario_id, @RequestParam(value="payerId", required=false) String payerId, @RequestParam(value="guid", required=false) String guid) throws com.paypal.base.rest.PayPalRESTException {
    return "redirect:"+this.serv.checkout(usuario_id, payerId, guid);
  }

в моем классе обслуживания, этот 2 метода обрабатывает платеж с использованием PayPal:

  public String checkout(Integer usuario_id, String payerId, String guid) throws com.paypal.base.rest.PayPalRESTException {
    Usuario usuario = this.dao.findBy("id", usuario_id);

    String clientId = paypalDao.get().getClientId();
    String clientSecret = paypalDao.get().getClientSecret();
    APIContext apiContext = new APIContext(clientId, clientSecret, "sandbox");

    String redirectURL = "";
    if(payerId != null) {
      if(guid != null) {
        Payment payment = new Payment();
        payment.setId(map.get(guid));
        PaymentExecution paymentExecution = new PaymentExecution();
        paymentExecution.setPayerId(payerId);
        payment.execute(apiContext, paymentExecution);

        //saves the order data in the database and redirect to the order page    
      }
    } else {
      Payment createdPayment = createPayment(usuario, apiContext);
      Iterator<Links> links = createdPayment.getLinks().iterator();
      while (links.hasNext()) {
        Links link = links.next();
        if (link.getRel().equalsIgnoreCase("approval_url"))
          redirectURL = link.getHref();
      }
      map.put(guid, createdPayment.getId());
    }
    return redirectURL;
  }

  public Payment createPayment(Usuario usuario, APIContext apiContext) throws com.paypal.base.rest.PayPalRESTException  {
    Amount amount = new Amount();
    amount.setCurrency("BRL");
    amount.setTotal(this.cart_total(usuario.getId()).toString());

    String desc = "Lista de produtos comprados\n";
    for(Produto produto : usuario.getCesta().getProdutos())
      desc = desc + "* " + produto.getNome() + "\n";

    Transaction transaction = new Transaction();
    transaction.setAmount(amount);
    transaction.setDescription(desc);

    java.util.List<Transaction> transactions = new java.util.ArrayList<Transaction>();
    transactions.add(transaction);

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

    Payment payment = new Payment();
    payment.setIntent("sale");
    payment.setPayer(payer);
    payment.setTransactions(transactions);

    RedirectUrls redirectUrls = new RedirectUrls();
    redirectUrls.setCancelUrl(request.getContextPath() + "/cancel");
    redirectUrls.setReturnUrl(request.getContextPath() + "/checkout?usuario_id="+usuario.getId()+"?guid="+UUID.randomUUID().toString());
    payment.setRedirectUrls(redirectUrls);

    return payment.create(apiContext);
  }

любой может дать мне подсказкучего мне здесь не хватает?

...