如何制作 SagePay BuyNow 按钮?

2024-05-11

通过 PayPal,我可以非常轻松地创建一个 BuyNow 按钮,其中包含我的商家信息、价格、税金、运费等。这在 SagePay 中可行吗?


所需的系统称为 SagePay Form,与 PayPal 的 BuyNow 按钮 + PDT 流程相似。首先,您需要创建一个 FORM,如下所示:

<form action="https://live.sagepay.com/gateway/service/vspform-register.vsp" method="POST" id="SagePayForm" name="SagePayForm">
    <input type="hidden" name="VPSProtocol" value="2.23" />
    <input type="hidden" name="TxType" value="PAYMENT" />
    <input type="hidden" name="Vendor" value="<?= $YOUR_VENDOR_LOGIN_NAME ?>" />
    <input type="hidden" name="Crypt" value="<?= $PAYMENT_CRYPT ?>">    
    <input type="image" src="images/buynow-sagepay.png" />
</form>

(可以在此处将实时 URL 与测试 URL 交换:https://test.sagepay.com/gateway/service/vspform-register.vsp https://test.sagepay.com/gateway/service/vspform-register.vsp)

至于 $PAYMENT_CRYPT,您必须首先创建一个字符串,如下所示:

VendorTxCode=406227821909
&Amount=32.00
&Currency=USD
&Description=1 ACME Widget
&SuccessURL=http://example.com/success.php
&FailureURL=http://example.com/fail.php
&BillingSurname=Smith
&BillingFirstnames=John
&BillingAddress1=123 Main Street
&BillingCity=Anywhere
&BillingPostCode=29555
&BillingCountry=USA
&DeliverySurname=Smith
&DeliveryFirstnames=John
&DeliverAddress1=123 Main Street
&DeliveryCity=Anywhere
&DeliveryPostCode=29555
&DeliveryCountry=USA

为什么他们需要这些信息而 PayPal 不需要,这有点愚蠢,但是哦,好吧。文档明确表示,如果他们没有收到合法的值,例如验证该城市和国家的真实邮政编码,并且也用于问题争议仲裁,那么事情就会出错。

请注意,在我的示例中,没有像 PP 那样的税收或运费明细,因此您需要在显示此立即购买按钮之前根据需要显示该信息,或者可能在您的确认页面或您发送的确认电子邮件上显示。他们确实有一个“&Basket=”参数,可以在其中指定税费,但它对于您自己可以在表单页面上显示的内容来说是多余的,而且不是必需的。因此,&Amount 值必须是总值,而不是净值。也没有数量值(可以使用 &Basket 参数来指定)。您很可能会发现 &Basket 参数对于您在结账过程中已可以在自己的表单上显示的内容来说是多余的。所以,这就是为什么我的例子没有包含它。

至于 VendorTxCode,您可以创建该代码,以便您可以将订单跟踪回相应的客户。

然后,使用 SagePay 提供的加密密码,使用 XOR + Base64 编码对 $PAYMENT_CRYPT 进行加密。他们有一个 AES + Binhex 加密选项,但它有点过分了,你的服务器必须启用 mcrypt 库。一些共享托管计划STILL还没有启用!

他们提供了一个 XOR 示例,但这是您在计算机科学课程中无数次看到的典型示例,其中您重复循环访问密码的每个 ASCII 代码和数据的每个 ASCII 代码,并取另一个的补码位(XOR 过程) 。完成后,通过 Base64 编码进行传输以实现安全的 POST 传输。 Base64 编码使用 PHP 的内置函数。

由此产生的响应更像是 PayPal 的 PDT 流程,而不是 PayPal 的 IPN 流程。他们确实将某人定向到 success.php 和 failed.php 以及通过 GET 的加密 URL 响应,您可以对其进行解密和解析(base64 解码 + XOR),但困难在于客户可以在等待页面打开之前关闭表单。重定向。在这种情况下,人们会在 SagePay 的控制面板中看到这一点,并且必须为客户手动完成交易。

在 success.php 和 failed.php 上,您想做什么取决于您。一旦查询字符串 &crypt 参数未加密,您就可以通过查看 Status 参数是否为“OK”来解析事务是否完成。

请注意,您不必直接访问 success.php。您可以将其设置为 success.php?custom=value ,以传递您可以解析的交易的额外信息。他们的代码会自动解决这个问题,并在最后添加 &crypt= 参数。 fail.php 也是如此。

他们确实有办法让 SagePay 向客户和供应商发送电子邮件,但这确实有点过分了,因为您可以在执行订单时使用 mail() 语句在自己的 PHP 代码中执行相同的操作。

参考:请注意,以下文档 URL 将来可能会更改。要获取该文档的最新版本,请访问该网站,注册为开发人员(过程需要 1 分钟),然后搜索“表单协议”。

http://www.sagepay.com/sites/default/files/downloads/sagepayformprotocolandintegrationguidelines_0.pdf http://www.sagepay.com/sites/default/files/downloads/sagepayformprotocolandintegrationguidelines_0.pdf

编辑:新链接(2017 年 10 月 25 日) - https://www.sagepay.co.uk/file/25041/download-document/FORM_Integration_and_Protocol_Guidelines_270815.pdf https://www.sagepay.co.uk/file/25041/download-document/FORM_Integration_and_Protocol_Guidelines_270815.pdf

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何制作 SagePay BuyNow 按钮? 的相关文章

  • Stripe - 如何将小数金额发送到 API 进行付款?

    我正在将电子商务平台从使用 SagePay 迁移到 Stripe 文档显示使用amount的图1099和货币gbp https stripe com docs payments accept a payment web create pay
  • 寻找一个与 PayPal 兼容的轻量级 ASP.net 购物车 [关闭]

    Closed 这个问题正在寻求书籍 工具 软件库等的推荐 不满足堆栈溢出指南 help closed questions 目前不接受答案 我目前正在开发一个简单的电子商务网站 我正在寻找一个轻量级非托管 ASP net 购物车解决方案 需要
  • 在 woocommerce 结帐页面自定义字段中添加日期

    我正在尝试在 woocommerce 结帐页面中添加自定义选择选项 它正在添加额外的字段 但我想在选择选项的值中添加日期 有什么解决办法吗 这是我在主题 function php 中添加的代码 today new DateTime tomo
  • PHP 中的 AES/CBC/PKCS#5 加密算法

    我正在尝试使用 表单集成 方法将 SagePay 支付网关集成到网站中 基本上 表单集成方法的工作原理是在网页中插入表单 并在选择表单的 提交 按钮时将信息发布到 SagePay 的服务器 在将信息发送到 SagePay 的服务器之前 必须
  • 哪个 API 允许我将 PayPal 保存为可重复使用的付款类型

    我目前正在开展一个项目 将 PayPal 实施为类似于保存的信用卡的可重复使用的付款选项 我在类似的网站上看到过这样做http www fab com http www fab com它允许用户登录 PayPal 一次 然后存储他们的付款信
  • 除应用内支付之外的 iOS 支付网关

    我有一个iPhone应用程序 其中有在线支付功能 对于付款 我想使用我自己的网站上的支付网关 这样我就可以将用户重定向到网站进行付款 谁能帮我 苹果会允许这个功能吗 任何帮助或建议将不胜感激 提前致谢 苹果允许第三方支付网关系统 Strip
  • org.eclipse.debug.core.DebugException:com.sun.jdi.ClassNotLoadedException:检索数组的组件类型时发生类型未加载

    我正在开发AuthSample示例使用chase paymentech Java SDK命名为 PaymentechSDK jar version 7 4 0 当我尝试执行示例代码时 遇到以下错误 我不明白有什么问题 有人可以指导我吗 FY
  • Magento 获取 phtml 文件上使用的布局

    有没有办法可以获取某个 phtml 文件使用的布局 就我而言 我想检查catalog list phtml 上使用的布局 我使用该信息对产品图像网格大小进行条件 if 我试着用谷歌搜索一下 但所有的结果只是解释有关 xml 布局的事情 我得
  • sageapy 中需要相关安全密钥

    我已完成交易 然后 sagepay 服务器返回以下值的响应 VendorTxCode gt 14 10 31 10 49 36 196489754 VPSTxId gt AADB57CA B7BF 1A70 682F 60303C2AF7E
  • Magento - 致命错误:类名必须是有效的对象或字符串

    我在安装 Magento 时遇到问题 希望有人能帮助我解决 当我访问该网站时 我突然开始收到以下错误消息 Fatal error Class name must be a valid object or a string in app co
  • 产品和报价项目之间的概念区别是什么

    涉及班级 Mage Sales Model Quote Item and 法师 目录 型号 产品 我通过监听事件 在购物车添加上 得到了它们 我正在尝试从外部来源更新产品的数量信息 到目前为止 我的代码仅基于产品信息 我不确定这是否正确 报
  • 如何在 Magento 中更改订单起始编号

    有没有办法在 Magento 中更改订单起始编号而不更改已有的订单号 我只想为所有新订单设置 170000xxxx Thanks Look in eav entity store并找到increment last id 更新此号码 确保en
  • Firebase 支付网关?

    我目前正在评估 Firebase 是否适合我正在制作的应用程序 我发现的唯一潜在的症结是接受付款 目前有哪些选项 Firebase 是一个实时数据存储 专注于闪电般快速 可扩展的解决方案 用于同时在数百到数百万客户端之间共享数据 它内部不提
  • 产品动态折扣

    在现实世界中 您购买的产品的折扣非常有趣 例如 卖家通过以下方式为其产品提供折扣 购买一份数量不会有折扣 购买 2 个他提供 10 折扣 购买 4 和 5 折扣为 20 6 日及以后 22 在电子商务应用程序中实现此目的的最佳方法是什么 取
  • PayPal Rest API for Payments 在沙箱中返回 NULL

    我有一个 PayPal 沙盒帐户 我可以在 PHP 上使用curl 通过 api 检索令牌 但是处理测试卡只会返回 null 有人看到代码有问题吗 这是 PayPal 沙盒的已知问题吗 下面代码片段中的客户端是伪造的 但是 如前所述 使用我
  • 即使 Braintree 中出现错误, result.credit_card_verification 也会返回 nil

    我正在使用 Braintree 进行付款处理 并且我正在尝试获取处理器响应代码 https www braintreepayments com docs ruby reference processor responses来自 Braint
  • 无法识别智能卡上的 AFL

    我正在努力使用我陷入困境的 AID 列表从 VISA 例如 PAN 到期日 信用卡获取有用数据 我已经能够手动访问所有数据 使用下一个教程 http www openscdp org scripts tutorial emv reademv
  • 如何更好地为第三方卖家集成Paypal“立即购买”按钮?

    我正在努力寻找最好的整合方式Paypal 立即购买 按钮在我的网站上 但我对所有各种 Paypal 集成技术 托管按钮 动态按钮 IPN PDT 和其他各种 API 感到非常困惑 我想整合更好 最简单的解决方案满足我的需要 也是secure
  • Android 应用内购买

    我正在尝试开发一个停车应用程序 用户可以在其中为停车时间付费 我浏览了这份文件应用内产品 http developer android com google play billing billing overview html produc
  • SagePay 是否有其模拟器响应可以作为服务器的 IP 范围列表? [关闭]

    Closed 这个问题不符合堆栈溢出指南 help closed questions 目前不接受答案 我设置了一个测试 暂存站点 但对该站点的访问受到 IP 地址的限制 这意味着 虽然我可以很好地发送到 SagePay 模拟器 但返回响应会

随机推荐

  • 通过过滤对 Pyspark Dataframe 进行分组

    我有一个数据框如下 cust id req req met 1 r1 1 1 r2 0 1 r2 1 2 r1 1 3 r1 1 3 r2 1 4 r1 0 5 r1 1 5 r2 0 5 r1 1 我必须观察客户 看看他们有多少要求 看看
  • Cocoa Accessibility API,我可以单击后台窗口而不激活它吗?

    我一直在寻找解决这个问题的方法 所以我想我应该寻找比我更伟大的头脑 我正在开发一个 Cocoa 应用程序 它使用 Accessibility API 来操作另一个程序 它是一个热键应用程序 我控制的应用程序通常会打开多个窗口 其中一些窗口隐
  • 在 Play 中将电子邮件模板作为 scala 模板?

    在游戏 1 2 4 中 您可以使用标准模板机制和语法发送复杂的动态电子邮件 link http www playframework org documentation 1 2 4 emails 虽然我没用过 但看起来真的很酷 是个邮件插件
  • 展开 std::reference_wrapper 的成本

    Given include
  • 构建链代码时 ltdl.h 未找到错误

    我正在尝试使用构建链码go build 当我运行 Go build 命令时它的报告 hyperledger fabric vendor github com miekg pkcs11 pkcs11 g o 29 18 fatal error
  • 是否可以在一次 git 调用中取消设置多个 git 配置值,而不是逐一取消设置?

    我需要自动取消全局 git 配置文件中的许多别名 diff difftool merge mergetool 设置 现在我正在打电话git config global unset对于他们每个人来说 这有点慢 嗯 相对而言 大约需要 3 秒
  • 确定 R 中的组是否重复某个值

    我有一个包含许多列和行的数据 我想通过创建新的逻辑变量来确定某个组的值是否重复 相同 所以我的数据如下所示 v0 lt c 1 2 3 4 5 6 7 8 9 v1 lt c a b a c e c b b e v2 lt c R NA R
  • Yii2 Composer 管理 Bower 和 Bower-vendor 中的包

    我已经使用 yii2 一段时间了 但我不知道如何管理我的包 在这方面我有两个问题 当我将包添加到 yii2 时 它会在vendor bower bower assets 中下载 当 yii2 发布包时 它会在vendor bower下查找资
  • 基础设施 - 同步和异步接口和实现? [关闭]

    Closed 这个问题是基于意见的 help closed questions 目前不接受答案 在实现库 基础设施时 并且该 API 的用户希望同步和异步使用代码 我读到混合同步和异步并不是一个好主意 例如 同步实现包括等待异步实现 显然
  • MySQL-分割字符串

    我的问题与这篇文章类似 MySQL 中的 反向 GROUP CONCAT https stackoverflow com questions 17308669 reverse group concat in mysql 然而 而不是反转gr
  • C - 获取外部IP地址

    我需要通过 C C 调用获取我的公共 IP 地址 我知道作为替代方案 我可以从 http whatismyip akamai com 等外部链接获取 我写了一个示例来获取外部IP地址 但我的程序没有返回外部 IP 地址 我正在获取内部 IP
  • 为什么代码分析不警告 NotImplementedException?

    我非常确定 Visual Studio Code Analysis 的早期版本会警告有关 NotImplementedException 的使用 即包含此异常的任何成员 throw new NotImplementedException 会
  • 进程名称长度的最大允许限制是多少?

    进程名称允许的最大长度是多少 我正在读取进程名称 proc pid stat文件 我想知道我需要的最大缓冲区 我很确定有一个可配置的限制 但就是找不到它在哪里 根据man 2 prctl http man7 org linux man pa
  • Ansible 测试变量以什么开头

    我需要能够安装 MySQL 库 Python 有 1 个用于 v2 的包和另一个用于 v3 的包 我需要能够告诉 Ansible 要安装哪个包 name Ensure MySQL python is installed pip name M
  • Java:将秒转换为分钟、小时和天[重复]

    这个问题在这里已经有答案了 任务是 输出应如下所示 最好回显输入 您输入了 500 000 秒 即 5 天 18 小时 53 分钟 20 秒 5天18 53 20小时 我该怎么做呢 最容易理解和做到的方法是什么 讲师还说 没有硬编码 我不太
  • IE9支持CSS线性渐变吗?

    有了 Chrome Safari 和 Firefox webkit gradient and moz linear gradient特性 我怎样才能用 IE9 做同样的事情呢 最好的跨浏览器解决方案是 background fff back
  • SSHKit::Runner::ExecuteError:以 root@co 身份执行时出现异常:Jenkins Job 的 shell 脚本中的用户 root@ 身份验证失败

    我正在尝试从 Jenkins Job 运行 cap 部署命令 它不断抛出以下错误 我也在部署服务器中添加了 ssh 密钥 我能够从配置 Jenkins 的服务器成功部署 但是当我运行该作业时 会引发身份验证错误 这对我来说真的很重要 有人可
  • 猫头鹰轮播,制作自定义导航

    所以我有一个包含三张图像的猫头鹰旋转木马 我还在左侧和右侧添加了自定义导航箭头 png 图像 然而 这些箭头目前是无用的 因为我找不到一种方法来真正让它们在我的猫头鹰旋转木马的图像之间切换 我无休止地寻找 找不到解决方案 有任何想法吗 您需
  • 如何在notepad++中格式化JSON

    我想在记事本 中格式化JSON字符串 请指导我该怎么做 我研究了这个解决方案记事本 JSON 格式 https stackoverflow com questions 1560464 how to reformat json in note
  • 如何制作 SagePay BuyNow 按钮?

    通过 PayPal 我可以非常轻松地创建一个 BuyNow 按钮 其中包含我的商家信息 价格 税金 运费等 这在 SagePay 中可行吗 所需的系统称为 SagePay Form 与 PayPal 的 BuyNow 按钮 PDT 流程相似