我为Wordpress CMS构建了一个产品生成和显示插件,现在我正在尝试将某种形式的PayPal集成集成到结帐流程中。
我有购物车,产品,运费,总数,以及我想到的一切,我希望有人能指出我向PayPal发送此信息的最简单方向。我知道这样做的一些方法并不安全,而另一些方法则会让你像某种表演犬一样跳过篮球。我一直在努力学习如何使用cURL然后如何让它与PHP一起工作 - 这看起来有点混乱。我现在有cURL在我的WAMP服务器上工作......但是..
有更好的方法还是我应该继续学习cURL?
我可以格式化数据但是它需要发送给PayPal并且不介意用JavaScript做这件事 - 这不是支付墙,并且每个订单都由人检查准确性 - 所以有人搞乱了客户端脚本不会打扰我。我也肯定想把它们发送到PayPal,我不想存储/处理他们的信用卡信息。然而,拥有IPN会很好。有人能指出我正确的方向或向我保证我已经走向了这个方向吗?
非常感谢。
答案 0 :(得分: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>
答案 1 :(得分:3)
您可能想要使用新的PayPal SDK。他们有一套很好的示例代码, 包括快速结账和IPN的代码。 试试这里 https://www.x.com/developers/paypal/documentation-tools/paypal-sdk-index 获取用于Express结帐的SDK。在这 时间,他们应该在SDK 98 for PHP。
你不必担心卷曲, SDK会为您完成所有这些工作。 一个典型的电话可能是这样的。
$setECResponse = $paypalService->SetExpressCheckout($setECReq);
这行代码是在样本之后建模的。它的 所有面向对象。他们为您提供课程。 在这种情况下,您填写了一个请求对象, 这些例子说明了如何做到这一点;只是使用 样品作为模板。
听起来你想做PayPal Express结账, 这样你就不必处理信用卡或其他任何东西 像那样。用户被重定向到PayPal网站 所有的金融交易都在那里发生。该 用户被重定向回您的网站。然后你有一个 用户可以查看订单并单击的页面 如果他们批准,请提交。当用户点击提交时, 你打电话给PayPal API告诉PayPal该交易 被批准。 PayPal然后执行交易和 向您发送带有交易ID的确认信息。 然后,您可以调用getTransactionDetails并显示 确认给客户。你可以另外放 那些交易细节到数据库中。
以下是您可以为此调用的API。这些 与他们提供的示例代码密切建模
$paypalService->SetExpressCheckout($setECReq);
控制转到PayPal网址,用户转到 通过几页那里。控制权返回给你。
您的订单审核页面 $ paypalService-&GT; GetExpressCheckoutDetails($ getExpressCheckoutReq);
您的订单确认页
$paypalService->GetExpressCheckoutDetails($getECReq);
$paypalService->DoExpressCheckoutPayment($DoECReq);
告诉PayPal进行交易。
$paypalService->GetTransactionDetails($request);
您可以在此处将交易详情放入数据库中。 您也可以给自己发送包含所有细节的邮件, 这样,只要交易发生,你就会知道。
IPN可能有点棘手。有一个示例IPN侦听器 他们提供的,这将有所帮助。你需要 在PayPal网站上设置您的侦听器URL。你会 还需要设置SSL证书。
SDK是相当新的,但PayPal正在开发一个偶数 更新的做事方式,developer.paypal.com。它刚刚问世 在过去一个月左右。你可能也想研究一下。