动态加密的贝宝按钮?

Posted

技术标签:

【中文标题】动态加密的贝宝按钮?【英文标题】:Dynamic encrypted paypal button? 【发布时间】:2016-06-15 19:26:24 【问题描述】:

所以我正在创建一个需要订阅 PayPal 按钮的网站。我目前正在使用paypal button js,但它非常不安全,人们可以更改他们支付的金额。所以我将需要使用加密按钮,但我不确定如何实现这一点并且仍然能够根据用户更改价格。我需要这样做的原因是用户可以选择不同数量的东西。假设他们可以选择 1 到 50 点之间的任何值来改变价格,因此如果 1 点是 1 美元,而用户选择 24,则订阅按钮金额必须是每月 24 美元。下面是创建非加密按钮的当前代码。作为一个附带问题,如果有人碰巧知道将您的商家 ID 保密是否重要。如果是这样,我该怎么做?

	$("#paypal-button").html(
		'<script src="js/paypal-button.min.js?merchant=[Merchant ID]"' +
			'data-button="subscribe"' +
			'data-name="Custom Howloop Subscription"' +
			'data-amount="' + roundTotal + '"' +
			'data-recurrence="1"' +
			'data-period="M"' +
			'async' +
		'> </script>'
	);

【问题讨论】:

你应该检查另一端支付的金额,这是唯一可靠的方法 【参考方案1】:

很久以前我试图做类似的事情。

据我所知,没有办法做到这一点。您将无法简单地更改加密按钮的值,如果未加密,用户可以更改它并基本上支付任何费用。

如果您希望能够安全且动态地更改值,我建议您查看他们的 API/Express Checkout。这就是我所做的,我真的很高兴我做到了。

您可以在将所有内容转发到 PayPal 之前检查所有内容,我从未遇到过这方面的问题(我通过项目 ID 并查询我的数据库以获取成本/等并应用其他检查来阻止各种问题.)。您可以毫无问题地完成并应用您需要对价格进行的任何计算。

否则,我能想到的唯一方法是为不同的价格设置多个加密按钮。但这不是很有趣,也不是最佳解决方案。

编辑:现在我不在手机上,这里是Express Checkout Getting Started Guide.的链接

另外,我认为您不必担心您的商家 ID 会被看到。它用于处理付款,我相信它可以在交易细节中看到。

【讨论】:

你知道我不久前查看了 API/Express Checkout,也许我做错了(这很可能)但无论如何我使用 ajax 来发布沙盒端点,我是收到错误,因为它位于不同的域中。这是正确的做法吗? 老实说,我不完全确定您是如何尝试的。但我可以简要介绍一下流程/过程。您声明 api 凭据、返回 url、取消 url、paypal 模式(实时/沙盒)和其他一些东西。数据被传递到您的处理脚本,您将在其中设置价格等变量(基本上您将在其中查询数据库以获取正确的数据)。数据/用户被定向到 PayPal 以进行付款。完成后,它们将被重定向回声明的返回 URL,您可以在其中存储数据/显示已完成的页面。 其中的作用(令牌、请求等)比我所说的要多,但至少它让您对流程的工作原理有了非常基本的了解。此外,您可能会注意到有一个 IPN 和 ExpressCheckout。它们是不同的,您可以同时使用两者,或者其中一种。例如,ExpressCheckout 会将电子支票标记为待处理,因为它在处理时处于待处理状态。一旦付款更新/更改,IPN 将收到通知,您可以相应地更新数据库。【参考方案2】:

如果不在 PayPal 端托管按钮详细信息,则无法执行此操作。这也会发生在老式的 PayPal 表单集成中,例如,任何人都可以进入 Chrome 的 Devtools 并更改 html 表单变量。作为一种解决方法,您可以实现一个托管订阅按钮并让用户更改订阅数量。如果您的价格与点数成线性关系,那么它会起作用。

【讨论】:

【参考方案3】:

是的,有办法!不要听那些反对者的话,我最近成功地对动态创建的购物车信息实施了加密,这些信息被使用 php 注入到一个空表单中。我真的打算创建一个完整的教程,因为这些信息似乎很少见(我想知道为什么 Paypal 没有这方面的标准教程)。我记得因为这个问题而有几天的压力,差不多一个月后,我偶然发现了这里提供的教程:https://www.stellarwebsolutions.com/en/articles/paypal_button_encryption_php.php

经过一些小的修改后,我能够使用 PHP 代码使用我生成的私钥和公共证书来加密数据(确保你的网站上有 HTTPS)。然后贝宝就能够成功解密信息! (哦,男孩,你打赌我跳了快乐的舞)

确保数据在付款后仅使用 IPN 才有效是一种非常麻烦的方法,因为您可以通过自定义加密来避免大多数篡改。无论如何,直到我全力以赴并创建一个视频教程,祝你好运 - 回头看,我发现这个过程真的很简单!

【讨论】:

我会小心的,这篇文章的日期是 2010 年。 好像没问题,而且这种情况下加密总比没有好 感谢您的回复和链接,我将查看它们并尝试实施它确保您在制作视频时发布指向您的视频的链接我很乐意看到它.

以上是关于动态加密的贝宝按钮?的主要内容,如果未能解决你的问题,请参考以下文章

加密贝宝立即购买按钮 html 表单

对测试我的贝宝订阅按钮感到困惑

“立即付款”按钮集成的贝宝选项 (PHP)

简单的贝宝按钮订阅会员

react.js 的贝宝按钮

没有按钮的贝宝订阅方法 - Javascript/Angular