1

これは、サンドボックスまたは本番環境で発生します。サンドボックスで、4111111111111111 の Visa をコードと有効期限で入力すると... payment.Creat(token) 行を押すと、「ストリームが読み取れませんでした」という例外がスローされます。4234567890123456 のような別の CC 番号を入力すると、支払いは正常に機能します。本番環境で、その 4234 を使用すると... ストリームが読み取れませんというエラーが発生します。テスト カードが常に機能するとは限らないことは理解していますが、クレジット カードの無効な応答が返されることを期待しています。私が抱えている問題は、一部の顧客がストリーム エラーを受け取っていることです..本番環境で実際の CC を使用すると、問題なく動作します..しかし、1 つの番号を変更すると、無効なカード エラーが発生します....そのため、正しく返送される場合もあれば、ストリームエラーである場合もあります... 最近、Nuget を使用してパッケージを最新かつ最高の API に更新しました。

これが私の関連するコードです

            var creditCard = new CreditCard();
            creditCard.number = req.CardNumber;
            creditCard.expire_month = req.ExpMonth;
            creditCard.expire_year = req.ExpYear;
            creditCard.first_name = req.FirstName;
            creditCard.last_name = req.LastName;
            creditCard.type = req.CardType;
            creditCard.payer_id = req.UserId.ToString();
            creditCard.cvv2 = req.SecurityCode;

            creditCard.billing_address = new Address()
            {
                line1 = req.Address1,
                city = req.City,
                state = req.State,
                postal_code = req.ZipCode,
                country_code = "US"
            };


            var payment = new Payment();
            payment.intent = "sale";

            payment.payer = new Payer();
            payment.transactions = new List<Transaction>();

            var t = new Transaction()
            {
                description = req.Description,
                amount = new Amount()
                {
                    total = req.TotalPayment.ToString("N2"),
                    currency = "USD",
                },
            };

            t.item_list = new ItemList();
            t.item_list.items = new List<Item>();
            t.item_list.items.Add(new Item()
                {
                    name = req.Description,
                    quantity = "1",
                    price = req.TotalPayment.ToString("N2"),
                    currency = "USD",
                });
            payment.transactions.Add(t);

            payment.payer.funding_instruments = new List<FundingInstrument>();
            payment.payer.payment_method = "credit_card";

            var fundingInstrument = new FundingInstrument();
            fundingInstrument.credit_card = creditCard;


                payment.payer.funding_instruments.Add(fundingInstrument);

            var pay = payment.Create(token);
            if (req.PaymentOption != PayOption.UsePayPal && pay.state == PayPalStateApproved
                    && pay.transactions.Any() && pay.transactions[0].related_resources.Any()
                    && pay.transactions[0].related_resources[0].sale != null
                    && !String.IsNullOrEmpty(pay.transactions[0].related_resources[0].sale.id))
            {
                resp.TransactionID = pay.transactions[0].related_resources[0].sale.id;
            }
            else
            {
                resp.Status = Status.Error;
                resp.Messages.Add(new Message { Code = "paypal", Text = pay.state });
            }
        }
        catch (Exception ex)
        {
            var err = CheckPayPalError(ex);
            resp.Messages.Add(new Message { Code = "paypal", Text = String.IsNullOrEmpty(err) ? ex.Message : err });

            resp.Status = Status.Error;
        }

        return resp;

ログ エントリは次のとおりです。1 つ目は再試行が > 0 に設定されている場合、2 つ目は再試行なしの場合です 2013-08-29 09:41:45,852 [33] DEBUG PayPal.PayPalResource [(null)] User-Agent:PayPalSDK /rest-sdk-dotnet 0.7.3 ;lang=DOTNET;v=4.0.30319.18052;bit=64;os=Windows 7 6.1.7601.65536; 2013-08-29 09:41:45,852 [33] デバッグ PayPal.PayPalResource [(null)] PayPal-Request-Id:a781e6bb-c0b0-4f06-abf8-1202dbc17a59 2013-08-29 09:41:45,920 [33] DEBUG PayPal.Manager.ConnectionManager [(null)] {"intent":"sale","payer":{"payment_method":"credit_card","funding_instruments":[{"credit_card":{"number":"4234567890123456 ","type":"visa","expire_month":5,"expire_year":2015,"cvv2":"123","first_name":"ミッキー","https://developer.paypal.com/webapps/developer/docs/api/#INTERNAL_SERVICE_ERROR"、"debug_id":"2520071cde1ca"} 2013-08-29 09:41:49,506 [33] INFO PayPal.Manager.ConnectionManager [(null)] サーバーから InternalServerError ステータス コードを取得しました 2013-08-29 09:41:49,507 [33] ERROR PayPal.Exception.PayPalException [(null)] Exception in HttpConnection Execute: ストリームが読み取れませんでした. PayPal.Exception.PayPalException: Exception in HttpConnection Execute: ストリームが読み取れませんでした. ---> System.ArgumentException: ストリームがSystem.IO.StreamReader..ctor(ストリーム ストリーム、エンコーディング エンコーディング、Boolean detectEncodingFromByteOrderMarks、Int32 bufferSize、Boolean leaveOpen) で System.IO.StreamReader..ctor(ストリーム ストリーム) で PayPal.HttpConnection.Execute(String payLoad) , HttpWebRequest httpRequest) --- 内部例外スタック トレースの終了 ---

これが 2 番目の 2013-08-29 09:44:27,685 [16] DEBUG PayPal.PayPalResource [(null)] User-Agent:PayPalSDK/rest-sdk-dotnet 0.7.3 ;lang=DOTNET;v=4.0.30319.18052 です。 ;bit=64;os=Windows 7 6.1.7601.65536; 2013-08-29 09:44:27,686 [16] デバッグ PayPal.PayPalResource [(null)] PayPal-Request-Id:1d5c68e5-4b4b-4876-8bf4-3b9f64d0afb6 2013-08-29 09:44:27,753 [16] DEBUG PayPal.Manager.ConnectionManager [(null)] {"intent":"sale","payer":{"payment_method":"credit_card","funding_instruments":[{"credit_card":{"number":"4234567890123456 ","type":"visa","expire_month":5,"expire_year":2015,"cvv2":"123","first_name":"Mickey","last_name":"Keenan","billing_address": {"https://developer.paypal.com/webapps/developer/docs/api/#INTERNAL_SERVICE_ERROR ","debug_id":"465701e606a56"} 2013-08-29 09:44:28,848 [16] INFO PayPal.Manager.ConnectionManager [ (null)] サーバーから InternalServerError ステータス コードを取得しました 2013-08-29 09:44:28,850 [16] エラー PayPal.Exception.PayPalException [(null)] HttpConnection Execute での例外 PayPal.Exception.PayPalException: HttpConnection Execute での例外

4

3 に答える 3