我正在使用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)
任何人都可以告诉解决方案它为什么会出错。
答案 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