0

ASP.Net C# 4.0 で PayPal サンドボックスを使用しています。次の Web リファレンスを追加しました。

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

アイテムが 1 つある場合 (T シャツを 2 枚ください)、それを PayPal オブジェクトに渡し、問題なくトランザクションを完了することができます。

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

ここでのジレンマは、顧客がさまざまなアイテム (T シャツ 1 枚、パンツ 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 Web サービスに渡すにはどうすればよいですか? 前もって感謝します

4

1 に答える 1

2

まず、既に配列があるため、 への割り当てのためだけに新しい配列を作成しても意味がありません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 シャツ 1 枚とジーンズ 1 枚の例では、次のようにする必要があります。

items[0].Description = "T-shirt";
items[0].Quantity = 1;
items[1].Description = "Jeans";
items[1].Quantity = 1;
于 2012-09-30T17:24:22.370 に答える