2016-12-02 2 views
1

Я пытаюсь интегрировать paypal sdk на своем веб-сайте, используя paypal-python-SDK. Когда я печатаю item_list вручную, как это:
PayPal: Python Входящий запрос JSON не сопоставляется с запросом API

{"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'} 

мне действительно нужен как переменные, так что я могу динамически генерировать список, когда пользователь добавить producs в корзину. Спасибо за вашу помощь.

+0

Где вы используете 'itemlist'? – ettanany

+0

"сделки": [{ "item_list": { "пунктов": [Перечень материалов]}, "сумма": { "всего": общая, "валюта": "USD"}, "Описание" : «Это описание транзакции платежа». }] –

+0

Вам нужно будет вызвать 'json.dumps()' на вашем последнем объекте непосредственно перед отправкой вашего запроса на paypal. – ettanany

ответ

0

Я думаю, вы пытаетесь использовать диктатор как JSON. Оба синтаксиса аналогичны, но dictionnaries - это структура Python, а JSON - это формат данных.

В комментариях вы сказали использовать ваш itemlist dictionnary как:

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

Если это ваш entiere 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 строка. Если вы делаете что-то вроде:

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

Вы ошибаетесь, потому что элемент transacations:item_list будет список строк, а не список dicts. Важно понимать, что JSON - это всего лишь способ форматирования структуры, вы можете проанализировать, как вы определяете XML в том же виде, например, на примере.

Не забудьте сначала вычислить данные, которые вы хотите отправить в dictionnary, а затем, по-настоящему, проанализировать все данные в строке JSON.

+0

Am использовать фляга рамки. Обычно он не принимает «печать», давайте попробуем решение JSON. –

+0

"{\" name \ ": \" Sparzy \ ", \" sku \ ": \" music beat \ ", \" price \ ": \" 25.0 \ ", \" currency \ ": \" USD \ ", \" quantity \ ": 1}" это то, что я получаю –

+0

Это хорошо сформированная строка JSON, она должна быть в порядке. Обновите свой пост, чтобы получить дополнительную информацию и код. Как вы называете это вручную и с формой. – Arount