如何使用 java 和 paypal api 在沙盒模式下进行大规模支付?

Posted

技术标签:

【中文标题】如何使用 java 和 paypal api 在沙盒模式下进行大规模支付?【英文标题】:How do you do a mass payment in sandbox mode with java and the paypal api? 【发布时间】:2017-05-27 23:42:15 【问题描述】:

我今天一直在寻找示例/教程/文档 它解释了如何使用 paypal api 和 java 进行大规模支付。我检查了贝宝网站,虽然我看到的只是关于什么是大规模支付的概述以及它们如何工作以及它们为什么存在的理论解释。是否有任何资源/教程显示如何使用 java 和 paypal api 进行大规模支付,其中包含实际代码和/或 java 文档,清楚地解释了在沙盒模式下进行大规模支付所需的条件?我会非常感谢任何帮助。

【问题讨论】:

您好 Dan,您能否集成 API 并找到一些示例?如果您也可以在这里分享一些工作,那就太好了。 @ShubhamA。如果我有工作,我很乐意分享。从业务的角度来看,手动提交批量付款而不是自动化该过程更有意义,所以我没有进一步处理......如果有人解决了这个问题并愿意分享,我仍然会感兴趣!跨度> 我自己能够做到这一点,使用文档和 Github 示例。以下是经过测试的有效答案。 【参考方案1】:

我将 Mass Payout API 与 Spring Boot 集成在一起。以下是主要摘录,但不依赖于框架。

首先,我们添加合适的Maven 依赖:

<dependency>
  <groupId>com.paypal.sdk</groupId>
  <artifactId>rest-api-sdk</artifactId>
  <version>1.13.1</version>
</dependency>

现在,我们可以创建一个Payout 对象并将多个收件人添加为PayoutItem,例如:

Payout payout = new Payout();

PayoutSenderBatchHeader senderBatchHeader = new PayoutSenderBatchHeader();
senderBatchHeader.setEmailSubject("PayPal Email Header");

Currency amount = new Currency();
//Transaction of 1 unit with US Dollars as unit.
amount.setValue("1").setCurrency("USD");

完成后,您就可以开始添加收件人了:

PayoutItem sendTo = new PayoutItem();

//This can be "Phone" and specify PayPal mobile number on setReceiver
sendTo.setRecipientType("Email")
       .setReceiver("user@email.com")
       .setNote("Thanks.").setAmount(amount);

List<PayoutItem> items = new ArrayList<>();
items.add(sendTo);
//Add more recipients to items list but with same currency as handling
//different currencies in single batch isn't possible

payout.setSenderBatchHeader(senderBatchHeader).setItems(items);

既然已经完成了,最后执行请求:

//paypalMode can be either "sandbox" or "live"
APIContext apiContext = new APIContext(
  paypalClientId, paypalClientSecret, paypalMode);

PayoutBatch batch = payout.create(apiContext);
String batchId = batch.getBatchHeader().getPayoutBatchId();

付款请求现已执行,但异步执行。检查 JSON 字符串响应为:

String jsonResponseStr = Payout.getLastResponse();

在此回复中,您可以找到需要访问的link,以了解有关此付款的详细信息(无论是否成功)。

值得注意的是,Paypal 现在不支持同步处理多个收件人。

【讨论】:

payout.create(apiContext, params) 需要两个参数,payout.createSynchronous(apiContext) 只需要一个参数。 你是如何用一个账户测试批量支付的 你是否创建了另一个新的开发者账户来测试批量支付?? 没关系发现这个:developer.paypal.com/docs/payouts/integrate/api-integration/…

以上是关于如何使用 java 和 paypal api 在沙盒模式下进行大规模支付?的主要内容,如果未能解决你的问题,请参考以下文章

PayPal Rest API (PHP SDK) webhook 未显示在沙盒事件列表中

PayPal REST API (PHP SDK) 成功交易未在沙盒模式下显示,在实时模式下显示

使用 CreateRecurringPaymentsProfile API 时如何指定 PayPal 买家账户?

PayPal Rest 首次通话不会出现在沙盒交易中

如何在沙盒中手动触发 Paypal 错误 10486?

为啥 setLandingPageType("billing") 在沙盒中工作,但在 PAYPAL PHP REST API SDK WebProfile 中的实时版本中不工作