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

Posted

技术标签:

【中文标题】如何通过 REST SDK 获取已执行 PayPal 付款的销售 ID【英文标题】:How to get Sale Id of executed PayPal payment via REST SDK 【发布时间】:2016-12-01 01:50:22 【问题描述】:

我正在使用 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 对象,PaymentTransaction 对象中分别有一个RelatedResources 对象。

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

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

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

谢谢

【问题讨论】:

【参考方案1】:

你可以这样做。

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 对象,但如果您已完成的 Payment(即销售)已被退款,RelatedResources 对象将在返回列表中包含多个元素。在这种情况下,您的 Payment 对象的事务中的 RelatedResources 将具有多个元素,其中一个是销售,另一个是退款。

【讨论】:

以上是关于如何通过 REST SDK 获取已执行 PayPal 付款的销售 ID的主要内容,如果未能解决你的问题,请参考以下文章

使用 python Paypal REST SDK 在 django 中动态获取付款和付款人 ID

paypal rest sdk - 取消付款只提供令牌

如何在没有 Firebase SDK(即通过 REST)的情况下生成 FCM 注册令牌?

使用 PayPal REST SDK 和 PayPal-Python-SDK 时未发送或接收资金

react 和 paypal-rest-sdk:如何将数据从支付页面传回应用程序

通过 PHP SDK 的 PayPal REST API 返回“传入的 JSON 请求未映射到 API 请求”