【问题标题】:how to get payer_id programmatically in my java code?如何在我的 java 代码中以编程方式获取 payer_id?
【发布时间】:2014-01-22 23:51:37
【问题描述】:

在我的代码中,我正在尝试向 Paypal REST API 发送所需的信息,Paypal 给我一个“已批准”状态,但为了完成付款,我需要执行付款。

payment.execute(accesstoken,paymentExecution)... 但我无法从回复中获得payer_id。 这是我的代码以获取更多信息,并提前感谢您的帮助!

public class PaypalPaymentWithCreditCardServlet {    

   // private static final long serialVersionUID = 734220724945040319L;

   // @Override
    public void init () throws Exception {

        InputStream is = PaypalPaymentWithCreditCardServlet.class.getResourceAsStream("/sdk_config.properties");
        try {
                PayPalResource.initConfig(is);
        } catch (PayPalRESTException e) {
               // goto failure page. can't do anything without configuration file
            e.printStackTrace();
        }
    }



    public boolean doPost (PaymentPojo paymentpojo) throws Exception {

        try {

            String accessToken = GenerateAccessToken.getAccessToken();            
            APIContext apiContext = new APIContext(accessToken);

            final Payment payment = new PaymentBuilder().setBillingAddress(paymentpojo.getBillingAddress())
                                                        .setCreditCard(paymentpojo.getCreditCard())
                                                        .setPaymentDetail(paymentpojo.getDetails())
                                                        .setTransactionAmount(paymentpojo.getAmount())
                                                        .build();

            Payment createdPayment = payment.create(apiContext);            

            System.out.println(Payment.getLastResponse());

            System.out.println(String.format("created payment with id [%s] and status=[%s]", createdPayment.getId(), createdPayment.getState()));

            if(!createdPayment.getState().toLowerCase().equalsIgnoreCase(PaypalState.APPROVED.getStatus())) {

                // payment is not created. throw an exception
                System.out.println("Payment handshake did not go through!!!");

                return false;

            }


            // if it is not created throw exception

          //  payment.execute(accessToken, paymentExecution);



          return true;  

        } catch (PayPalRESTException e) {

        }
        return false;


    }

}

【问题讨论】:

    标签: java paypal


    【解决方案1】:

    对于信用卡付款,payer_id 是您用来在系统中识别用户的唯一属性(例如电子邮件地址),并且每次付款时您都需要在 payerID 中提供该属性。

    如果您不知道用户的信息,例如客人结帐,则不需要提供 payerID。

    对于 paypal 付款,payer_id 始终需要提供,并在用户批准付款后附加到 redirect_url。完整文档位于https://developer.paypal.com/webapps/developer/docs/integration/web/accept-paypal-payment/

    【讨论】:

    • 谢谢你 v.much @Avi Das ..感谢你的建议,我已经设法解决了这个问题。现在我遇到了一些问题...我已经使用销售对象成功退款,但我如何找到退款 ID?我通过调用 Sale.getLastResponse() 获得了 Json 格式的 ID,但我如何以编程方式找到此退款交易 ID?
    • 如果您的直接问题得到解答,您介意接受答案吗?最好为您的新问题打开一个新问题并将其链接到此处,以便其他开发人员可以更轻松地找到它。谢谢!
    • 我很抱歉一问一答。我接受上面提供的解决方案。我会遵守规则,以便其他开发人员可以从中受益。非常感谢
    • 嘿,没问题,尽管在这里评论你的新问题的链接。
    猜你喜欢
    • 1970-01-01
    • 2021-01-11
    • 2023-04-02
    • 1970-01-01
    • 1970-01-01
    • 2011-09-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多