我已阅读并阅读有关PayPal API的链接和文档,但说实话,我对我需要做的事情感到很困惑。
我正在尝试设置一个简单的API,我的网站上的用户点击一个按钮,将他带到PayPal进行付款。付款后,我想要的是PayPal API通过确认更新我的数据库中的记录。
到目前为止,这个过程完全可以单向运行。我使用此代码让用户付款:
<form action="https://www.paypal.com/cgi-bin/webscr" method="post" target="_top">
<input type="hidden" name="cmd" value="_xclick">
<input type="hidden" name="business" value="username@mywebsite.com">
<input type="hidden" name="currency_code" value="USD">
<input type="hidden" name="item_name" value="Gift Certificate">
<input type="hidden" name="item_number" value="RI001CI3481">
<input type="hidden" name="amount" value="313">
<input type="hidden" name="return" value="http://mywebsite.com/paypal/thankyou">
<input type="submit" value="PayPal">
</form>
用户完成交易后,会返回我的“返回”页面。
交易完成后我收到了一封电子邮件。这就是我现在付款的方式。然后我转到PayPal,确认付款,并更新我的数据库记录以标记交易完成。
现在,我需要做些什么才能让PayPal在付款后自动更新我的数据库?如果你能指出一个简单易懂的文件或样本,那就太好了。正如我所说,我已经在线阅读了一些可用的文档,但对于像我这样的人来说,这有点令人困惑。
谢谢, 曼尼
答案 0 :(得分:1)
您在此处显示的内容不使用API。 PayPal Standard是使用PayPal设置付款的基本HTML表单方法。听起来这部分已经为你工作了,所以这很好。
要更新数据库,您需要使用Instant Payment Notification (IPN)。它在技术上仍然不是一个API,但它是一个推送服务,它将有关任何触及您的PayPal帐户的交易的交易数据发布到您在服务器上设置的监听器脚本。
在此脚本中,您可以根据需要处理数据。更新数据库,生成自定义电子邮件通知,点击第三方Web服务等。
GitHub / Packagist上有一些适用于PHP的好IPN模板。 PayPal还提供a very basic starter template for IPN。
答案 1 :(得分:1)
我认为IPN是一个答案,但如果您的服务器或PayPal服务器出现问题,它很容易出现问题并且可能会失败。许多使用IPN的人只有一台服务器,并且深夜执行维护,IPN可能会尝试通知但是因为服务器因维护而关闭而失败。 IPN将无声地失败。更好的选择是使用像Express Checkout这样的API,您可以使用SetExpressCheckout设置页面的外观,设置txn详细信息等,并将客户带到PayPal页面进行检出,然后将它们返回给您现场。此时,您运行DoExpressCheckoutPayment以完成交易,然后当您的响应包含&#34; ACK = Success&#34;您可以拨打GetExpressCheckoutDetails获取比IPN更多的详细信息,如果您没有像IPN那样收到PayPal的回复,也不必担心。您可以像任何API调用一样获得请求/响应,并且您可以记录您的响应,以便能够查看出现问题的时间,以及获取事务的详细信息。通常似乎人们解释EC甚至PayPal文档显示调用setEC,然后getEc,然后执行doEC但我通常调用set,do然后在txn成功后获取。我确定有人会需要/想要调用set,get,do,但对于IPN我们只关心txn成功。此外,除非有txn,否则IPN不会发送。您可以将代码设置为允许遇到错误并采取相应措施的情况,例如当您收到拒绝卡或类似错误时。您可以记录错误,发送电子邮件/短信,登录数据库表等
以下是集成Express Checkout的文档: https://developer.paypal.com/docs/classic/products/express-checkout/ 由于EC可用于订单/身份验证/捕获或简单销售或订阅等,因此此处有大量链接。
以下是SetExpressCheckout的参数列表: https://developer.paypal.com/docs/classic/api/merchant/SetExpressCheckout_API_Operation_NVP/
以下是DoExpressCheckoutPayment的参数列表: https://developer.paypal.com/docs/classic/api/merchant/DoExpressCheckoutPayment_API_Operation_NVP/
以下是GetExpressCheckoutDetails的参数列表: https://developer.paypal.com/docs/classic/api/merchant/GetExpressCheckoutDetails_API_Operation_NVP/
答案 2 :(得分:1)
虽然整体覆盖范围尚未达到IPN的同一水平,但PayPal现在也有Webhooks:https://developer.paypal.com/docs/integration/direct/rest-webhooks-overview/ Webhooks是比IPN更现代的外形,并且在REST SDK中受到支持,希望这会有所帮助。