【发布时间】:2015-03-19 10:38:22
【问题描述】:
我已经使用表单集成实现了 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 枚举没有 NOTAVAILABLE 的值,因为 NOTAVAILABLE 是它预期返回的值之一,这在表单集成协议指南中进行了概述圣人支付。并且希望实现更强大的修复,而不是字符串替换。
【问题讨论】:
-
我在启用 3d 安全时遇到了同样的问题,我尝试了您的解决方案,但对我不起作用。你有想法吗?在 SagePay.IntegrationKit.SagePayIntegration.SetPropertyValue(Object target, String propertyName, String value) 中的错误是“未找到请求的值 'NOTAVAILABLE'”
-
@DevT 集成工具包枚举器属性是“ThreeDSecureStatus”而不是“3DSecureStatus”。试试这个:cryptDecoded = cryptDecoded .Replace("ThreeDSecureStatus=NOTAVAILABLE", "ThreeDSecureStatus=NONE");