Php 在重定向到paypal之前提交表单

Php 在重定向到paypal之前提交表单,php,ajax,forms,paypal,Php,Ajax,Forms,Paypal,我有一个网站提供导游服务。每个旅行团都有自己的价格,这取决于参加的人 用户必须填写表单,然后服务器必须验证表单,然后向客户和代理办公室发送电子邮件,详细说明预订的旅游首选日、人数等,然后将用户重定向到paypal进行支付 问题是paypal提供的Buy now按钮有自己的表单,其中包含一些隐藏字段,因此在同一页面上有两个表单 我找到了树解决方案,但我不知道什么是最好的 当用户按submit时,进行验证,发送电子邮件,然后将用户重定向到一个页面,该页面上有一个类似“继续付款”的按钮,该按钮在隐藏字

我有一个网站提供导游服务。每个旅行团都有自己的价格,这取决于参加的人

用户必须填写表单,然后服务器必须验证表单,然后向客户和代理办公室发送电子邮件,详细说明预订的旅游首选日、人数等,然后将用户重定向到paypal进行支付

问题是paypal提供的Buy now按钮有自己的表单,其中包含一些隐藏字段,因此在同一页面上有两个表单

我找到了树解决方案,但我不知道什么是最好的

当用户按submit时,进行验证,发送电子邮件,然后将用户重定向到一个页面,该页面上有一个类似“继续付款”的按钮,该按钮在隐藏字段中提交paypal表单,并在表单中显示给用户的价格

当用户按下submit按钮时,服务器会发出一个ajax调用,以验证表单并发送电子邮件,然后成功提交paypal表单

当用户按submit时,进行验证,发送电子邮件,然后服务器将表单提交给paypal

我读了几个小时的书,寻找这个问题的最佳解决方案。什么是最安全、最高效且不会给用户带来问题的


对不起,我的英语不好

你会创建一个确认页面,上面有贝宝表单的所有值,但使用的是而不是

试着打破这个过程,而不是把整个交易放在“立即购买”按钮上。也许在你的网站上创建一个基本的购物车系统,然后允许用户结账,然后使用隐藏输入将购物车的内容发送到PayPal


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

您可以创建一种确认页面,其中包含PayPal表单的所有值,但不使用

试着打破这个过程,而不是把整个交易放在“立即购买”按钮上。也许在你的网站上创建一个基本的购物车系统,然后允许用户结账,然后使用隐藏输入将购物车的内容发送到PayPal


这种方式将允许您将用户与预订进行匹配。

假设您对web开发有一定的了解,因为您正在讨论表单、会话等,我建议您使用PayPal Express签出API。你想做的事情很常见。我会这样做:

用户在第1页的表单中输入旅游信息,然后点击提交按钮

您的服务器接收呼叫,验证表单,并在PAYMENTACTION设置为Authorization的情况下调用SetExpressCheckout。这就像预订酒店房间或租车一样。您现在只是要求用户授权付款;还没有起诉他

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

您将用户重定向到paypal.com,并在URL中传递该令牌以授权付款

一旦用户完成授权,paypal会将用户重定向到您的网站成功页面或返回URL,正如paypal术语中所称

您将数据库条目更新为状态“payment authorized”。此时,您将向用户和代理发送电子邮件

代理验证并确保巡演中仍有可用的空间等,并让您知道用户已全部设置好

此时,您将使用该令牌调用DoCapture API。这实际上捕获了付款。然后用状态payment processed更新数据库条目。您还可以向用户发送另一封电子邮件,确认付款和预订

在任何阶段,如果用户从未完成授权,您都可以从数据库中得知,并且您可以向用户发送后续电子邮件。或者,如果他授权,但后来代理商说,在该特定的旅游没有空间,你可以再次跟进用户的下一个可用日期,或取消付款,等等

是的,这意味着它更多的是编码。。。但这样你就有了更大的灵活性,希望你能减少掉球率


希望这有帮助。以下是快速签出的文档:。有Java、PHP等SDK可用于帮助商家快速集成。

假设您对web开发有一定的了解,因为您正在讨论表单、会话等,我建议您使用PayPal Express签出API。你想做的事情很常见。我会这样做:

用户在第1页的表单中输入旅游信息,然后点击提交按钮

您的服务器接收呼叫,验证表单,并在PAYMENTACTION设置为Authorization的情况下调用SetExpressCheckout。这就像预订酒店房间或租车一样。您现在只是要求用户授权付款;还没有起诉他

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

您将用户重定向到paypal.com,并在URL中传递该令牌以授权付款

一旦用户完成授权,paypal会将用户重定向到您的网站成功页面或返回URL,正如paypal术语中所称

您将数据库条目更新为状态“payment authorized”。此时,您将向用户和代理发送电子邮件

代理验证并确保巡演中仍有可用的空间等,并让您知道用户已全部设置好

此时,您将使用该令牌调用DoCapture API。这实际上捕获了付款。然后用状态payment processed更新数据库条目。您还可以向用户发送另一封电子邮件,确认付款和预订

在任何阶段,如果用户从未完成授权,您都可以从数据库中得知,并且您可以向用户发送后续电子邮件。或者,如果他授权,但后来代理商说,在该特定的旅游没有空间,你可以再次跟进用户的下一个可用日期,或取消付款,等等

是的,这意味着它更多的是编码。。。但这样你就有了更大的灵活性,希望你能减少掉球率


希望这有帮助。以下是快速签出的文档:。有Java、PHP等SDK可用于帮助商家快速集成。

我认为您最好阅读PayPal商家API,这将变得非常简单。我认为您最好阅读PayPal商家API,这将变得非常简单。我认为用最好的解决方案来分解流程可能是最好的解决方案。不过,这会产生一个小问题。如果用户填写表单并按submit,然后在另一个页面上,由于某种原因,用户没有单击“继续”,代理办公室将发送一封电子邮件,其中包含用户提交的详细信息。我建议使用PayPal的IPN回调设置,使用return\u url字段确认付款,然后处理数据/电子邮件。IPN回调仅在付款完成后发送。谢谢你的帮助!所以我必须将数据存储到会话中?然后当paypal重定向到我处理数据时?但是,如果用户付费,然后发生了一些事情,并且无法重定向,那么用户将获得付费,但代理我们将不知道他预订的旅游的详细信息。对不起,我有点偏执:谢谢你推荐贝宝的IPN。这是一个很大的帮助,我可以将它与Gautam Tandon的答案结合起来。我认为打破这个过程可能是最好的解决方案。不过,这会产生一个小问题。如果用户填写表单并按submit,然后在另一个页面上,由于某种原因,用户没有单击“继续”,代理办公室将发送一封电子邮件,其中包含用户提交的详细信息。我建议使用PayPal的IPN回调设置,使用return\u url字段确认付款,然后处理数据/电子邮件。IPN回调仅在付款完成后发送。谢谢你的帮助!所以我必须将数据存储到会话中?然后当paypal重定向到我处理数据时?但是,如果用户付费,然后发生了一些事情,并且无法重定向,那么用户将获得付费,但代理我们将不知道他预订的旅游的详细信息。对不起,我有点偏执:谢谢你推荐贝宝的IPN。这是一个很大的帮助,我可以将它与Gautam Tandon的答案结合起来。谢谢!非常可靠的答案。您认为使用PayPal IPN并遵循您描述的逻辑更好吗?因为我唯一可用的支付选项是PayPal。所以我想如果一些客户没有通过paypal网站用信用卡支付的paypal帐户。是的,你也可以用IPN来支付,但是正如你所想象的,这会有点复杂,就像你提到的,你必须使用ajax来记录预订请求,等等。。。但是,如果您确实想使用IPN路由,请将按钮中的PaymentAction设置为Authorization。然后,您可以通过登录paypal帐户或使用API捕获付款。更多细节在这里:谢谢!你可以想象你是多么有帮助!我希望我能投票。谢谢!非常可靠的答案。您认为使用PayPal IPN并遵循您描述的逻辑更好吗?因为我唯一可用的支付选项是PayPal。所以我想如果一些客户没有通过paypal网站用信用卡支付的paypal帐户。是的,你也可以用IPN来支付,但是正如你所想象的,这会有点复杂,就像你提到的,你必须使用ajax来记录预订请求,等等。。。但是,如果您确实想使用IPN路由,请将按钮中的PaymentAction设置为Authorization。然后,您可以通过登录paypal帐户或使用API捕获付款。更多细节在这里:谢谢!你可以想象你是多么有帮助!我希望我能投票。