2

エクスプレスチェックアウトを実装するために以下のWebサービスを使用しています

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

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

ベロブログの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およびポートで正常に実行されています(エラーなし、トークンは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));


}
4

1 に答える 1

1

PayPal Web Referenceのフォルダーで、テキストエディターでReference.csファイルを開き、「System.Xml.XmlElementAny」を検索します。

次のようなコードに気付くでしょう。

[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が表示されます。

于 2012-10-31T08:24:55.557 に答える