我已经使用表单集成实现了 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");
我只是想知道为什么
ThreeDSecureStatus
枚举没有 NOTAVAILABLE
的值,因为 NOTAVAILABLE
是它预期返回的值之一,这在 SagePay 提供的表单集成协议(protocol)指南中进行了概述。并希望实现更强大的修复,而不是字符串替换。 最佳答案
问题在于集成工具包包含一个错误,即 enum
状态的 3DSecure
缺少 NOTAVAILABLE
的值。 SagePay 甚至告诉我:
所以有三种可能的方法来解决这个问题。
3DSecureStatus
值的值更改为 NONE
(如问题中所写。) NOTAVAILABLE
文件中添加 ThreeDSecureStatus.cs
作为枚举值:public enum ThreeDSecureStatus
{
NONE,
OK,
NOAUTH,
CANTAUTH,
NOTAUTHED,
ATTEMPTONLY,
NOTCHECKED,
INCOMPLETE,
MALFORMED,
INVALID,
ERROR,
NOTAVAILABLE //<--- Add this
}
关于c# - SagePay .Net 集成工具包 - 为 3dSecureStatus 返回 NOTAVAILABLE 值时出错,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/29142334/