5

我已经为 Wordpress CMS 构建了一个产品生成和显示插件,现在我正在尝试为结账过程集成某种形式的 PayPal 集成。

我有购物车、产品、运输、总计,所有这些都是我想出来的,我希望有人能指出我将这些信息发送到 PayPal 的最简单方向。我知道这样做的一些方法并不那么安全,而另一些方法会让你像某种表演犬一样跳过篮球。我一直在尝试学习如何使用 cURL,然后如何让它与 PHP 一起工作——它看起来真的有点乱。我现在确实有 cURL 在我的 WAMP 服务器上工作......但是......

有更好的方法还是我应该继续学习 cURL?

我可以格式化数据,但它需要发送到 PayPal,并且不介意使用 JavaScript 执行此操作 - 这不是付费墙,每个订单都由人工检查准确性 - 所以有人在弄乱客户端脚本不会打扰我。我也绝对想将它们发送到 PayPal,我不想存储/处理他们的信用卡信息。但是,如果有 IPN,那就太好了。有人可以指出我正确的方向或向我保证我已经朝着那个方向前进了吗?

非常感谢。

4

2 回答 2

7

这就是我使用所有表单详细信息自动重定向到 PayPal 的方式;

<form action="https://www.paypal.com/cgi-bin/webscr" method="post" id="paypal">

 <input type="hidden" name="cmd" value="_xclick" />
  <input type="hidden" name="cbt" value="Return to example" />
 <input type="hidden" name="business" value="email" />
 <input type="hidden" name="item_name" value="example Purchase" />
 <input type="hidden" name="amount" value="9.99">
 <input type="hidden" name="button_subtype" value="services" />
 <input type="hidden" name="no_shipping" value="1">
 <input type="hidden" name="return" value="URL" />
 <input type="hidden" name="notify_url" value="URL"/>
 <input type="hidden" name="cancel_return" value="URL" />
<input type="hidden" name="currency_code" value="USD"/>
<input type="hidden" name="image_url" value="" />
<input type="hidden" id="custom" name="custom" value="invoice_id to track"/>
 <input type="hidden" class="btn btn-primary" style="width:100%" alt="PayPal - The safer, easier way to pay online!"/>

</form>

对于多个产品,您可以简单地将更多产品添加到表单中,例如;

<input type="hidden" name="item_name_1" value="Item #1">
<input type="hidden" name="amount_1" value="1.00">
<input type="hidden" name="item_name_2" value="Item #2">
<input type="hidden" name="amount_2" value="2.00">

但是,使用这种方法并不是很好

所有数据都需要使用 PHP 生成并输入到页面中,您还需要在 IPN 回调时检查交易以确保其已支付。

<script type="text/javascript">
  function myfunc () {
     var frm = document.getElementById("paypal");
     frm.submit();
  }
  window.onload = myfunc;
</script>
于 2013-03-25T23:42:45.437 回答
3

您可能想要使用新的 PayPal SDK。他们有一套很好的示例代码,包括快速结账和 IPN 的代码。在此处尝试 https://www.x.com/developers/paypal/documentation-tools/paypal-sdk-index 获取用于快速结帐的 SDK。此时,它们应该是 SDK 98 for PHP。

您不必担心 Curl,SDK 会为您处理所有这些。一个典型的调用可能是这样的。

$setECResponse = $paypalService->SetExpressCheckout($setECReq);

这行代码是在示例之后建模的。都是面向对象的。他们为您提供课程。在这种情况下,您填写了一个请求对象,示例准确显示了如何执行;只需使用示例作为您的模板。

听起来您想进行 PayPal Express 结账,这样您就不必处理信用卡或类似的事情。用户被重定向到 PayPal 网站,所有金融交易都在那里进行。用户被重定向回您的站点。然后您有一个页面,用户可以在其中查看订单并在他们批准后单击提交。当用户单击提交时,您调用一个 PayPal API 告诉 PayPal 交易已被批准。然后 PayPal 执行交易并向您发送带有交易 ID 的确认信息。然后,您可以调用 getTransactionDetails 并向客户显示确认信息。您还可以将这些交易详细信息放入数据库中。

以下是您可以为此调用的 API。这些模型与它们提供的示例代码非常接近

$paypalService->SetExpressCheckout($setECReq);

控制转到 PayPal URL,用户在那里浏览几个页面。控制权返回给您。

您的订单审核页面 $paypalService->GetExpressCheckoutDetails($getExpressCheckoutReq);

您的订单确认页面

$paypalService->GetExpressCheckoutDetails($getECReq);

$paypalService->DoExpressCheckoutPayment($DoECReq);

告诉 PayPal 进行交易。

$paypalService->GetTransactionDetails($request);

在这里,您可以将交易详细信息放入数据库。您还可以向自己发送一封包含所有详细信息的邮件,这样您就可以知道何时发生交易。

IPN 可能有点棘手。他们提供了一个示例 IPN 侦听器,这将有所帮助。您需要在 PayPal 网站上设置您的侦听器 URL。您还需要设置 SSL 证书。

SDK 是相当新的,但 PayPal 正在开发一种更新的做事方式,developer.paypal.com。它是在上个月左右才出来的。你可能也想调查一下。

于 2013-03-26T07:30:54.420 回答