Метадетическая ошибка в полосовой транзакции с использованием Python
Я делаю интеграцию платежей с использованием Python и использую следующие данные:
import requests
import json
pos = requests.post
url = "https://api.stripe.com/v1/sources"
headers = {'AUTHORIZATION': 'Bearer sk_test_NXht3wZpuYWRIWpMDDqT3RG2'}
data = {
'type': 'alipay',
'owner[email]': 'abc@xyz.com',
'redirect[return_url]': 'https://www.google.com',
'amount': '500',
'currency': 'USD',
'metadata': {
'data': 'data'
}
}
pos(url, data=data, headers=headers).text
json.loads(pos(url, data=data, headers=headers).text)
При передаче метаданных выдается ошибка '{\n "error": {\n "message": "Недопустимый хэш",\n "param": "метаданные",\n "type": "invalid_request_error"\n }\n}\n', но в соответствии с документацией полосы могут использоваться метаданные ( https://stripe.com/docs/api/curl)
Может кто-нибудь сказать решение, почему оно дает эту ошибку.
2 ответа
Это решит проблему.
import requests
import json
pos = requests.post
url = "https://api.stripe.com/v1/sources"
headers = {'AUTHORIZATION': 'Bearer sk_test_NXht3wZpuYWRIWpMDDqT3RG2'}
data = {
'type': 'alipay',
'owner[email]': 'abc@xyz.com',
'redirect[return_url]': 'https://www.google.com',
'amount': '500',
'currency': 'USD',
'metadata[data]': 'data'
}
pos(url, data=data, headers=headers).text
json.loads(pos(url, data=data, headers=headers).text)
Stripe не поддерживает полезную нагрузку JSON для параметров. Вместо этого они требуют application/x-www-form-urlencoded
,
На данный момент вы отправляете metadata
как хеш, и вы неправильно его кодируете, поэтому Stripe отклоняет его.
Лучшее решение здесь - избегать этого самостоятельно и вместо этого полагаться на официальную библиотеку Python Stripe, которую вы можете найти здесь: https://github.com/stripe/stripe-python