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提供的表单集成协议指南中有所概述。 并希望实现更强大的修复,而不是字符串替换。
问题是集成套件包含一个错误,即3DSecure
状态的enum
缺少NOTAVAILABLE
的值。 SagePay甚至告诉过我:
不幸的是,这是.NET工具包的一个已知问题,但目前还没有修复。
所以有三种方法可以解决这个问题。
- 修改服务器的解码响应,将
3DSecureStatus
值的值更改为NONE
(如问题中所述)。 -
使用已应用此修复程序的Integration Kit版本。 您可以向SagePay索取代码(他们似乎非常愿意免费提供)并在
ThreeDSecureStatus.cs
文件中添加NOTAVAILABLE
作为枚举值:public enum ThreeDSecureStatus { NONE, OK, NOAUTH, CANTAUTH, NOTAUTHED, ATTEMPTONLY, NOTCHECKED, INCOMPLETE, MALFORMED, INVALID, ERROR, NOTAVAILABLE //<--- Add this }
-
我已经完成了修复bug的过程并将其上传到GitHub存储库 。 随意从那里获取代码。 我还更新了使用C#6的项目,因此您需要使用Visual Studio 2015或更高版本才能使用它。 如果确实需要使用旧版本,则可以从第一次提交到存储库的原始文件开始。
上述就是C#学习教程:SagePay .Net Integration Kit – 返回3dSecureStatus的NOTAVAILABLE值时出错分享的全部内容,如果对大家有所用处且需要了解更多关于C#学习教程,希望大家多多关注---计算机技术网(www.ctvol.com)!
本文来自网络收集,不代表计算机技术网立场,如涉及侵权请联系管理员删除。
ctvol管理联系方式QQ:251552304
本文章地址:https://www.ctvol.com/cdevelopment/992719.html