【问题标题】:Payal "DoExpressCheckoutPayment" - why pass $finalPaymentAmount? (PHP)Payal "DoExpressCheckoutPayment" - 为什么要通过 $finalPaymentAmount? (PHP)
【发布时间】:2014-06-08 02:13:20
【问题描述】:

我正在尝试让最简单的 Express Checkout 版本在 PHP 中运行。

我的购物篮有一个按钮,可将用户发送到结帐向导提供的脚本expresscheckout.php

在返回 URL 页面上,我调用GetShippingDetails($_SESSION['TOKEN']) 以获取用户的运输详细信息。似乎没有记录,我在响应中得到键/值'CHECKOUTSTATUS' => 'PaymentActionNotInitiated'This question 解释说,要完成交易,我必须调用 DoExpressCheckout,它由 Paypal 提供的 PHP 函数 ConfirmPayment( $FinalPaymentAmt ) 包装。

为什么需要$FinalPaymentAmt 参数?如果我是正确的:

  • paymentType共有三种类型:SaleAuthorisationOrder,其中第一种在PHP脚本中使用expresscheckout.php,根据this page“可以立即完成”。由于在脚本对 Paypal 提供的包装器的调用中重定向到 Paypal 之前的调用中指定了付款金额:

CallShortcutExpressCheckout(($paymentAmount, $currencyCodeType, $paymentType, $returnURL, $cancelURL);

问题

  1. 为什么还要在ConfirmPayment( $FinalPaymentAmt ) 中指定?如果为$paymentAmount$finalPaymentAmount 指定的值不同会怎样?
  2. 只有在$paymentType 不是“销售”时才需要/使用$FinalPaymentAmt

【问题讨论】:

    标签: php paypal


    【解决方案1】:

    我不熟悉结帐向导,但一般的快速结帐流程由 3 个 API 请求组成。

    • 设置ExpressCheckout
    • GetExpressCheckoutDetails
    • DoExpressCheckoutPayment

    SEC 设置付款并返回一个令牌。然后将用户重定向到 PayPal。他们登录并同意继续,这会将他们发送回您的网站。

    回到您的站点/应用程序后,您致电 GECD 以获取买家的送货地址。此时,您可能需要为订单添加更多的运费、税金、手续费等。如果是这样,您将向买家展示最终审核页面。

    一旦确认,您将致电 DECP 以最终金额确定订单。

    这就是为什么金额确实会在结帐流程的开始和结束之间发生变化,并且无论交易类型如何,SEC 和 DECP 都始终需要该金额。

    【讨论】:

      猜你喜欢
      • 2023-03-12
      • 2011-06-10
      • 2012-12-22
      • 1970-01-01
      • 2016-11-01
      • 2018-12-31
      • 1970-01-01
      • 1970-01-01
      • 2011-12-29
      相关资源
      最近更新 更多