【问题标题】:SagePay .Net Integration Kit - Error when returning NOTAVAILABLE value for 3dSecureStatusSagePay .Net 集成套件 - 返回 3dSecureStatus 的 NOTAVAILABLE 值时出错
【发布时间】: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");

标签: c# asp.net opayo


【解决方案1】:

问题在于集成工具包包含一个错误,即3DSecure 状态的enum 缺少NOTAVAILABLE 的值。 SagePay 甚至告诉过我:

不幸的是,这是 .NET 套件的一个已知问题,但目前还没有修复。

所以有三种可能的方法来解决这个问题。

  1. 要么修改来自服务器的解码响应,将3DSecureStatus 值的值更改为NONE(如问题中所述)。
  2. 使用已应用此修复程序的集成工具包版本。您可以向 SagePay 索要代码(他们似乎非常愿意免费提供)并在 ThreeDSecureStatus.cs 文件中添加 NOTAVAILABLE 作为枚举值:

    public enum ThreeDSecureStatus
    {
        NONE,
        OK,
        NOAUTH,
        CANTAUTH,
        NOTAUTHED,
        ATTEMPTONLY,
        NOTCHECKED,
        INCOMPLETE,
        MALFORMED,
        INVALID,
        ERROR,
        NOTAVAILABLE //<--- Add this
    }
    
  3. 我已经完成了修复错误的过程并将其上传到GitHub repository。随意从那里获取代码。我还更新了项目以使用 C#6,因此您需要使用 Visual Studio 2015 或更高版本才能使用它。如果您确实需要使用旧版本,您可以从first commit to the repository 中的原始文件开始。

【讨论】:

  • 哇;感谢这一切!很有帮助!
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2013-05-20
  • 1970-01-01
  • 1970-01-01
  • 2015-11-02
  • 1970-01-01
  • 2013-11-18
  • 1970-01-01
相关资源
最近更新 更多