我目前正在使用PayPal payment pro Rest API测试信用卡付款。
我一直收到以下错误:
HttpConnection中的异常执行:无效的HTTP响应远程服务器返回错误:(400)错误的请求。 --->
我创建并激活了我的PayPal测试帐户,如下所示:
信用卡 信用卡号: 在这里 信用卡类型: 签证 截止日期: 二千〇一十九分之三
当我在付款表格中输入上述信息并提交时,我会收到400错误请求错误。
我之前使用PayPAl joe购物者帐户工作但是丢失了测试cc编号。
我100%确定我已使用oauth2凭据进行身份验证
出现此错误的可能原因是什么?:
我输入随机付款人的名字和姓氏。
该名称是否必须存在?
可能导致错误的原因
答案 0 :(得分:12)
如果给出的数据出现任何问题,paypal api将返回400 - 错误的请求错误。
当我收到错误(PHP SDK)时,我发现了异常并且$ex->getData()
返回了一个json,其中包含有关错误请求的详细信息,在我的情况下,我给出的货币代码是错误的。
try {
$payment->create($apiContext);
} catch (PayPal\Exception\PPConnectionException $ex) {
var_dump(json_decode($ex->getData()));
exit(1);
}
答案 1 :(得分:1)
我遇到了同样的问题(HTTP 400 - 错误请求)。原因是带有“错误”的REST API请求。就我而言,我有两个原因:
我不知道找出错误的实际原因的方法(如果有的话)。
在您的情况下,它可能是您添加的付款人的名称。试试没有。
修改强>
我刚尝试过:这确实是付款人信息。我通过一个带有名字和姓氏的payer_info获得了HTTP 400(没有一切正常)。我假设payer_info不能由我们设置,但在返回Payment对象时由PayPal设置。
Payer payer = new Payer { payment_method = "paypal", payer_info = new PayerInfo {
first_name = "Zaphod", last_name = "Beeblebrox"} }; // => HTTP 400 - Bad Request
答案 2 :(得分:1)
首先找出你的错误到底是什么
payment = PayPal::SDK::REST::DataTypes::Payment.new(...)
payment.create
# got Response[400]: Bad Request here
payment.error
# got {"name"=>"VALIDATION_ERROR", "details"=>[{"field"=>"transactions", "issue"=>"
然后在这里找出你的问题以获得更多信息
https://developer.paypal.com/webapps/developer/docs/api/#validation-issues
答案 3 :(得分:1)
像其他人所说的那样,有几件事可能导致(HTTP 400 - 错误请求)。
在我的情况下,这是由于使用相同的发票号码。对于临时测试,我只使用了使用guid生成的ShoppingCartID。您也可以使用随机数生成器。最终,您需要为客户规格生成发票编号。
- 祝你好运
答案 4 :(得分:0)
我有同样的问题。就我而言,信用卡问题可能会被过度使用。所以我从这个网站Testing Credit card获取了新的信用卡号码,并用旧的信用卡号码替换。 这是我用过的信用卡信息
credit_card = new CreditCard()
{
billing_address = new Address()
{
city = "Johnstown",
country_code = "US",
line1 = "52 N Main ST",
postal_code = "43210",
state = "OH"
},
cvv2 = "874",
expire_month = 11,
expire_year = 2018,
first_name = "Joe",
last_name = "Shopper",
number = "4024007185826731", //New Credit card Number, Only Card type should match other details does not matter
type = "visa"
}
注意:PayPal网站中提到的所有信用卡都不起作用,给我同样的问题。如果它适合你,那么它会很好,否则使用新的测试信用卡号码。希望这会对某人有所帮助。
谢谢!享受编码!
答案 5 :(得分:0)
我也对此问题感到震惊,可能还有许多其他可能的根本原因导致此失败,但在我的情况下,我的所有传递参数都是正确的,但是在沙箱环境中失败了,我刚刚从{{更改了付款选项1}}到PayPal Balance
然后它开始工作。
答案 6 :(得分:0)
我最近也遇到了400错误的请求错误。在我的情况下,我正在使用RefundRequest处理退款,而且PayPal最近更改了“原因”字段的约束(尽管没有找到我可以找到的记录),因此我对返回的内容的冗长描述没有更长的时间可以接受。我发现错误的原因仅在于,我看到另一个字段,贝宝现在要求该字段只能是单字节字母数字字符。不过,实际上有所帮助的是缩短了我输入的数据,以作为简单地“退回物品”的原因。
显然这是一个旧线程,并且我确定原来的问题早已解决,但是如果使用上述某些方法来确定有关错误的更多信息,则不会产生结果,我建议使用以下方法提交请求最少的信息,直到您可以通过它。然后,开始添加其他字段/信息,以查看是否可以确定哪个字段包含导致错误请求的信息。至少对我的问题而言,这是可行的。
答案 7 :(得分:0)
了解您的错误 贝宝(PayPal)返回有关每个异常的详细数据(500 INTERNAL_SERVER_ERROR除外),解释您所看到的确切错误。您可以按以下方式进行检索:
更新您的异常处理以捕获PayPalConnectionException并打印$ ex-> getData(),如下所示:
try {
$payment->create($apiContext);
} catch (PayPal\Exception\PayPalConnectionException $ex) {
echo $ex->getCode(); // Prints the Error Code
echo $ex->getData(); // Prints the detailed error message
die($ex);
} catch (Exception $ex) {
die($ex);
}
答案 8 :(得分:0)
这是由于您输入的货币或金额不正确。 我在React JS中遇到了这个问题
我正在这样做。在 createOrder 方法中。
purchase_units: [{
amount: {
currency_code: 'PHP',
value: totalAmount
}
}],
这就是问题所在。如果我给了除美元以外的任何货币,我将得到400错误。所以我从这里删除了 currency_code
然后我将货币声明移到了组件声明中。 这样。
options={{
clientId: " Your_ID " ,
currency: "PHP"
}}
您可以在此处输入所需的任何货币。这解决了我的400错误
答案 9 :(得分:0)
如果您使用 Paypal Sandbox 测试驱动程序,并且在第一次尝试使用有问题的代码时,它会向客户端显示 400 Bad request 错误。
原因:- Paypal 发送了 JWT 身份验证并将其存储在客户端的本地存储中。
建议:- 尝试清除客户端的本地存储缓存(您只需要清除Paypal Token)。
这对我有用,我希望它对你有用:)