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