2013-05-12 110 views
1

我有一个网站提供了导游服务。每次巡演都会根据参与者的价格来定价。在重定向到PayPal之前提交表单

用户必须填写表格,然后服务器必须验证表格,然后向客户和代理办公室发送电子邮件,其中包含预定行程的详细信息(首选日期,多少人等)以及然后将用户重定向到paypal进行支付。

问题是,贝宝提供的立即购买按钮有他自己的形式与一些隐藏的字段,所以在同一页上的两种形式。

我发现树解决方案,但我不知道什么是最好的。

  1. 当用户按下提交,做验证,发送的电子邮件,然后将用户重定向到有一个按钮,说像“执行支付”即提交贝宝形式与送礼者的价格在一个页面隐藏字段

  2. 当用户按下提交按钮时,在服务器上进行ajax调用以验证表单并发送电子邮件,然后成功提交贝宝表单。

  3. 当用户按下提交,做验证,发送的电子邮件,然后服务器提交表单到PayPal

我读了几个小时寻找这一问题的最佳解决方案。什么是最安全,最有效的,不会给用户造成问题。

对不起,我的英语

+0

我认为您最好阅读PayPal商家API,它会变得简单很多 – 2013-05-12 15:37:04

回答

4

假设您对Web开发有一定的了解(因为您正在讨论窗体,会话等),我建议使用PayPal Express Checkout API。你想做的事很常见。以下是我该怎么做:

  1. 用户在第1页的表格中输入旅游信息,并点击“提交”按钮。

  2. 您的服务器接收到该调用,验证表单并调用SetExpressCheckout并将PAYMENTACTION设置为“授权”。这就像“预订酒店房间”或“租车”。您现在只是要求用户授权付款;还没有收费。

  3. 该API会为您返回一个令牌。您将此令牌与旅游信息一起存储在后端数据库中;并将此特定“预订”标记为“收到预订请求”。

  4. 您将用户重定向到paypal.com(并在URL中传递该令牌)以“授权”付款。

  5. 一旦用户完成授权,paypal会将用户重定向到您的网站(“paypal术语”中称为“成功页面”或“返回URL”)。

  6. 您更新数据库条目,状态为“已付款授权”。此时您向用户和代理商发送电子邮件。

  7. 业务代表验证并确保巡回中还有空余房间等,让我们知道用户已全部设置。

  8. 此时您使用该标记调用DoCapture API。这实际上“捕捉”了付款。并且您更新状态为“已处理付款”的数据库条目。您还可以向用户发送另一封电子邮件,确认付款和预订。

此时如果有一个落客(比如用户没有完成授权)的任何阶段,你就会知道,从你的数据库,你可以发送跟进电子邮件给用户。或者,如果他授权,但后来代理说该特定行程中没有空间,则可以再次跟进用户的下一个可用日期,或者撤消付款等。

是的,这意味着它是“更多的编码“...但是你会得到”更大的灵活性“,希望你能够减少掉落。

希望这会有所帮助。以下是快速结帐的文档:https://cms.paypal.com/cms_content/CA/en_US/files/developer/PP_ExpressCheckout_IntegrationGuide.pdf。有Java,PHP等SDK可用于帮助商家快速集成。

+0

谢谢!非常坚实的答案。您认为使用PayPal IPN做更好,并遵循您所描述的逻辑,因为我唯一可用的付款选项是贝宝。所以我想如果有些客户没有贝宝账户通过贝宝网站用信用卡支付。 – Laxmana 2013-05-13 11:25:03

+0

是的,你也可以用IPN做到这一点,但是你可以想象它会有点复杂(就像你提到你必须使用ajax来“记录预订请求”等)。但是,如果你想要转到IPN路由,然后将按钮中的PaymentAction设置为Authorization。然后,您可以通过登录您的PayPal帐户或使用API​​来捕获付款。更多详细信息在这里:https://developer.paypal.com/ webapps/developer/docs/classic/paypal-payments-standard/integration-guide/Appx_websitestandard_htmlvariables/ – 2013-05-13 19:00:31

+0

+1这么好的一个 – 2013-05-14 06:31:24

1

你会创建排序与贝宝形式的所有值确认页面,但使用<input type="hidden" balal /> rather than <input type="text" balal />

尝试向上突破的过程,而不必整个交易坐在即“立即购买”按钮。也许在你的网站上创建一个基本的购物车系统,然后允许用户结账,然后用隐藏的输入将它们的购物车的内容发送到PayPal。

通过这种方式,您可以将用户与预订进行匹配。

+0

我认为可能是最好的解决方案,打破这个过程。这会产生一个小问题。如果用户填写表单并按提交,然后在另一页上,用户不会因为某种原因点击继续,则会在代理办公室发送一封电子邮件,其中包含用户提交的详细信息。 – Laxmana 2013-05-12 15:51:42

+0

我建议使用PayPal的IPN回调(使用return_url字段设置)来确认付款,然后处理数据/电子邮件。只有付款完成后才会发送IPN回拨。 https://www.paypal.com/au/cgi-bin/webscr?cmd=p/acc/ipn-info-outside – 2013-05-12 15:55:19

+0

感谢您的帮助!所以我必须将我的数据存储到会话中?然后,当贝宝重定向到我来处理数据?但是,如果用户付款,然后发生了一些事情,但无法重定向,用户将付费,但代理商不会知道他预订的旅程的详细信息。对不起,是偏执:)编辑 – Laxmana 2013-05-12 16:05:28