如何通过REST SDK获取已执行PayPal付款的销售ID

时间:2016-07-27 07:22:46

标签: paypal paypal-rest-sdk

我正在使用PayPal的REST SDK for Java: https://github.com/paypal/PayPal-Java-SDK

通过SDK执行付款后,如果有人选择退款,我希望通过SDK执行退款。

首先,我使用Payment.get(APIContext, PaymentId)方法获取付款的详细信息。

然后,要执行退款,我需要销售ID。因此,我使用以下调用从上一步中检索到的Payment对象中检索此内容:

String saleId = ppPayment.getTransactions().get(0).getRelatedResources().get(0).getSale().getId();

上面的调用假定列表中有一个Transaction对象,RelatedResourcesPayment个对象中有一个Transaction对象。

我的问题是:假设相关的交易和相关资源对象始终是列表中的第一个元素是否安全?

对于Transaction对象的情况,我知道只有一个,因为我是创建付款的人。对于RelatedResource对象的情况,我不确定我应该如何知道列表中的哪个元素与我相关。

对于这两个列表,有没有办法确保列表中的元素是与您相关的元素?在什么情况下返回列表中有多个RelatedResource元素?

由于

1 个答案:

答案 0 :(得分:0)

你可以这样做。

String saleId = "";
         try{
             Payment payment = Payment.get(apiContext, paymentId);
             List<Transaction> transactions = payment.getTransactions();

             for(Transaction transaction : transactions){
                 List<RelatedResources> resources = transaction.getRelatedResources();

                 for(RelatedResources resource : resources){
                     Sale sale = resource.getSale();
                     if(sale != null){
                         saleId = sale.getId();
                         break;
                     }

                 }
             }

             System.out.println(saleId);

         }catch(PayPalRESTException e){
             System.err.println(e.getDetails());
         }

我不确定Transaction Object,但如果您已完成的付款(即销售)已经退款,则RelatedResources Object将在返回的列表中包含多个元素。在这种情况下,您的付款对象的交易中的RelatedResources将有多个元素,其中一个将是销售,其他将退款。