如何发送退款申请?

时间:2014-04-14 15:20:21

标签: php rest paypal

假设我们有PayPal沙盒帐户,并创建了REST API调用的应用程序。

在我们的应用程序中,我们使用PayPal Pay Buttons将客户重定向到PayPal网站。客户支付并返回现场,我们检查状态并设置外部对交易的引用。

对于此操作,我们不使用应用程序的凭据,而是帐户 - 电子邮件,密码和用户名。在此之后,我们将使用相同的凭据接受来自PayPal的IPN消息以跟踪状态。

然后我们有一个按钮 Refund ,按下此按钮将向应用程序的访问信息( clientId )请求REST API到PayPal clientSecret )。这部分建立在PayPal PHP SDK之上。

当我尝试执行呼叫时 - PayPal返回404错误。我认为付款对应用程序不可见。

更好地了解凭据和使用位置:

PayPal帐户:

  • 住:
    • 电子邮件
    • 密码
    • 用户名
  • 测试:
    • 电子邮件测试
    • 密码检验
    • 用户名测试
  • 应用:
    • 住:
      • 的clientId
      • clientSecret
    • 测试:
      • clientIdTest
      • clientSecretTest

对于我使用的按钮:电子邮件测试,用户名测试,密码测试

然后我得到$transactionId。并在代码中使用它:

$api = new ApiContext(new OAuthTokenCredential($clientIdTest, $clientSecretTest));

$ppAmount = new Amount();
$ppAmount->setCurrency('USD')
    ->setTotal(33.15);

$ppRefund = new Refund();
$ppRefund->setAmount($ppAmount);

$ppSale = new Sale();
$ppSale->setId($transactionId);

$ppSale->refund($ppRefund, $apiContenxt);

我得到404.正如您所看到的,我使用测试凭据来获取按钮和REST调用,但出于某种原因获得404。

提前致谢。

1 个答案:

答案 0 :(得分:1)

据我所知,只有通过REST API进行的付款才能使用REST API退款,这意味着如果您通过按钮或其他API创建付款,则无法使用REST退款。

REST退款需要在Sale实体中使用sale_id(当您“执行”REST付款时生成)。