2013-03-25 127 views
5

我建立了一个产品生成和显示插件WordPress的CMS,现在我试图整合某种形式的贝宝集成结账过程。更简单的方式来整合PayPal快速结账?

我有购物车,产品,运费,总计等等,我希望有人能指出我向PayPal发送这些信息的最简单方向。我知道一些做这种做法的方法不够安全,而其他方法则会让你像某种炫耀狗一样跳跃。我一直在努力学习如何使用cURL,然后如何让它与PHP一起工作 - 它确实看起来有点乱。我现在已经卷曲工作我WAMP的服务器上......但..

有没有更好的办法,或者我应该继续学习卷曲?

我可以格式化数据,但它需要发送到PayPal,并不介意使用JavaScript来做这件事 - 这不是一个付费墙,每个订单都由人类检查准确性 - 所以有人搞乱了客户端脚本不会打扰我。我也绝对想把它们发送到PayPal,我不想存储/处理他们的信用卡信息。但是,拥有IPN会很好。有人能指出我的方向是正确的吗?还是向我保证我已经是这样了?

非常感谢。

回答

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> 
+0

感谢您的快速回复。这是否适用于整个购物车的产品,或者一次只能购买一个产品?你能否提供有关你如何处理IPN的信息? – Jon 2013-03-25 23:47:58

+0

编辑显示多个产品的使用。 – 2013-03-25 23:51:24

+0

再次感谢,生成此表单所需的HTML以发送给PayPal应该不是问题。它看起来像是唯一缺失的拼图将会找出并处理IPN。 – Jon 2013-03-26 00:03:50

3

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

您将不必担心卷曲, 的SDK需要照顾所有的给你。 典型的呼叫可能是这样的。

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

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

这听起来像你想做PayPal快速结账, 这样你就不必处理信用卡或任何 那样。用户被重定向到PayPal网站 ,并且所有金融交易都发生在那里。 用户被重定向回您的网站。然后你有一个 页面,用户可以查看订单,如果他们批准,点击 提交。当用户点击提交, 您调用贝宝API告诉贝宝,交易 被批准。 PayPal然后执行交易,并且 发回您带有交易ID的确认。 然后,您可以调用getTransactionDetails并向客户显示 确认。您还可以将这些交易细节 放入数据库中。

以下是您可以为此调用的API。这些 是仿照示例代码,它们提供

$paypalService->SetExpressCheckout($setECReq); 

控制进入贝宝URL,并且用户 通过几页出现。控制权返回给你。

您的订单评论页 $ paypalService-> GetExpressCheckoutDetails($ getExpressCheckoutReq);

订单确认页面

$paypalService->GetExpressCheckoutDetails($getECReq); 

$paypalService->DoExpressCheckoutPayment($DoECReq); 

告诉贝宝做交易。

$paypalService->GetTransactionDetails($request); 

在这里,你可以把交易信息到数据库中。 你也可以给自己发一封包含所有细节的邮件, 这样你就可以知道每次交易发生的时间。

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

SDKs相当新颖,但PayPal正在开发更新的方式,即开发者版.paypal.com。它在上个月左右刚出来 。你可能也想看看。