spring-mvc - 使用Spring MVC的 Paypal 支付

标签 spring-mvc paypal

我在使用 SpringMVC + Paypal 支付时发现我写了多么愚蠢的代码(尽管它工作正常)。我正在使用 Paypal 表单,将金额、项目名称、成功网址、取消网址等数据提交给 Paypal 进行付款。它包含用于发送数据的隐藏字段,众所周知,隐藏字段不再隐藏:)

任何人都可以右键单击表单并使用检查元素并可以更改金额的值。此外,当我完成付款后,我必须单击“返回...”链接以返回我的页面,在该页面上我无法读取 paypal 返回的有关交易的任何数据。

所以我想问一下是否有另一种解决方法,就像在我转到 paypal 页面之前,我使用我的 API key 获得了一些 token ,在付款完成后,paypal 自动重定向回我的 url(不必点击“返回...”),之后我可以在那里验证交易

我试过并能够使用谷歌找到一些代码,但他们都使用自己的帐户付款。

在我的应用程序中,客户在到达 Paypal 页面时必须输入他们的 Paypal 账户信息

急切等待回复,谢谢&问候

如果您需要代码,我也会发布我的表单代码,但我知道使用表单和 session 进行支付并不是一个好的技术

最佳答案

我不知道如何在 Spring MVC 中准确地执行此操作(因为我是面向 PHP 的),但通常此工作流独立于所使用的语言。基本上,您将使用 PayPal API,它在服务器端远离您的用户执行操作。

也就是说,您需要有一些“立即付款”按钮,它将用户重定向到您网站上的另一个页面( Controller /操作,因为您使用的是 MVC),它执行以下操作:

  1. 发起SetExpressCheckout带有付款信息(描述、总金额、货币等)的 API,您还应在其中指定 2 个 URL:returnURL (如果他授权付款,用户将从 PayPal 重定向到哪个页面),以及 cancelURL (如果用户取消授权,他将从 PayPal 重定向到哪个页面)
  2. 作为 PayPal 的成功响应,您将收到一些数据以及 redirectURL您应该将用户重定向到 PayPal 以授权付款的字段
  3. 此时您会将用户重定向到给定的 URL
  4. 用户授权付款后,他将被带到returnURL .

当用户被重定向回您的网站时,PayPal 将附加 token您可以使用 GetExpressCheckoutDetails 进一步使用该参数来验证和完成付款和 DoExpressCheckoutPayment API调用。基本上,一切都发生在服务器端,因此您几乎可以安全地避免在客户端进行篡改。

是的,用户可以修改token一旦他们重定向回您的网站,但这样做没有意义。调用GetExpressCheckoutDetails后API,您可以检查调用是否成功并采取相应措施。

更新

在 PayPal 文档中,您可以找到各种示例和用例,因此我建议您在那里看一看,尤其是:this (如果您想立即处理付款),或 this (或者如果您想稍后处理付款,比如说几天后)。

请注意,PayPal 有两个版本的 API:Classic(较旧,更全面,上手有点困难)和 REST(较新,更容易掌握,但仍缺乏一些高级用例)。但无论如何,我上面提供的链接应该可以帮助您了解 Express Checkout 的工作原理。

关于spring-mvc - 使用Spring MVC的 Paypal 支付,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21191187/

相关文章:

php - 如何知道 PayPal 是否将变量发送到 notify_url

Android:使用替代支付服务

Paypal 动态订阅按钮ipn

paypal - 如何在 PayPal Express Checkout 中动态更改货币并传递其他数据

java - (Maven项目)无法找到或加载主类 "class"

java - 如何确定异常处理程序的响应状态?

spring - Thymeleaf 自定义方言与标准表达

ruby-on-rails - Ruby on Rails 中的 PayPal 集成

java - spring mvc servlet初始化

java - 使用 bean 在 Java Spring 中进行集合合并