问题
When I send an update request to the QBO V2 api, I get back an 'internal server error' response. These requests used to work; I even have an unchanged unit test from before specifically for this request that no longer works.
All of my other request types seem to still be working. Normally QBO gives pretty decent error messages if it's something I messed up with the request.
Has anyone else run into a similar issue recently, or have any ideas on what I could be doing that wouldn't result in a normal error message?
Here's a copy of one of the requests:
POST /resource/customer/v2/682571780/1?oauth_version=1.0&oauth_token=*token*&oauth_nonce=*nonce*&oauth_timestamp=1372345998&oauth_signature=*signature*&oauth_consumer_key=*key*&oauth_signature_method=HMAC-SHA1 HTTP/1.1
Host: qbo.sbfinance.intuit.com
Content-Length: 1368
content-type: application/xml
Accept-Encoding: gzip, deflate, compress
Accept: */*
User-Agent: python-requests/1.2.3 CPython/2.7.3 Linux/3.5.0-17-generic
<?xml version='1.0' encoding='ASCII' standalone='yes'?>
<Customer xmlns="http://www.intuit.com/sb/cdm/v2">
<Id idDomain="QBO">1</Id>
<SyncToken>49</SyncToken>
<MetaData>
<CreateTime>2013-04-10T14:07:41-07:00</CreateTime>
<LastUpdatedTime>2013-04-25T09:40:40-07:00</LastUpdatedTime>
</MetaData>
<Name>Test A. User</Name>
<Address>
<Line1>123 Test Drive</Line1>
<City>Smallville</City>
<Country>United States of America</Country>
<CountrySubDivisionCode>WY</CountrySubDivisionCode>
<PostalCode>12345</PostalCode>
<GeoCode>LAT=42.8142432,LNG=-73.9395687</GeoCode>
<Tag>Billing</Tag>
</Address>
<Phone>
<DeviceType>Primary</DeviceType>
<FreeFormNumber>(123) 456-7890</FreeFormNumber>
</Phone>
<WebSite/>
<Email>
<Address>test-user@mailinator.com</Address>
</Email>
<GivenName>Test</GivenName>
<MiddleName>A</MiddleName>
<FamilyName>User</FamilyName>
<DBAName>Emerging Threats</DBAName>
<CustomField>
<DefinitionId>Preferred Delivery Method</DefinitionId>
<Value>PRINT</Value>
</CustomField>
<CustomField>
<DefinitionId>Resale Number</DefinitionId>
</CustomField>
<CustomField>
<DefinitionId>Bill With Parent</DefinitionId>
<Value>false</Value>
</CustomField>
<ShowAs>Test User</ShowAs>
<OpenBalance>
<Amount>20.00</Amount>
</OpenBalance>
</Customer>
回答1:
Can you please try the following XML in ApiExplorer. It worked fine for me. ApiExplorer - https://developer.intuit.com/apiexplorer?apiname=V2QBO
Please change the Id and Synctoken, Name etc with correct test data.
PN - Looks like customeFields in the post body are not supported while updating QBO Customer. https://developer.intuit.com/docs/0025_quickbooksapi/0050_data_services/v2/0400_quickbooks_online/customer
<?xml version="1.0" encoding="utf-8"?>
<Customer xmlns:ns2="http://www.intuit.com/sb/cdm/qbo" xmlns="http://www.intuit.com/sb/cdm/v2">
<Id>4</Id>
<SyncToken>6</SyncToken>
<MetaData>
<CreateTime>2013-04-10T14:07:41-07:00</CreateTime>
<LastUpdatedTime>2013-04-25T09:40:40-07:00</LastUpdatedTime>
</MetaData>
<TypeOf>Person</TypeOf>
<Name>John Doe NEW 2</Name>
<Address>
<Line1>123 Test Drive</Line1>
<City>Smallville</City>
<Country>United States of America</Country>
<CountrySubDivisionCode>WY</CountrySubDivisionCode>
<PostalCode>12345</PostalCode>
<GeoCode>LAT=42.8142432,LNG=-73.9395687</GeoCode>
<Tag>Billing</Tag>
</Address>
<Phone>
<DeviceType>Primary</DeviceType>
<FreeFormNumber>(123) 456-7890</FreeFormNumber>
</Phone>
<WebSite/>
<Email>
<Address>test-user@mailinator.com</Address>
</Email>
<GivenName>Test</GivenName>
<MiddleName>A</MiddleName>
<FamilyName>User</FamilyName>
<DBAName>Emerging Threats</DBAName>
<ShowAs>Test User</ShowAs>
<OpenBalance>
<Amount>20.00</Amount>
</OpenBalance>
</Customer>
Please let me know if it works for you.
Thanks
来源:https://stackoverflow.com/questions/17347156/internal-server-error-on-qbo-api-update-call