缺少贝宝付款操作

Posted

技术标签:

【中文标题】缺少贝宝付款操作【英文标题】:paypal payment action missing 【发布时间】:2012-03-29 16:09:10 【问题描述】:

在将 PayPal 集成到我们的商店系统中时,我按照最新可用文档中的规定做了。我刚刚发现 NVP 中似乎有 PAYMENTREQUEST_n_PAYMENTACTION 参数。

我使用 SetExpressCheckout 返回的令牌和 PayerID 获取付款详细信息。当我输出返回的 cURL 时,我才发现:

[CHECKOUTSTATUS] => PaymentActionNotInitiated

似乎是什么问题?

我在 cURL 中使用这个查询:

// Prepare PayPal API URL
$url = "https://api-3t.sandbox.paypal.com/nvp";

// $PAYMENTACTION = "Sale"

// Prepare PayPal NVP (Name-Value Pair) payment request
$nvp = "METHOD=" . $SETMETHOD;
$nvp .= "&VERSION=" . $VERSION;
$nvp .= "&USER=" . $USERNAME;
$nvp .= "&PWD=" . $PASSWORD;
$nvp .= "&SIGNATURE=" . $SIGNATURE;
$nvp .= "&PAYMENTREQUEST_0_PAYMENTACTION=" . $PAYMENTACTION;
$nvp .= "&PAYMENTREQUEST_0_CURRENCYCODE=" . $CURRENCY;
$nvp .= "&SOLUTIONTYPE=" . $SOLUTIONTYPE;
$nvp .= "&RETURNURL=" . $RETURNURL;
$nvp .= "&CANCELURL=" . $CANCELURL;
$nvp .= "&L_PAYMENTREQUEST_0_NAME0=" . $PAYMENTNAME0;
$nvp .= "&L_PAYMENTREQUEST_0_DESC0=" . $PAYMENTDESC0;
$nvp .= "&L_PAYMENTREQUEST_0_AMT0=" . $PAYMENTAMT0;
$nvp .= "&L_PAYMENTREQUEST_0_QTY0=" . $PAYMENTQTY0;
$nvp .= "&PAYMENTREQUEST_0_ITEMAMT=" . $PAYMENTITEMAMT;
$nvp .= "&PAYMENTREQUEST_0_AMT=" . $PAYMENTAMT;
$nvp .= "&PAYMENTREQUEST_0_CURRENCYCODE=" . $CURRENCY;
$nvp .= "&LOCALECODE=" . $LOCALECODE;
$nvp .= "&HDRIMG=" . $HEADERLOGO;
$nvp .= "&PAYFLOWCOLOR=" . 262626;

【问题讨论】:

我以前从未使用过贝宝系统,但快速搜索显示贝宝不允许超过 2 位小数的数字,这可能是导致问题的原因? @Nick - 我认为这无关紧要。金额工作正常,只是某些参数 &PAYMENTREQUEST_0_PAYMENTACTION 似乎是问题所在。 也许您可以尝试将其作为一种解决方法,以防没人知道答案:“我发现的唯一解决方法是执行 GetExpressCheckoutDetails 并检查 CHECKOUTSTATUS 变量以查看它是否为 PaymentActionComplete。如果是,我处理付款。如果是 PaymentActionNotInitiated,我会做一个 DoExpressCheckoutPayment。 -虽然我真的希望你能找到更好的解决方案。 【参考方案1】:

PaymentActionNotInitiated 不指代PAYMENTREQUEST_0_PAYMENTACTION。 这仅意味着您尚未将买家引导至 PayPal 页面以确认他/她的付款。

回顾一下,这就是 Express Checkout 的工作方式:

    SetExpressCheckout 设置付款并返回令牌 您将买家重定向到https://www.paypal.com/cgi-bin/webscr?cmd=_express-checkout&token=TOKEN-HERE,其中TOKEN-HERE 是您之前收到的令牌 买家同意付款后,返回您的网站 您可以调用 GetExpressCheckoutDetails 并提供令牌作为参数来获取买家的 PAYERID。 使用提供的令牌和 PAYERID 调用 DoExpressCheckoutPayment 以完成付款

【讨论】:

我在您的个人资料中发现了这条评论play with PayPal API's for a living。这怎么可能?。 Paypal 是否为您在 *** 中的工作付费?? (有点离题,但我在 PayPal Merchant Technical Services 工作。)

以上是关于缺少贝宝付款操作的主要内容,如果未能解决你的问题,请参考以下文章

贝宝 PDT 缺少变量

使用科尔多瓦插件的贝宝付款

如何在 Android 上向用户付款

000Webhost 付款后的操作

CI-Merchant 中的自定义付款值

贝宝订阅 + 一次性订单 (NVP)