我正在尝试对PayPal Payments API执行超级简单的调用。
{
"intent":"sale",
"payer": {
"payment_method":"credit_card",
"funding_instruments": {
"credit_card_token": {
"credit_card_id":"CARD-XXXXXXXXXXXXXXXXXXXXXXXX"
}
}
}
}
我已经尝试添加/删除请求的各个部分,但我的成功很少,但不可避免地,我遇到了“传入JSON请求未映射到API请求MALFORMED_REQUEST”的错误。
根据文档,这些是唯一必需的参数,但我尝试过不同的funding_instruments,添加payer_info,添加交易,使用credit_card_token和credit_card ......似乎没什么用,而且文档对于故障排除没用。 / p>
有没有办法确定 为什么 这是一个格式错误的请求?我遇到的大多数文档都使用payment_method:paypal而不是credit_card。有什么更好的方法可以解决这个请求失败的原因?
答案 0 :(得分:2)
首先要考虑一些事项。你在美国吗?
如果不是,您需要考虑您所在的国家/地区是否可以使用该API。您可以在https://developer.paypal.com/docs/integration/direct/rest/country-codes/
找到哪些国家/地区可以使用API的信息您可能还需要验证您的json。我已经测试了您在此处发布的内容,但您可能无法在应用中正确生成信息。检查输出并确保它是有效的json - MALFORMED_REQUEST是一个指示符,表示缺少所需的键/值对或者json无效...此网站将帮助您验证json输出https://jsonlint.com/ < / p>
仔细检查标题,确保您的标头请求标头格式正确。您可以在https://developer.paypal.com/docs/api/overview/#http-request-headers
中根据API要求检查标题paypal注意到他们提供了一个错误代码作为json字符串,用于以这种方式产生的错误,并且响应中可能会提供或不提供详细信息。错误响应代码在400和500范围内并对应于错误消息(这些消息在上面给出的标题页面上列出)
但是,如果您的错误消息未列出,我将猜测您在json中缺少必需的键/值对...
paypal说意图和请求对象是必需的,但他们给出的示例付款列出了您的样本json丢失的大量信息 -
这些项目中的交易详情 是必需的 ......
per paypal的api docs “包含付款人,交易详情......
paypal api文档提供了https://developer.paypal.com/docs/api/payments/
所需的付款人和意图对象的示例直接信用卡付款还受到限制:他们只能从英国或美国接受,并且只有在帐户启用了付款方式时...
避免此问题的选项包括:
1)paypal经典api直接付款 - https://developer.paypal.com/docs/classic/paypal-payments-pro/integration-guide/direct-payment/
2)braintree direct:https://www.braintreepayments.com/products/braintree-direct
3)或payflow pro:https://developer.paypal.com/docs/classic/products/payflow
答案 1 :(得分:1)
在数组中为工具提供资金,因此请求应如下所示。
需要交易,因为这是您能够指定捕获金额的唯一方式。
{ “意图”:“买卖”, “付款人”:{ “PAYMENT_METHOD”: “CREDIT_CARD” “funding_instruments”:[{ “credit_card_token”:{ “credit_card_id”: “CARD-27V22453CF057824JLLDIA7Q” }} ] }, “交易”:[ { “金额”:{ “总计”:“30.11”, “货币”:“英镑”, “细节”: { “小计”:“30”, “税”:“0.07”, “运费”:“0.03”, “handling_fee”:“1.00”, “shipping_discount”:“ - 。1”, “保险”:“0.01” } } }]
}