如何制作 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 按钮? 的相关文章

  • dataLayer.push后数据什么时候发送到google

    我有一个单页电子商务应用程序 需要设置谷歌电子商务渠道 我的应用程序在跟踪代码管理器数据层中设置漏斗步骤 文档中没有任何内容表明数据层实际发送到 Google 跟踪代码管理器的时间 window dataLayer 使用以下内容开始页面 e
  • 寻找一个与 PayPal 兼容的轻量级 ASP.net 购物车 [关闭]

    Closed 这个问题正在寻求书籍 工具 软件库等的推荐 不满足堆栈溢出指南 help closed questions 目前不接受答案 我目前正在开发一个简单的电子商务网站 我正在寻找一个轻量级非托管 ASP net 购物车解决方案 需要
  • 使用 ColdFusion 加密 SagePay 表单

    我正在尝试使用 ColdFusion 10 遵循 SagePay 3 00 中加密字段的规范 要求是使用提供的密码作为密钥和初始化向量 在 CBC 模式下使用 PKCS 5 填充将字符串加密为 AES 块大小 128 位 并将结果编码为十六
  • 为在线商店生成订单号的最佳方法?

    我的在线商店中的每个订单都有一个面向用户的订单号 我想知道生成它们的最佳方法 标准包括 Short 通过电话很容易说出来 例如 m 和 n 是不明确的 Unique 校验和 矫枉过正 有用吗 Edit 不会透露订单总数 客户可能会因为下第三
  • 为什么 jQuery 不提交此表单? (或者我做错了什么?:-p)

    HTML
  • 使用亚马逊API获取产品详细信息

    我有以下代码来输出来自亚马逊的商品列表 但我不确定如何访问特定产品 带有 Summery 评论等 任何帮助 将不胜感激
  • 在 woocommerce 结帐页面自定义字段中添加日期

    我正在尝试在 woocommerce 结帐页面中添加自定义选择选项 它正在添加额外的字段 但我想在选择选项的值中添加日期 有什么解决办法吗 这是我在主题 function php 中添加的代码 today new DateTime tomo
  • 如何获得 Java 软件商业许可? [关闭]

    Closed 这个问题需要多问focused help closed questions 目前不接受答案 我用 Java 编写了一个基于桌面的会计软件 我想放置密钥或许可证或其他类型的安全措施来防止客户端重新分发软件 我只是想知道该怎么办
  • 哪个 API 允许我将 PayPal 保存为可重复使用的付款类型

    我目前正在开展一个项目 将 PayPal 实施为类似于保存的信用卡的可重复使用的付款选项 我在类似的网站上看到过这样做http www fab com http www fab com它允许用户登录 PayPal 一次 然后存储他们的付款信
  • 是否有标准的电子商务数据库架构将折扣/税收/礼券应用于产品?

    需要一个良好且灵活的数据库模式来说明电子商务产品及其费率管理 我同意克里斯 罗伯茨的观点 操作系统商务 http www oscommerce com community contributions 3853 page 23是一个很好的起点
  • 任意金额、任意时间的定期付款?

    我们希望找到一个支付提供商 可以让我们做类似于 Hailo 的事情 即 用户注册并向我们提供他们的信用卡详细信息 授权我们向他们的帐户收费 他们只需要这样做once 在 Hailo 的例子中 用户可以随时乘坐出租车并收取任意金额的费用 在合
  • Magento - 致命错误:类名必须是有效的对象或字符串

    我在安装 Magento 时遇到问题 希望有人能帮助我解决 当我访问该网站时 我突然开始收到以下错误消息 Fatal error Class name must be a valid object or a string in app co
  • 使用表格在单独的行中显示 PayPal 项目名称/描述

    我正在使用基本标准免费帐户和标准表单 点击 选项处理 PayPal Express Checkout 的简单表单 当传递项目名称或描述时 我知道您的长度限制为 144 个字符 但我希望将标题或描述中的信息放在不同的行中 以便在 PayPal
  • 将 Stripe webhook 与 Rails 结合使用

    我已经按照 Ryan Bates 的 Railscast http railscasts com episodes 288 billing with stripe 成功构建了一个 Rails 应用程序 但是 在 Railscast 中他没有
  • 是否有不是完整网站的卡片/目录应用程序?

    我遇到的每个解决方案似乎都是一个完整的商店 有太多的选项和太多的功能 我可以编写自己的购物车来从前端获得我需要的最小功能 我只是想减少编写复杂后端的时间 我真正想要的是提供产品目录 订单管理等后端功能 同时提供流畅一致的 API 来访问完全
  • 我应该使用排队系统来处理付款吗?

    我在用着Slim https www slimframework com和这个结合Stripe 的 PHP 库 https stripe com docs api php在我的应用程序中处理付款 一切都很好 但是直到最近 我在我的系统中发现
  • 无法识别智能卡上的 AFL

    我正在努力使用我陷入困境的 AID 列表从 VISA 例如 PAN 到期日 信用卡获取有用数据 我已经能够手动访问所有数据 使用下一个教程 http www openscdp org scripts tutorial emv reademv
  • Android 应用内购买

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

    Closed 这个问题不符合堆栈溢出指南 help closed questions 目前不接受答案 我设置了一个测试 暂存站点 但对该站点的访问受到 IP 地址的限制 这意味着 虽然我可以很好地发送到 SagePay 模拟器 但返回响应会
  • Magento - 购物车和结账(订单审核)屏幕有不同的字段和标签集

    在 Magento 默认主题中cart页面中 我们会在屏幕右侧中间看到以下总计框 我的问题是显示购物车中显示的 税 和 含税总计 字段 因为一旦我们知道送货地址 就会计算税 所以 我们只想在结帐屏幕 under 订单审核 但是 当覆盖上面提

随机推荐

  • 通过过滤对 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 流程相似