Метадетическая ошибка в полосовой транзакции с использованием 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

Другие вопросы по тегам