2

我正在使用 joomla,并带来了一个允许用户在我的网站上发布列表的组件。该插件使用信用系统来支付列表费用,但信用系统非常复杂和混乱,所以我禁用了它。

我发现 PayPal 提供了一些代码,可以在任何网页上插入“立即购买”按钮 :) 完美,正是我想要的!

我遇到的唯一问题是按钮显示在我的添加列表表单(这也是组件的一部分)上,但只需单击表单的提交按钮即可轻松绕过它,这意味着列表可以在没有的情况下发布不得不付钱。

所以我的问题是:

  1. 一旦用户单击“立即购买”按钮,是否可以将他们重定向回他们刚刚填写的“添加列表”表单?
  2. 在确认付款之前,我可以禁用表单上的提交按钮吗?
  3. PayPal“立即购买”按钮是否返回任何确认流程成功的信息?

我正在使用 html + php :)

我用来制作立即购买按钮的代码是

<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="smyacc@hotmail.com">
    <input type="hidden" name="lc" value="GB">
    <input type="hidden" name="item_name" value="listing-purchase">
    <input type="hidden" name="amount" value="2.99">
    <input type="hidden" name="currency_code" value="GBP">
    <input type="hidden" name="button_subtype" value="services">
    <input type="hidden" name="no_note" value="0">
    <input type="hidden" name="shipping" value="0.00">
    <input type="hidden" name="bn" value="PP-BuyNowBF:btn_buynowCC_LG.gif:NonHostedGuest">
    <input type="image" src="https://www.paypalobjects.com/en_US/GB/i/btn/btn_buynowCC_LG.gif" border="0" name="submit" alt="PayPal – The safer, easier way to pay online.">
    <img alt="" border="0" src="https://www.paypalobjects.com/en_GB/i/scr/pixel.gif" width="1" height="1">
</form>

非常感谢任何帮助!

卢克

4

2 回答 2

3

好消息 - 您的问题的答案基本上是肯定的。您的最终目标绝对是可行的,但为了真正彻底解决您的问题,我们可能需要更多信息。

但是,您的处理方式可能因情况而异,不幸的是,自从我配置这些按钮以来已经有一段时间了,所以请耐心等待;-)

一旦用户点击立即购买按钮,是否可以将他们重定向回他们刚刚填写的添加列表表单?

是的,这是 PayPal 内置在其按钮和流程中的非常标准的功能。您在这里寻找的是 PayPal 所称的“返回 URL”或“自动返回”。这是我在下面引用的更多文档的页面,因此您可以决定退货 URL、自动退货或付款数据传输选项是否最适合您。

买家结账后返回您的网站

基本的结账体验让买家在结账后留在 PayPal 网站上。使用以下技术之一来增强结帐体验,以便买家返回您的网站。

退货网址:如果买家单击 PayPal 付款确认页面上的退货链接或按钮,则允许他们返回您网站上的页面。

要了解更多信息,请参阅第 3 步下的第 5 项:将高级功能添加到“立即购买”按钮或用于显示 PayPal 结帐页面的 HTML 变量。

自动返回:让 PayPal 将客户自动返回到您网站上的页面。

重要提示:PayPal 建议您在开启自动退货时开启支付数据传输。启用自动退货后,PayPal 会将买家从另一个 PayPal 付款确认页面重定向到您的网站,该页面不允许他们打印 PayPal 收据。付款数据传输提供您需要的交易信息,以便买家从您的网站打印收据。

要了解更多信息,请参阅自动返回。

付款数据传输:当您使用退货 URL 或自动退货将客户送回您的网站时,PayPal 会包含有关已完成交易的信息。使用支付数据传输提供的信息在您的网站上显示“谢谢,打印收据”页面。要了解更多信息,请参阅支付数据传输。


问题在确认付款之前,我可以禁用表单上的提交按钮吗?

当然。要在确认付款之前禁用表单上的提交按钮,只需执行以下两项操作之一,直到您可以检测到付款已确认:

  1. 将“禁用”属性添加到提交按钮。这将灰显并禁用提交按钮,使其无法使用。然而,由于按钮仍然是可见的,因此精通网络的最终用户可能只是进入 HTML 并删除禁用的属性,然后继续他的快乐方式。

<button type="submit" disabled>Submit Listing</button>

  1. 隐藏提交按钮。在这种情况下,精通网络的最终用户在技术上仍然可以进入 HTML 并删除样式,以便按钮可见,但看不到它……嗯,你知道,“看不见,心不在焉”

<button type="submit" style="display:none">Submit Listing</button>


问题PayPal“立即购买”按钮是否返回任何确认流程成功的信息?

同样,有几种攻击方法。

方法 1最简单的方法可能是使用 PayPal 返回 URL 和一些 GET 参数来告诉您事情是完成还是取消。有类似取消的返回 URL 和完成的返回 URL。在我链接的同一页面上,PayPal 记录了与此功能相关的按钮的创建:

取消结帐后将买家带到特定网页 (URL)(可选)?

如果您的网站上有一个特殊页面,您希望买家在完成交易前取消结账时返回到该页面,请选中该复选框并在文本框中输入一个 URL。

成功结账后将买家带到特定网页 (URL)(可选)?

如果您的网站上有一个特殊页面,您希望买家在成功完成结账后返回该页面,请选中该复选框并在文本框中输入一个 URL。

方法 2更高级的方法(这也更加万无一失,因为在第一种方法中,黑客可能会尝试猜测您的成功返回 URL)是使用 PayPal 的即时付款通知功能。借助此功能,PayPal 向私有(幕后)URL 发送 POST 请求,该 URL 允许您捕获它发送给您的与付款完成相关的数据。

因此,您的后端会收到有关付款完成的信息,并且您可以通过多种方式(AJAX 请求、要求用户刷新浏览器或向用户发送电子邮件告诉他们回来完成付款等)更新用户的前端,以便他们可以使用现在可见/启用的提交按钮。

通过其 IPN 系统获取有关PayPal 的 notify_url 的详细信息和文档。

祝你好运!

于 2015-11-17T18:17:33.577 回答
0

我想你会发现 PayPal 供应商脚本会做类似的事情。PayPal 设置下的即时付款通知 - 仅在企业帐户中可用。

您可以下载的 php 脚本可以自定义为在付款返回后执行几乎任何您想做的事情。成功购买后,您可以回显提交按钮,这样它就不会出现,除非他们在付款后返回echo '<input type="submit" name="submit">';

在“工具和设置”下“处理我的订单”

然后,您需要在 PayPal 商家界面中进行调整,以将用户返回到您的 IPN 脚本。

于 2015-11-17T17:36:01.187 回答