【问题标题】:PayPal Express Checkout in asp.netasp.net 中的 PayPal 快速结帐
【发布时间】:2012-10-08 18:24:24
【问题描述】:

我正在使用下面的网络服务来实现快速结帐

//Demo
https://www.sandbox.paypal.com/wsdl/PayPalSvc.wsdl

//Live
https://www.paypal.com/wsdl/PayPalSvc.wsdl

我从 belo 博客 URL 获得了帮助。

http://blog.effectlabs.com/post/2011/11/07/Paypal-Express-Checkout-with-C-using-Paypal-web-services.aspx

错误是 - 在响应对象中,当我在 xp-64 位(端口和 iis6 两者)、window server 2008(iis7 32 位模式)上运行相同的代码时,我得到“resp.Token is null”

但是在 win-7 32 位 iis7 和端口上运行良好(没有错误,令牌是 nut null 获取值)

我的代码如下。

  protected void btnPaypal_Click(object sender, EventArgs e)
{

    CustomSecurityHeaderType type = new CustomSecurityHeaderType();

    type.Credentials = new UserIdPasswordType()
    {

        Username = "removed",
        Password = "removed",
        Signature = "removed"
    };

    SetExpressCheckoutRequestDetailsType sdt = new SetExpressCheckoutRequestDetailsType();
    sdt.NoShipping = "1";
    PaymentDetailsType pdt = new PaymentDetailsType()
    {
        OrderDescription = "Payment Details Sushant",
        OrderTotal = new BasicAmountType()
        {
            currencyID = CurrencyCodeType.USD,
            Value = "100.00"
        }
    };

    sdt.PaymentDetails = new PaymentDetailsType[] { pdt };
    sdt.CancelURL = "http://localhost/OAT/Default.aspx";
    sdt.ReturnURL = "http://localhost/OAT/ExpressCheckoutSuccess.aspx";

    SetExpressCheckoutReq req = new SetExpressCheckoutReq()
    {
        SetExpressCheckoutRequest = new SetExpressCheckoutRequestType()
        {
            SetExpressCheckoutRequestDetails = sdt,
            Version = "60.0"
        }
    };
    PayPalAPIAAInterfaceClient paypalAAInt = new PayPalAPIAAInterfaceClient();
    var resp = paypalAAInt.SetExpressCheckout(ref type, req);
    if (resp.Errors != null && resp.Errors.Length > 0)
    {
        // errors occured
        throw new Exception("Exception(s) occured when calling PayPal. First exception: " +
            resp.Errors[0].LongMessage + resp.Errors.Length.ToString());
    }

// error is here.. that resp.Token is null on xp-64 bit port and iis6 both, but running fine on win-7 32 bit iis7 and port, and w

    Response.Redirect(string.Format("{0}?cmd=_express-checkout&token={1}",
            "https://www.paypal.com/cgi-bin/webscr", resp.Token));


}

【问题讨论】:

    标签: c# asp.net iis paypal


    【解决方案1】:

    在 PayPal Web Reference 的文件夹中,在文本编辑器中打开 Reference.cs 文件并搜索“System.Xml.XmlElement Any”

    你会注意到这样的代码:

    [System.Xml.Serialization.XmlElementAttribute(Order=6)]
        public System.Xml.XmlElement Any {
            get {
                return this.anyField;
            }
            set {
                this.anyField = value;
                this.RaisePropertyChanged("Any");
            }
        }
    

    现在替换

    [System.Xml.Serialization.XmlElementAttribute(Order=6)]

    [System.Xml.Serialization.XmlIgnoreAttribute()]

    并在重新编译后运行您的应用程序。

    您现在将看到 resp.Token 填充了所需的值

    【讨论】:

      猜你喜欢
      • 2014-12-07
      • 2013-03-05
      • 2017-11-22
      • 2016-07-17
      • 2011-08-10
      • 2011-06-16
      • 2016-07-10
      • 2017-07-15
      • 2023-04-08
      相关资源
      最近更新 更多