【问题标题】:Stream was not Readable for PayPalRest API流对于 PayPalRest API 不可读
【发布时间】:2013-08-21 14:58:01
【问题描述】:

这发生在沙盒或生产环境中。在沙箱中,如果我输入 4111111111111111 的 Visa 代码和 exp 日期...当我点击 payment.Creat(token) 行时,会抛出异常,“Stream is not readable”。如果我输入一些其他的 CC 号码,例如 4234567890123456,付款就可以了。在生产中,如果我使用那个 4234... 我得到流不可读错误。我了解测试卡并不总是有效,但我希望收到信用卡无效响应。我遇到的问题是我的一些客户遇到了流错误......所以有时它会正确发回,有时是 Stream 错误......我最近使用 Nuget 将包更新为最新和最好的 API,但其他人有什么建议吗?

这是我的相关代码 尝试 { var token = GetAPIToken();

            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;

这里是日志条目,第一个是如果 Retry 设置为 > 0,第二个是没有重试 2013-08-29 09:41:45,852 [33] 调试 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] 调试 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":{"line1":"123 Main St","city":"Denver","country_code":"US","postal_code":"80210","state ":"CO"},"payer_id":"205"}}]},"transactions":[{"amount":{"currency":"USD","total":"4.75"},"description" :"WFS 午餐订单","item_list":{"items":[{"quantity":"1","name":"WFS 午餐订单","price":"4.75","currency":"USD "}]}}]} 2013-08-29 09:41:49,505 [33] 错误 PayPal.Manager.ConnectionManager [(null)] 错误响应:{"name":"INTERNAL_SERVICE_ERROR","message":"发生内部服务错误"," information_link":"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] 错误 PayPal.Exception.PayPalException [(null)] HttpConnection 执行中的异常:流不可读。 PayPal.Exception.PayPalException:HttpConnection Execute 中的异常:流不可读。 ---> System.ArgumentException:流不可读。 在 System.IO.StreamReader..ctor(流流,编码编码,布尔型 detectEncodingFromByteOrderMarks,Int32 bufferSize,布尔型 leaveOpen) 在 System.IO.StreamReader..ctor(流流) 在 PayPal.HttpConnection.Execute(字符串 payLoad,HttpWebRequest httpRequest) --- 内部异常堆栈跟踪结束 ---

这是第二个 2013-08-29 09:44:27,685 [16] 调试 PayPal.PayPalResource [(null)] 用户代理: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] 调试 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":{"line1":"123 Main St","city":"Denver","country_code":"US","postal_code":"80210","state ":"CO"},"payer_id":"205"}}]},"transactions":[{"amount":{"currency":"USD","total":"4.75"},"description" :"WFS 午餐订单","item_list":{"items":[{"quantity":"1","name":"WFS 午餐订单","price":"4.75","currency":"USD "}]}}]} 2013-08-29 09:44:28,847 [16] 错误 PayPal.Manager.ConnectionManager [(null)] 错误响应:{"name":"INTERNAL_SERVICE_ERROR","message":"发生内部服务错误"," information_link":"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 执行中的异常 PayPal.Exception.PayPalException:HttpConnection Execute 中的异常

【问题讨论】:

  • 我遇到了同样的问题。我尝试的每张测试信用卡都会给我一个 INTERNAL_SERVICE_ERROR 响应。我联系了 PayPal 支持,他们在 SO 上向我推荐了这篇文章 :)

标签: paypal


【解决方案1】:

我们有时会在沙盒中看到测试卡 4111xxx 存在问题,并且正在研究解决该问题的方法。因此,请使用沙盒中的另一张测试卡进行测试。

注册流读取错误,将测试提供的代码并更新。

【讨论】:

  • 这有什么更新吗?我希望 4111-1111-1111-1111 或 4234-5678-9012-3456 在这两种环境中都能工作。但是我有客户输入了一个 CC 号码,这可能是他们卡上的内容获得相同的流不可读......可能是他的卡没有通过一些验证(地址、邮政编码、CVV 代码等......)但那些似乎返回有效错误
  • 你还面临这个问题吗?对于无效的测试卡,我收到了正确的无效信用卡响应。如果您仍然遇到问题,请使用没有您的凭据等的实际 JSON 请求负载更新 cmets,
  • 是的,我仍然得到这个。我使用从 GIT 下载的 SDK 运行了一些测试,并且能够获得更多信息......当我第一次发出请求时,它返回 Java 读取超时错误......然后它尝试重试,我得到了 Stream不可读错误...真正的问题可能是超时,但在这种情况下重试不起作用...我从日志消息中添加了 JSON 调用...如果有帮助请告诉我...跨度>
  • 这是我所说的读取超时错误的一部分
    {"name":"INTERNAL_SERVICE_ERROR","information_link":"api.sandbox.paypal.com/docs/api/…: java.net.SocketTimeoutException: Read超时","RootCauseMessage: SocketTimeoutException: 读取超时","org.apache.cxf.interceptor.Fault: java.net.SocketTimeoutException: 读取超时","\tat
  • 是的,它很有帮助。我们正在努力为您解决同样的问题。
【解决方案2】:

问题已在核心 SDK 中得到修复。修复在分支https://github.com/paypal/sdk-core-dotnet/tree/fix-log4net-stream 中可用。详情请见https://github.com/paypal/rest-api-sdk-dotnet/issues/10

【讨论】:

  • 谢谢。虽然我注意到它不再适用于 Rest API。 HTTP 方法有一个新的枚举“HEAD”,因此 post 调用不再起作用。我需要更新 Rest API 代码以使用正确的 DLL。
【解决方案3】:

在与 PayPal 支持人员讨论过同样的问题后:显然即使在沙盒中,如果信用卡使用次数过多,它也会被阻止。他们建议尝试其他假卡号,并推荐我到这个网站来生成它们:

http://www.fakenamegenerator.com/

使用那里生成的卡片对我有用。

【讨论】:

    猜你喜欢
    • 2013-06-22
    • 1970-01-01
    • 1970-01-01
    • 2021-11-07
    • 1970-01-01
    • 1970-01-01
    • 2015-07-22
    • 1970-01-01
    相关资源
    最近更新 更多