【问题标题】:PayPal:Python Incoming JSON request does not map to API requestPayPal:Python 传入 JSON 请求未映射到 API 请求
【发布时间】:2017-04-17 13:41:33
【问题描述】:

我正在尝试使用 paypal-python-SDK 将 paypal sdk 集成到我的网站中。当我像这样手动输入 item_list 时:

{"name": "Sparzy", "sku": "music beat", "price": "25.0", "currency": "USD", "quantity": 1}

但是当我尝试以变量的形式添加它时,例如

itemlist = {"name": "Sparzy", "sku": "music beat", "price": "25.0", "currency": "USD", "quantity": 1}

我收到以下错误:

Payment Error: {u'message': u'Incoming JSON request does not map to API request', u'debug_id': u'394fa35b1b301', u'name': u'MALFORMED_REQUEST', u'information_link': u'https://developer.paypal.com/webapps/developer/docs/api/#MALFORMED_REQUEST'}

我真的需要它作为一个变量,以便在用户将产品添加到购物车时动态生成列表。感谢您的帮助。

【问题讨论】:

  • 你在哪里使用itemlist
  • "transactions": [{ "item_list": { "items": [ itemlist ] }, "amount": { "total": total, "currency": "USD" }, "description ": "这是支付交易说明。" }]
  • 在您将请求发送到贝宝之前,您需要在最后一个对象上调用 json.dumps()
  • "{\"name\": \"Sparzy\", \"sku\": \"音乐节拍\", \"price\": \"25.0\", \"货币\": \"USD\", \"quantity\": 1}" 这是我这样做时得到的值。

标签: python json paypal paypal-rest-sdk


【解决方案1】:

我认为您正在尝试将字典用作 JSON。两种语法相似,但字典是 Python 结构,而 JSON 是一种数据格式。

在您说的 cmets 中使用您的 itemlist 字典,例如:

"transactions": [{
    "item_list": { "items": [ itemlist ] }, 
    "amount": { "total": total, "currency": "USD" }, 
    "description": "This is the payment transaction description." 
}]

如果这是您要发送的整个 JSON 数据,您可以执行以下操作:

dict_data = "transactions": [{
    "item_list": { "items": [ itemlist ] }, 
    "amount": { "total": total, "currency": "USD" }, 
    "description": "This is the payment transaction description." 
}])
json_data = json.dumps(dict_data)

json.dumps() 获取一个结构并将其解析为 JSON 格式的 string。 如果你正在做类似的事情:

json_data = "transactions": [{
    "item_list": { "items": [ json.dumps(itemlist) ] }, 
    "amount": { "total": total, "currency": "USD" }, 
    "description": "This is the payment transaction description." 
}])

你错了,因为元素 transacations:item_list 将是 strings 的列表,而不是 dicts 的列表。 重要的是要了解 JSON 只是一种格式化结构的方法,您可以通过示例以完全相同的方式解析 XML 中的 dict。

因此,请务必先计算要在字典中发送的数据,然后在真正结束时,将整个数据解析为 JSON 字符串。

【讨论】:

  • 我正在使用烧瓶框架。它通常不接受“打印”让我尝试 JSON 解决方案。
  • "{\"name\": \"Sparzy\", \"sku\": \"音乐节拍\", \"price\": \"25.0\", \"货币\": \"USD\", \"quantity\": 1}" 这就是我得到的
  • 这是一个格式良好的 JSON 字符串,它应该没问题。请更新您的帖子以提供更多信息和代码。您如何手动和使用表单调用它。
  • 不确定我是对的,但我根据你的一个 cmets 尝试了其他方法
猜你喜欢
  • 2017-12-19
  • 2020-10-17
  • 2018-09-07
  • 2017-12-31
  • 2017-02-13
  • 2017-12-21
  • 2015-07-18
  • 2014-02-08
  • 2015-03-11
相关资源
最近更新 更多