c# – SagePay .Net Integration Kit – 返回3dSecureStatus的NOTAVAILABLE值时出错
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了c# – SagePay .Net Integration Kit – 返回3dSecureStatus的NOTAVAILABLE值时出错,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含1627字,纯文字阅读大概需要3分钟。
内容图文
我使用表单集成实现了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是预期返回的值之一,这在SagePay提供的表单集成协议指南中有所概述.并希望实现更强大的修复,而不是字符串替换.
解决方法:
问题是集成套件包含一个错误,即3DSecure状态的枚举缺少NOTAVAILABLE的值. SagePay甚至告诉过我:
Unfortunately this is a known issue with the .NET kit but there is no fix as of yet.
所以有三种方法可以解决这个问题.
>修改服务器的解码响应,将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 repository.随意从那里获取代码.我还更新了使用C#6的项目,因此您需要使用Visual Studio 2015或更高版本来使用它.如果您确实需要使用旧版本,则可以从first commit to the repository的原始文件开始.
内容总结
以上是互联网集市为您收集整理的c# – SagePay .Net Integration Kit – 返回3dSecureStatus的NOTAVAILABLE值时出错全部内容,希望文章能够帮你解决c# – SagePay .Net Integration Kit – 返回3dSecureStatus的NOTAVAILABLE值时出错所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。