JavaEE PayPal退款流程

JavaEE PayPal退款流程

  • 要求:
    1. 交易状态必须结算或结算。
    1. 退款金额不得超过原始交易的剩余未退款金额。
    1. 交易完全退还后不能退款。
    1. 在托管中进行的交易只能全额退还。尝试部分退还托管交易将导致验证错误

退款中的the_transaction_id:即为下单时成功返回的transaction.getId()

1. 请求退款

您可以退款具有结算或结算状态的交易。如果交易尚未开始结算,请Transaction.void()改用。如果您未指定退款金额,则整笔交易金额将退还。

退款参数:

参数是否必须说明
transactionId唯一的事务标识符
.amount(…)退款金额。该值必须大于0,并且不能超过交易的总金额。如果您未指定退款金额,则整笔交易金额将退还。
orderId(…)如果您想通过getOrderId()与原始交易不同的交易,请使用此参数。否则,原始交易的orderId()价值将被复制到退款。在PayPal交易中,此字段映射到PayPal发票号码。PayPal帐单号码必须在您的PayPal商业帐户中唯一。PayPal交易的最大长度为255个字符或127个字符。
Result<Transaction> result = gateway.transaction().refund("the_transaction_id");
复制代码

注⚠️:如果交易无法找到,它会抛出一个NotFoundException。

2. 部分退款(只退其中一部分)

如果只想退还部分交易,请指定退款金额(即上述参数:.amount(…)):

Result<Transaction> result = gateway.transaction().refund(
  "a_transaction_id",
  new BigDecimal("50.00")
);

result.isSuccess();
// true
Transaction refund = result.getTarget();
refund.getType();
// Transaction.Type.CREDIT
refund.getAmount();
// 50.00

Result<Transaction> result = gateway.transaction().refund(
  "a_transaction_id",
  new BigDecimal("10.00")
);

result.isSuccess();
// true
Transaction refund = result.getTarget();
refund.getType();
// Transaction.Type.CREDIT
refund.getAmount();
// 10.00
复制代码
  • PayPal支持给定交易的单个和多个部分退款。只要退款金额小于初始交易金额,可以随时随地多次退款交易。

  • 如果已经部分退款交易,并且没有指定余额而执行其他退款,那么PayPal将退还剩余未退款的交易金额。

注⚠️:最好的做法是在创建更多相同交易之前,允许每个部分退款呼叫成功完成。如果单个事务有太多的同时退款请求,有些可能会失败,从网关返回一个错误。

3. 退款结果

如果处理器拒绝退款交易的捕获,则交易对象将具有processorSettlementResponseCode可用。

Transaction transaction = result.getTransaction();

transaction.getStatus();
// Transaction.Status.SETTLEMENT_DECLINED

transaction.getProcessorSettlementResponseCode();
// e.g. "4001"

transaction.getProcessorSettlementResponseText();
// e.g. "Settlement Declined"
复制代码
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值
>