Tag: sagepay

SagePay .Net Integration Kit – 返回3dSecureStatus的NOTAVAILABLE值时出错

我使用表单集成实现了SagePay付款。 我的实现是基于SagePay提供的.Net集成工具包,一切都很好。 最近我们启用了3D Secure,当3DSecureStatus的值返回值NOTAVAILABLE时遇到了问题。 看起来当返回NOTAVAILABLE值时,在程序集SagePay.IntegrationKit.DotNet.dll的SagePayIntegration类的ConvertToSagePayMessage()方法调用中会抛出错误。 特别是,将值解析为ThreeDSecureStatus枚举时会发生此错误。 此枚举没有NOTAVAILABLE可以解析的值,因此错误。 我暂时解决了这个问题,现在才开始工作。 此修复程序将NOTAVAILABLE值替换为NONE ,因此现在解析为有效的枚举值。 这是在调用ConvertToSagePayMessage()之前完成的 cryptDecoded = cryptDecoded.Replace(“3DSecureStatus=NOTAVAILABLE”, “3DSecureStatus=NONE”); 我只是想知道为什么ThreeDSecureStatus枚举没有ThreeDSecureStatus的值,因为NOTAVAILABLE是它预期返回的值之一,这在SagePay提供的表单集成协议指南中有所概述。 并希望实现更强大的修复,而不是字符串替换。

c#AES解密

我正在使用SagePay Forms,目前正在将他们的VB示例转换为c#。 我取得了很好的进展,所以我项目的加密部分工作正常(SagePay可以解密)。 我遇到的问题是,当我尝试解密字符串时,它会变成垃圾。 如果有人这样做之前我真的很感激我的解密代码的一些帮助。 我已经包含了有效的加密代码,前两行是来自另一种方法的设置和调用。 我没有添加VB代码,但如果需要,我可以添加它。 如果不需要,不想要一个巨大的post。 实用方法: public string byteArrayToHexString(byte[] ba) { return BitConverter.ToString(ba).Replace(“-“, “”); } public static byte[] StringToByteArray(string hex) { return Enumerable.Range(0, hex.Length) .Where(x => x % 2 == 0) .Select(x => Convert.ToByte(hex.Substring(x, 2), 16)) .ToArray(); } 主加密方法,前几行是从较大的方法中提取的调用。 string crypt = “blahblahblah” string EncryptAndEncode = “@” + byteArrayToHexString(aesEncrypt(crypt)); private byte[] aesEncrypt(string […]