使用PayPal,我可以非常容易地创建一个BuyNow按钮,包含我的商家信息,价格,税金,运费等。这在SagePay中可能吗?如何制作SagePay BuyNow按钮?
回答
只要与PayPal的BuyNow按钮+ PDT过程相似,所需的系统就称为SagePay 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>
(一个可以与测试一个在这里交换直播网址: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
这是愚蠢的为什么他们需要一些这方面的信息时,贝宝没有,但哦。如果文件没有像真正的邮政编码那样验证该城市和国家的合法价值,并且还用于问题争议仲裁,则该文件明确表示该错误将被错误地排除。
请注意,在我的示例中,PP没有税或运费突破,因此您需要在显示此BuyNow按钮之前根据需要显示,或者在您的确认页面或确认电子邮件中发送。他们确实有一个“&篮子=”参数,可以指定税额,但它对于您自己可以在表单页上显示的内容是多余的,而不是必需的。因此,&金额必须是总值,而不是净值。也没有数量值(可以使用Basket参数来指定)。您很可能会发现&购物篮参数仅仅是您在结帐过程中已经显示在自己表单上的内容。所以,这就是我的例子没有包含它的原因。
至于VendorTxCode,这是您创建的内容,以便您可以将订单追溯回适当的客户。
这个$ PAYMENT_CRYPT然后使用XOR + Base64编码,使用SagePay提供的加密密码进行加密。他们有一个AES + Binhex加密选项,但它是矫枉过正,你的服务器必须启用mcrypt库。一些共享托管计划仍然尚未启用!
他们提供了XOR示例,但它是您在计算机科学课程中无数次看到的典型示例,您可以反复循环访问密码的每个ASCII代码和数据的每个ASCII代码,并获取其他的补码位异或过程)。完成后,通过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代码中执行相同的操作。
参考:请注意,以下doc URL可能会在将来更改。要获取最新版本的文档,请访问网站,注册为开发人员(1分钟的过程),并搜索“表单协议”。
编辑:新干线(2017年10月25日) - https://www.sagepay.co.uk/file/25041/download-document/FORM_Integration_and_Protocol_Guidelines_270815.pdf
- 1. BuyNow按钮不起作用
- 2. PayPal BuyNow按钮作为ShoppingCart提交按钮
- 3. 为sandbox帐户创建buynow按钮
- 4. PayPal buynow按钮设置问题
- 5. PayPal中的高级变量BuyNow按钮
- 6. 如何制作按钮,iOS
- 7. 如何制作按钮?
- 8. 如何制作Andengine按钮
- 9. BlueSnap BuyNow集成 - 为什么我看不到Apple Pay按钮?
- 10. 整个网站的Paypal一个BuyNow按钮
- 11. 如何在magento的产品页面上添加自定义buynow按钮
- 12. 如何制作“开关”音乐按钮?
- 13. 如何在Wordpress网站制作按钮?
- 14. Objective-C SpriteKit - 如何制作按钮圈
- 15. 如何使用CSS制作3D按钮?
- 16. 如何在iPhone SDK中制作+/-按钮?
- 17. 如何为iframe Appication制作Facebook'like'按钮?
- 18. 如何为iAdbannerView制作关闭按钮
- 19. 如何制作动画按钮?
- 20. 如何在Facebook上制作按钮?
- 21. 如何制作网格状按钮组?
- 22. 你如何制作这些按钮?
- 23. 如何用for循环制作按钮
- 24. 如何制作MapView按钮(iPhone/iPad)?
- 25. 如何制作多个播放按钮?
- 26. 如何制作触摸屏按钮?
- 27. 如何制作Upvote/Downvote按钮?
- 28. 如何制作引导按钮插入
- 29. 如何为Java Swing按钮制作ActionListener
- 30. 如何制作按钮的克隆?
末链接死。我收到错误 - 5080:表单事务注册失败。使用上面的例子。有没有一种方法可以调试?有工作的例子吗?字符串可以直接添加到表单中还是更多? – Jon 2017-02-28 15:20:21