PayPal Payments API“传入JSON请求未映射到API请求”

时间:2018-03-28 22:56:43

标签: paypal paypal-sandbox paypal-rest-sdk

我正在尝试对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。有什么更好的方法可以解决这个请求失败的原因?

2 个答案:

答案 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”                }             }         }]

}