php - Payal "DoExpressCheckoutPayment"- 为什么要传递 $finalPaymentAmount? (PHP)

标签 php paypal

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

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

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

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

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

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

问题:

  1. 为什么还必须在 ConfirmPayment( $FinalPaymentAmt ) 中指定?如果为 $paymentAmount$finalPaymentAmount 指定的值不同,会发生什么情况?
  2. $FinalPaymentAmt 是否仅在 $paymentType 不是“Sale”时才需要/使用?

最佳答案

我不熟悉结账向导,但一般的快速结账流程包含 3 个 API 请求。

  • 设置快速结账
  • GetExpressCheckoutDetails
  • DoExpressCheckoutPayment

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

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

确认后,您将调用 DECP 以最终金额确定订单。

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

关于php - Payal "DoExpressCheckoutPayment"- 为什么要传递 $finalPaymentAmount? (PHP),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23241018/

相关文章:

php - 在没有 php.ini 的情况下设置 display_errors=0 和 log_errors=1

javascript - 生成随机数和字符 - MYSQL

javascript - Uncaught ReferenceError : getPrice is not defined

paypal - 自适应付款和预先批准/定期付款

paypal - 与 PayPal 的每月结算周期混淆

php - MySQL 选择时间戳是否过去

php - 在 Laravel 5.3 中覆盖 Auth 忘记密码

html - 我如何使用定制的按钮类作为 Paypal 立即购买按钮?

laravel-4 - 如何将 'description'产品发送到Paypal express(omnipay)?

api - 如何检查电子邮件地址是否与 Paypal 帐户相关联?