gpt4 book ai didi

c# - 将 PaymentDetailsItemType 数组传递给 PayPalAPI

转载 作者:太空宇宙 更新时间:2023-11-03 16:19:59 25 4
gpt4 key购买 nike

我在 ASP.Net C# 4.0 中使用 PayPal 沙盒。我添加了以下网络引用:

 https://www.paypalobjects.com/wsdl/PayPalSvc.wsdl 

如果我有 1 件商品(请给我 2 件 T 恤),我可以将它传递给 PayPal 对象并毫无问题地完成我的交易:

       var item = new PayPalAPIHelper.PayPalWS.PaymentDetailsItemType
{
Quantity = 2, //etc...etc
};
var paymentDetails = new PayPalAPIHelper.PayPalWS.PaymentDetailsType();
paymentDetails.PaymentDetailsItem = new PaymentDetailsItemType[]{item};

现在我的困境是客户想要不同的商品(1 件 T 恤、1 条裤子)。现在我需要多个 PaymentDetailsItemType 对象传递给 paymentDetails 对象。我试过这个:

        //now i have an array of different items 
var items = new PayPalAPIHelper.PayPalWS.PaymentDetailsItemType[3];
items[0].Description = "T-shirt";
items[1].Description = "Jeans";
paymentDetails.PaymentDetailsItem = new PaymentDetailsItemType[]{items};

我收到这个错误:

       Cannot implicitly convert type 'PayPalAPIHelper.PayPalWS.PaymentDetailsItemType[]' 
to 'PayPalAPIHelper.PayPalWS.PaymentDetailsItemType'

我可以这样做并且它可以编译:

   paymentDetails.PaymentDetailsItem = new PaymentDetailsItemType[]{items[0],items[1]};

但是当我运行它时,当我调用 PayPal 服务时,我得到元素“数量”中的数据类型“不匹配”:

            PayPalAPIHelper.PayPalWS.PaymentDetailsType paymentDetails = new PayPalAPIHelper.PayPalWS.PaymentDetailsType();

paymentDetails.PaymentDetailsItem = new PayPalAPIHelper.PayPalWS.PaymentDetailsItemType[] { items[0],items[1] };

reqDetails.PaymentDetails = new PayPalAPIHelper.PayPalWS.PaymentDetailsType[] { paymentDetails };

PayPalAPIHelper.PayPalWS.SetExpressCheckoutReq req = new PayPalAPIHelper.PayPalWS.SetExpressCheckoutReq()
{
SetExpressCheckoutRequest = new PayPalAPIHelper.PayPalWS.SetExpressCheckoutRequestType()
{
Version = Version,
SetExpressCheckoutRequestDetails = reqDetails
}
};

// query PayPal and get token
//error occurs here
PayPalAPIHelper.PayPalWS.SetExpressCheckoutResponseType resp = BuildPayPalWebservice().SetExpressCheckout(req); //this is where the error occurs

如何将多种类型传递给 PayPal API 网络服务,以便用户可以订购不同的商品?提前致谢

最佳答案

首先,您已经有了一个数组,因此仅仅为了分配给 paymentDetails.PaymentDetailsItem 而创建一个新数组是没有意义的:

var items = new PayPalAPIHelper.PayPalWS.PaymentDetailsItemType[3];

paymentDetails.PaymentDetailsItem = items; // this is wrong: new PaymentDetailsItemType[]{items};

通过编写 new PaymentDetailsItemType[]{items},您可以创建一个新数组并尝试使用另一个数组的内容初始化其第一项(PaymentDetailsItemType 类型)items(类型为 PaymentDetailsItemType[] — 因此不兼容)。

其次,确保为数组中的所有 项填写所有必需的属性。最有可能的是,在您的一件 T 恤和一条牛仔裤的示例中,您应该这样做:

items[0].Description = "T-shirt";
items[0].Quantity = 1;
items[1].Description = "Jeans";
items[1].Quantity = 1;

关于c# - 将 PaymentDetailsItemType 数组传递给 PayPalAPI,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12663272/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com