使用python进行条带事务的Metadeta错误

时间:2018-06-01 10:44:09

标签: python python-3.x stripe-payments stripe-connect

我正在使用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“错误”:{\ n“message”:“无效的哈希”,\ n“param”:“metadata”,\ n“type”:“ invalid_request_error“\ n} \ n} \ n 但根据条带文档,可以使用元数据(https://stripe.com/docs/api/curl#create_source-metadata

任何人都可以告诉解决方案它为什么会出错。

2 个答案:

答案 0 :(得分:1)

这将解决问题。

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)

答案 1 :(得分:0)

Stripe不支持参数的JSON有效负载。相反,他们需要application/x-www-form-urlencoded

目前,您正在发送metadata作为哈希,并且您没有正确编码,因此Stripe拒绝它。

这里最好的解决方案是避免自己这样做,而是依靠Stripe的官方Python库,你可以在这里找到:https://github.com/stripe/stripe-python