Получение идентификатора Paypal Payer из электронной почты Paypal - PullRequest
0 голосов
/ 18 июня 2019

Итак, я хочу отправлять платежи своему игроку после того, как они автоматически предоставили мне свою электронную почту. Но я не знаю их идентификатор плательщика вообще. Я перепробовал десятки вещей, но это все равно не работает!

Я пытался использовать их электронные письма, продавцов, мой идентификатор плательщика (ik) и т. Д. До сих пор не работает.

    public Authorization getPaypalConfirmation(String email, double price, String description) {
         if (!this.enabled) {
             return null;
         }
        /*
         * Flow would look like this: 
         * 1. Create Payer object and set PaymentMethod 
         * 2. Set RedirectUrls and set cancelURL and returnURL 
         * 3. Set Details and Add PaymentDetails
         * 4. Set Amount
         * 5. Set Transaction
         * 6. Add Payment Details and set Intent to "authorize"
         * 7. Create APIContext by passing the clientID, secret and mode
         * 8. Create Payment object and get paymentID
         * 9. Set payerID to PaymentExecution object
         * 10. Execute Payment and get Authorization
         * 
         */

        Payer crunchifyPayer = new Payer();
        crunchifyPayer.setPaymentMethod("paypal");
        // Redirect URLs
        RedirectUrls crunchifyRedirectUrls = new RedirectUrls();
        crunchifyRedirectUrls.setCancelUrl(this.getCancelurl());
        crunchifyRedirectUrls.setReturnUrl(this.getReturnurl());

        // Set Payment Details Object
        Details crunchifyDetails = new Details();
        crunchifyDetails.setSubtotal(price + "");

        // Set Payment amount
        Amount crunchifyAmount = new Amount();
        crunchifyAmount.setCurrency(this.getCurrency());
        crunchifyAmount.setTotal(price + "");
        crunchifyAmount.setDetails(crunchifyDetails);

        // Set Transaction information
        Transaction crunchifyTransaction = new Transaction();
        crunchifyTransaction.setAmount(crunchifyAmount);
        crunchifyTransaction.setDescription(description);
        List<Transaction> crunchifyTransactions = new ArrayList<Transaction>();
        crunchifyTransactions.add(crunchifyTransaction);

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

        // Set Payment intent to authorize
        crunchifyPayment.setIntent("authorize");
        crunchifyPayment.setPayer(crunchifyPayer);
        crunchifyPayment.setTransactions(crunchifyTransactions);
        crunchifyPayment.setRedirectUrls(crunchifyRedirectUrls);

        // Pass the client, secret and mode. The easiest, and most widely used option.
        APIContext crunchifyapiContext = new APIContext(this.clientid, this.getClientsecret(), "sandbox");
        try {

            Payment myPayment = crunchifyPayment.create(crunchifyapiContext);

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

            // Identifier of the payment resource created 
            crunchifyPayment.setId(myPayment.getId());          
            PaymentExecution crunchifyPaymentExecution = new PaymentExecution();
            // Set your PayerID. The ID of the Payer, passed in the `return_url` by PayPal.
            crunchifyPaymentExecution.setPayerId(email);

            // This call will fail as the user has to access Payment on UI. Programmatically
            // there is no way you can get Payer's consent.
            Payment createdAuthPayment = crunchifyPayment.execute(crunchifyapiContext, crunchifyPaymentExecution);
            // Transactional details including the amount and item details.
            Authorization crunchifyAuthorization = createdAuthPayment.getTransactions().get(0).getRelatedResources().get(0).getAuthorization(); 
            return crunchifyAuthorization;
        } catch (PayPalRESTException e) {

            // The "standard" error output stream. This stream is already open and ready to
            // accept output data.
            System.err.println(e.getDetails());
        }
        return null;
    }
18.06 02:38:39 [Server] ERROR [com.paypal.base.HttpConnection] Response code: 400Error response: {"name":"PAYMENT_NOT_APPROVED_FOR_EXECUTION","message":"Payer has not approved payment","information_link":"https://developer.paypal.com/docs/api/payments/#errors","debug_id":"dec8cb3e6fae5"}
18.06 02:38:39 [Server] WARN name: PAYMENT_NOT_APPROVED_FOR_EXECUTIONmessage: Payer has not approved paymentdetails: 

Это показывает ошибку, что плательщик не утвержден. Я почти уверен, что мне не хватает их идентификатора плательщика.

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