0

私は自分のウェブサイトのサンドボックスを介してpayaplを統合しようとしています。

私はpaypalに複数のアイテムを送ることができます、そして、それはうまく働きます。ただし、カート全体の送料を設定して、 paypalに送信したいと思います。

エラーコードが表示されます:

10413 ("ErrorCode=10413&Desc=Transaction refused because of an invalid argument. See additional error messages for details.& Desc2=The totals of the cart item amounts do not match order amounts.")

My CART:
Item: Mens Jackets
Price: 14.99
DESC: "SAMPLE"
QTY: 1
ITEM TOTAL: 14.99
SHIPPING: 5.99

CART TOTAL: 20.94

私は次の変数を設定していますが、何が間違っているのかわかりません。

NVPCodec encoder = new NVPCodec();
                        encoder["METHOD"] = "SetExpressCheckout";
                        encoder["RETURNURL"] = returnURL;
                        encoder["CANCELURL"] = cancelURL;
                        encoder["BRANDNAME"] = "Mountain Warehouse Sample Application";
                        encoder["PAYMENTREQUEST_0_PAYMENTACTION"] = "Sale";
                        encoder["PAYMENTREQUEST_0_CURRENCYCODE"] = "GBP";

                        // Get the Shopping Cart Products
                        int i = 0;
                        Decimal totalItemAmt = 0.00M;
                        string cartShippingAmt = "";
                        foreach (BasketItem item in basket.Items)
                        {
                                    if (item.OrderItemType == OrderItemType.Product)
                                    {
                                                encoder["L_PAYMENTREQUEST_0_NAME" + i] = item.Name.ToString();
                                                encoder["L_PAYMENTREQUEST_0_AMT" + i] = item.Price.ToString("0.00");
                                                encoder["L_PAYMENTREQUEST_0_QTY" + i] = item.Quantity.ToString();
                                                i++;
                                                totalItemAmt += Convert.ToDecimal(item.Price.ToString("0.00"));
                                    }

                                    if (item.OrderItemType == OrderItemType.Shipping)
                                    {
                                                cartShippingAmt = item.Price.ToString("0.00");
                                    }
                        }

                        encoder["PAYMENTREQUEST_0_ITEMAMT"] = totalItemAmt.ToString();
                        encoder["PAYMENTREQUEST_0_AMT"] = amt;
                        encoder["HANDLING_CART"] = cartShippingAmt;

これがペイパルに送られるクエリです

METHOD=SetExpressCheckout&
RETURNURL=http%3a%2f%2flocalhost%3a1234%2fCheckout%2fCheckoutReview.aspx&
CANCELURL=http%3a%2f%2flocalhost%3a1234%2fCheckout%2fCheckoutCancel.aspx&
BRANDNAME=Sample+Application&
PAYMENTREQUEST_0_PAYMENTACTION=Sale&
PAYMENTREQUEST_0_CURRENCYCODE=GBP&
L_PAYMENTREQUEST_0_NAME0=MENS+JACKETS&
L_PAYMENTREQUEST_0_AMT0=14.99&
L_PAYMENTREQUEST_0_QTY0=1&
PAYMENTREQUEST_0_ITEMAMT=14.99&
HANDLING_CART=5.95&
PAYMENTREQUEST_0_AMT=20.94

カート全体に間違った変動送料を割り当てていると思います。

4

1 に答える 1

1

ここでいくつか間違っていることがあります。

まず、使用しているリクエストパラメータの一部が正しくありません。HANDLING_CARTは有効なリクエストパラメータではありません。あなたが探しているのはHANDLINGAMT(実際にはPAYMENTREQUEST_0_HANDLINGAMT)だと思います。

各支払いで、ITEMAMT + SHIPPINGAMT + HANDLINGAMT+TAXAMTの合計はAMTと等しくなる必要があります。あなたの場合、PayPalは送信している無効なパラメータを無視しているため、次のように表示されます...

PAYMENTREQUEST_0_ITEMAMT = 14.99 PAYMENTREQUEST_0_AMT = 20.94

そのパラメータが無効であるため、処理量が表示されていません。したがって、表示されている内容に応じて合計が一致しません。HANDLING_CARTをPAYMENTREQUEST_0_HANDLINGAMTに変更するだけで、問題が解決するはずです。

これは、複数のアイテムといくつかの追加オプションが含まれている、機能するSetExpressCheckoutリクエストのサンプルです...

[USER] => ****
[PWD] => ****
[VERSION] => 97.0
[BUTTONSOURCE] => AngellEYE_PHPClass
[SIGNATURE] => ****
[METHOD] => SetExpressCheckout
[MAXAMT] => 200.00
[RETURNURL] => http://paypal.angelleye.com/standard/samples/DoExpressCheckoutPayment.php
[CANCELURL] => http://paypal.angelleye.com/paypal/class/cancel.php
[ALLOWNOTE] => 1
[HDRIMG] => http://paypal.angelleye.com/images/hdrimg.jpg
[SOLUTIONTYPE] => Sole
[LANDINGPAGE] => Billing
[BRANDNAME] => Angell EYE
[CUSTOMERSERVICENUMBER] => 555-555-5555
[GIFTMESSAGEENABLE] => 1
[GIFTRECEIPTENABLE] => 1
[GIFTWRAPENABLE] => 1
[GIFTWRAPNAME] => Box with Ribbon
[GIFTWRAPAMOUNT] => 2.50
[BUYEREMAILOPTIONENABLE] => 1
[SURVEYQUESTION] => Did you like this checkout?
[SURVEYENABLE] => 1
[BUYERREGISTRATIONDATE] => 2012-07-14T00:00:00Z
[L_SURVEYCHOICE0] => Yes
[L_SURVEYCHOICE1] => No
[PAYMENTREQUEST_0_AMT] => 100.00
[PAYMENTREQUEST_0_CURRENCYCODE] => USD
[PAYMENTREQUEST_0_ITEMAMT] => 80.00
[PAYMENTREQUEST_0_SHIPPINGAMT] => 15.00
[PAYMENTREQUEST_0_TAXAMT] => 5.00
[PAYMENTREQUEST_0_DESC] => This is a test order.
[PAYMENTREQUEST_0_NOTETEXT] => This is a test note before ever having left the web site.
[PAYMENTREQUEST_0_PAYMENTACTION] => Sale
[L_PAYMENTREQUEST_0_NAME0] => Widget 123
[L_PAYMENTREQUEST_0_DESC0] => Widget 123
[L_PAYMENTREQUEST_0_AMT0] => 40.00
[L_PAYMENTREQUEST_0_NUMBER0] => 123
[L_PAYMENTREQUEST_0_QTY0] => 1
[L_PAYMENTREQUEST_0_ITEMURL0] => http://www.angelleye.com/products/123.php
[L_PAYMENTREQUEST_0_NAME1] => Widget 456
[L_PAYMENTREQUEST_0_DESC1] => Widget 456
[L_PAYMENTREQUEST_0_AMT1] => 40.00
[L_PAYMENTREQUEST_0_NUMBER1] => 456
[L_PAYMENTREQUEST_0_QTY1] => 1
[L_PAYMENTREQUEST_0_ITEMURL1] => http://www.angelleye.com/products/456.php
于 2013-01-12T02:12:43.440 に答える