PayPal v2 发票 API "INVALID_REQUEST" 因金额字段错误
错误信息:
{"name":"INVALID_REQUEST","message":"请求格式不正确,语法有误,或者不符合要求。","debug_id":"7bf4f312d5676","details":[{"field":"/amount/value","value":"60.00","location":"BODY","issue":"calculation_error","description":"金额无效。"}],"links":[{"href":"https://developer.paypal.com/docs/api/invoicing/#errors","method":"GET"}]}
我尝试创建一个发票模板。代码:
import requests
import json
headers = {
'Authorization': 'Bearer zekwhYgsYYI0zDg0p_Nf5v78VelCfYR0',
'Content-Type': 'application/json',
'Prefer': 'return=representation',
}
auth = ('AZ_4WD_n4iksfwbF********rzHkraVIYQ0ATLfsZW2DzeRC5jjF-va5o2uVQK-n', 'ENkQHmneW******CVZRr7xADBikY6QowcE0')
data = {
"default_template": True,
"template_info": {
"configuration": {
"tax_calculated_after_discount": True,
"tax_inclusive": False,
"allow_tip": True,
"partial_payment": {
"allow_partial_payment": True,
"minimum_amount_due": {
"currency_code": "USD",
"value": "20.00"
}
}
},
"detail": {
"reference": "deal-ref",
"note": "Thank you for your business.",
"currency_code": "USD",
"terms_and_conditions": "No refunds after 30 days.",
"memo": "This is a long contract",
"attachments": [
{
"id": "Screen Shot 2018-11-23 at 16.45.01.png",
"reference_url": "https://api-m.paypal.com/invoice/payerView/attachments/RkG9ggQbd4Mwm1tYdcF6uuixfFTFq32bBdbE1VbtQLdKSoS2ZOYpfjw9gPp7eTrZmVaFaDWzixHXm-OXWHbmigHigHzURDxJs8IIKqcqP8jawnBEZcraEAPVMULxf5iTyOSpAUc2ugW0PWdwDbM6mg-guFAUyj3Z98H7htWNjQY95jb9heOlcSXUe.sbDUR9smAszzzJoA1NXT6rEEegwQ",
"version": "1",
"sig": "JNODB0xEayW8txMQm6ZsIwDnd4eh3hd6ijiRLi4ipHE"
}
],
"payment_term": {
"term_type": "NET_10"
}
},
"invoicer": {
"name": {
"given_name": "David",
"surname": "Larusso"
},
"address": {
"address_line_1": "1234 First Street",
"address_line_2": "337673 Hillside Court",
"admin_area_2": "Anytown",
"admin_area_1": "CA",
"postal_code": "98765",
"country_code": "US"
},
"email_address": "merchant@example.com",
"phones": [
{
"country_code": "001",
"national_number": "4085551234",
"phone_type": "MOBILE"
}
],
"website": "www.test.com",
"tax_id": "ABcNkWSfb5ICTt73nD3QON1fnnpgNKBy-Jb5SeuGj185MNNw6g",
"logo_url": "https://example.com/logo.PNG",
"additional_notes": "2-4"
},
"primary_recipients": [
{
"billing_info": {
"name": {
"given_name": "Stephanie",
"surname": "Meyers"
},
"address": {
"address_line_1": "1234 Main Street",
"admin_area_2": "Anytown",
"admin_area_1": "CA",
"postal_code": "98765",
"country_code": "US"
},
"email_address": "bill-me@example.com",
"phones": [
{
"country_code": "001",
"national_number": "4884551234",
"phone_type": "MOBILE"
}
],
"additional_info": "add-info"
},
"shipping_info": {
"name": {
"given_name": "Stephanie",
"surname": "Meyers"
},
"address": {
"address_line_1": "1234 Main Street",
"admin_area_2": "Anytown",
"admin_area_1": "CA",
"postal_code": "98765",
"country_code": "US"
}
}
}
],
"additional_recipients": [
"inform-me@example.com"
],
"items": [
{
"name": "Yoga Mat",
"description": "new watch",
"quantity": "1",
"unit_amount": {
"currency_code": "USD",
"value": "50.00"
},
"tax": {
"name": "Sales Tax",
"percent": "7.25"
},
"discount": {
"percent": "5"
},
"unit_of_measure": "QUANTITY"
},
{
"name": "Yoga T Shirt",
"quantity": "1",
"unit_amount": {
"currency_code": "USD",
"value": "10.00"
},
"tax": {
"name": "Sales Tax",
"percent": "7.25",
"tax_note": "Reduced tax rate"
},
"discount": {
"amount": {
"currency_code": "USD",
"value": "57.12"
}
},
"unit_of_measure": "QUANTITY"
}
],
"amount": {
"currency_code": "USD",
"value": "60.00"
}
},
"settings": {
"template_item_settings": [
{
"field_name": "items.date",
"display_preference": {
"hidden": True
}
},
{
"field_name": "items.discount",
"display_preference": {
"hidden": False
}
},
{
"field_name": "items.tax",
"display_preference": {
"hidden": False
}
},
{
"field_name": "items.description",
"display_preference": {
"hidden": False
}
},
{
"field_name": "items.quantity",
"display_preference": {
"hidden": True
}
}
],
"template_subtotal_settings": [
{
"field_name": "custom",
"display_preference": {
"hidden": False
}
},
{
"field_name": "discount",
"display_preference": {
"hidden": False
}
},
{
"field_name": "shipping",
"display_preference": {
"hidden": False
}
}
]
},
"unit_of_measure": "QUANTITY",
"standard_template": False
}
data["name"] = "Template"
json_data = json.dumps(data)
response = requests.post('https://api-m.sandbox.paypal.com/v2/invoicing/templates', headers=headers, data=json_data, auth=auth)
print(response.text)
0 个回答
暂无回答