我在Ruby on Rails/EmberJS應用程序中使用SagePay的表單集成方法。我正在處理Rails中所有複雜的付款構造。使用Ruby on Rails實現SagePay表單集成
總之,SagePay需要一個加密的編碼'crypt'字符串,其中包含用戶的帳單地址,金額,付款後重定向和其他交易數據等數據。
SagePay在測試環境中給出加密密碼。表單集成指南表示將crypt作爲字符串構建,然後使用AES-256和加密密碼對其進行加密,然後Base64對字符串進行編碼以發送到Sage測試支付服務器。
下面是我實現這個(使用加密器寶石):
def encryptandencode(string)
salt = Time.now.to_i.to_s
secret_key = 'test-server-secret-key-from-sage'
iv = OpenSSL::Cipher::Cipher.new('aes-256-cbc').random_iv
encrypted_value = Encryptor.encrypt(string, :key => secret_key, :iv => iv, :salt => salt)
encoded = Base64.encode64(encrypted_value).encode('utf-8')
return encoded
end
其中string
是包含的交易數據沒有被編碼的,未加密的地穴字符串。
問題
加密器拒絕使用給定的密鑰。它說鑰匙太短。
我在這裏錯過了什麼?
我有同樣的事情 - 加密方法不適合V3.00。最後,我設法說服客戶切換到Stripe。他們的文檔不僅全面易用(大量的代碼示例),而且還提供了很好的預測和概述功能。這不是一個硬銷售 - 要麼增加0.7%的佣金,但沒有商業銀行手續費。贏家的方式。 – sjmog