【问题标题】:How to redirect to paypal with Soap instead of Simple Form如何使用肥皂而不是简单表单重定向到贝宝
【发布时间】:2011-11-27 00:09:34
【问题描述】:

我有自己的购物车。 当客户点击提交订单时,我将用户重定向到客户可以支付订单的贝宝页面。

这是我的表格

<form name="paypalform" action="https://www.sandbox.paypal.com/cgi-bin/webscr" method="post">
<input type="hidden" name="cmd" value="_cart">
<input type="hidden" name="upload" value="1">
<input type="hidden" name="invoice" value="<? echo $idInvoice; ?>">
<input type="hidden" name="business" value="aa_aaa_biz@hotmail.com">
<input type="hidden" name="notify_url" value="http://domaine.com/catalog/IPNReceip">


 <? 
    $cpt = 1;
        foreach($ordering as $k => $v)
        {
        ?>
            <input type="hidden" name="item_number_<? echo $cpt?>" value="<? echo$v->Product->id; ?>">
            <input type="hidden" name="item_name_<? echo $cpt?>" value="<? echo$v->Product->ProductNumber; ?>">
            <input type="hidden" name="quantity_<? echo $cpt?>" value="<? echo $v->Qty; ?>">
            <input type="hidden" name="amount_<? echo $cpt?>" value="<? echo $v->Price ?>"> 
            <?
            $cpt++;
        }
    ?>


<input type="hidden" name="currency_code" value="CAD">
<input type="hidden" name="tax_cart" value="<? echo $taxes;?>">
<input type="image" src="http://www.paypal.com/en_US/i/btn/x-click-but01.gif" name="submit" alt="Make payments with PayPal - it's fast, free and secure!">
</form> 

我想在后面的代码中做同样的事情。 有人有想法。 我不想再使用表单重定向到贝宝。


谢谢

【问题讨论】:

  • 您不想再使用重定向到 PayPal,或者您不想再使用表单(因此想开始使用他们的 API)?
  • 嗨罗伯特,我不想要表格的原因是任何人都可以保存表格,他们可以更改商品价格并单击提交按钮。我不想让这些人有机会做到这一点。另一种方法可以加密形式,我实际上正在调查如何做到这一点。

标签: php paypal


【解决方案1】:

您要决定的第一件事是确定最适合您的产品。
您所描述的,使用 Express Checkout 最容易完成。

Express Checkout 由三个 API 调用组成:SetExpressCheckout、GetExpressCheckoutDetails 和 DoExpressCheckoutPayment。

  1. SetExpressCheckout 准备交易并返回一个令牌。您必须从 API 响应中获取此令牌并将其附加到您将买家重定向到的 URL。
  2. 一旦买家在 PayPal 页面上同意购买,他/她就会被重定向回您在 SetExpressCheckout API 调用的 RETURNURL 参数中指定的 URL。
  3. 在此退货页面上,您需要调用 GetExpressCheckoutDetails 或(可选)查看 $_GET 数组中的“PayerID”以获取退货 URL。
  4. 获得令牌和 PayerID 后;通过 GetExpressCheckoutDetails 或作为 GET 数据的一部分,调用 DoExpressCheckoutPayment 以完成付款。这可以在同一个退货页面上完成,也可以在买家点击退货页面上的“立即购买”按钮后执行。

另见一般Express Checkout page on X.comGetting Started with Express CheckoutExpress Checkout Integration Guide (PDF)

https://www.x.com/developers/PayPal/documentation-tools/code-sample/78 上也提供了 SetExpressCheckout、GetExpressCheckoutDetails 和 DoExpressCheckoutPayment 的一些示例代码。

希望这会有所帮助!如果有任何不清楚的地方,请告诉我。

【讨论】:

    【解决方案2】:

    Robert 的回答是一个不错的选择 - Express Checkout 无法更改,因为它的服务器到服务器和用户需要您的 API 凭据 - 但如果您想坚持使用网站支付标准 (WPS),请参见下文:

    您担心您的按钮可能会被篡改。是的,如果您网站上的按钮是未托管/未加密的按钮,这是可能的。有一些工具(如篡改数据)在将 HTTP POST 发送到接收地址之前对其进行编辑,或者用户可以下载 HTML 表单并对其进行更改,然后单击按钮(引用 URL 可能不同,但可能被欺骗);未加密的按钮易受攻击的。

    我建议使用以下选项之一来防止这种情况在未来发生:

    1. The button manager API to create dynamic hosted buttons for payments
    2. Create and use hosted buttons
    3. Create and use encrypted website payment buttons

    【讨论】:

      猜你喜欢
      • 2015-08-21
      • 2013-02-24
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-09-09
      • 2012-11-27
      • 1970-01-01
      相关资源
      最近更新 更多