【问题标题】:Adyen web service access with .Net使用 .Net 访问 Adyen Web 服务
【发布时间】:2012-10-27 21:07:18
【问题描述】:

我正在尝试对我的 Web 应用程序 (C# .Net 4) 实施 Adyen 定期付款,但对 Web 服务相对较新,我不确定我是否以正确的方式进行操作。

简而言之,支付提供商为此目的公开了一个 WSDL url (https://pal-test.adyen.com/pal/Recurring.wsdl),我在 Visual Studio 2010 中将其添加为服务参考(即添加服务参考 > 高级 > 添加 Web 参考)

然后我继续创建了一个测试页面,以确保连接正常运行(请参见下面的代码)并检索我之前创建的测试订阅的详细信息。但是,在执行“listRecurringDetails”操作时出现异常,错误消息是“对象引用未设置为对象的实例。”我不知道哪里出错了。

欢迎任何反馈。

#
public partial class Store_ServiceTest : System.Web.UI.Page
{
    protected void Page_Load(object sender, EventArgs e)
    {
        Recurring proxy = new Recurring();
        ICredentials usrCreds = new NetworkCredential("[username]", "[password]");
        proxy.Credentials = usrCreds;

        try
        {
            RecurringDetailsRequest thisUserDetail = new RecurringDetailsRequest();
            thisUserDetail.merchantAccount = "[some reference]";
            thisUserDetail.shopperReference = "[some reference]";
            thisUserDetail.recurring.contract = "RECURRING";

            RecurringDetailsResult recContractDetails = proxy.listRecurringDetails(thisUserDetail);
            string createDate = recContractDetails.creationDate.ToString();
        }
        catch (Exception ex)
        {
            string err = ex.Message;
        }
        finally
        {
            proxy.Dispose();
        }        
    }
}
调用堆栈

App_Web_4h0noljo.dll!Store_ServiceTest.Page_Load(object sender, System.EventArgs e) 第 38 行 C#

输出窗口

在 mscorlib.dll 中发生了“System.Threading.ThreadAbortException”类型的第一次机会异常 mscorlib.dll 中出现“System.Threading.ThreadAbortException”类型的异常,但未在用户代码中处理 App_Web_4h0noljo.dll 中出现“System.NullReferenceException”类型的第一次机会异常 线程 '' (0x15d0) 已退出,代码为 0 (0x0)。

【问题讨论】:

  • 调试器说什么?请发布堆栈跟踪。
  • 嗨,托马斯。谢谢你的评论。调用堆栈似乎没有显示太多,所以我也添加了输出窗口的内容。让我知道你的想法。谢谢

标签: asp.net web-services soap wsdl


【解决方案1】:

您的代码看起来不错。关键是将定期服务添加为 服务参考而不是作为 Web 参考。如果 应用配置文件包含:

<system.serviceModel>
 <bindings>
     <basicHttpBinding>
         <binding name="AdyenHttpBinding">
           <security mode="Transport">
             <message clientCredentialType="UserName"/>
             <transport clientCredentialType="Basic" realm="Adyen PAL Service Authentication"> <!--Adyen PAL Service Authentication-->
               <extendedProtectionPolicy policyEnforcement="Never"/>
             </transport>
           </security>
         </binding>
     </basicHttpBinding>
 </bindings>
 <client>
   <endpoint address="https://pal-test.adyen.com/pal/servlet/soap/Payment" binding="basicHttpBinding" bindingConfiguration="AdyenHttpBinding" contract="Adyen.Payment.PaymentPortType" name="PaymentHttpPort"/>
   <endpoint address="https://pal-test.adyen.com/pal/servlet/soap/Recurring" binding="basicHttpBinding" bindingConfiguration="AdyenHttpBinding" contract="Adyen.Recurring.RecurringPortType" name="RecurringHttpPort"/>
 </client>
</system.serviceModel>

亲切的问候, 桑德拉斯克(Adyen)

【讨论】:

  • 感谢您的帮助桑德。添加对 Web 配置的引用也是一个不错的举措!
  • 关于 thisUserDetail.recurring.contract = "RECURRING" 的快速说明,指出这仍在生成“对象引用未设置为对象实例”错误,因此我采纳了 thisUserDetail 的建议。 recurring = new Adyen.Recurring(){contract = "RECURRING"};这样就完成了;-)
  • 当我添加服务参考时,它要求输入一些用户名和密码。我怎样才能获得这些凭据
猜你喜欢
  • 2011-05-04
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-11-14
  • 2012-04-05
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多