使用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