如何制作SagePay BuyNow按钮?

Vol*_*ike 4 payment e-commerce payment-processing opayo

使用PayPal,我可以非常轻松地创建BuyNow按钮,包含我的商家信息,价格,税金,运费等.这是否可以在SagePay中使用?

Vol*_*ike 7

所谓的系统称为SagePay表格,与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>
Run Code Online (Sandbox Code Playgroud)

(可以在这里用实际URL交换实时URL: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
Run Code Online (Sandbox Code Playgroud)

当PayPal没有,他们需要一些这样的信息时,这有点愚蠢,但是哦.文档清楚地表明,如果他们没有收到合法的价值观,例如真实的邮政编码验证该城市和国家,并且还用于问题争议仲裁,那么这件事就会出错.

请注意,在我的示例中,PP没有税收或运送突破,因此您需要在显示此BuyNow按钮之前显示,或者可能在您发送的确认页面或确认电子邮件中显示.他们确实有一个"&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流程.他们确实通过GET引导某人到success.php和fail.php以及加密的URL响应,你可以解密和解析(base64 decode + XOR),但困难在于客户可以在等待页面之前关闭表单重定向.在这种情况下,人们将在SagePay的控制面板中看到这一点,并且必须为客户手动完成交易.

在success.php和fail.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

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