在使用 Shippo 进行运输的 Rails 4 应用程序中,根据API 文档,我将以下哈希传递到 Shippo::Shipment.create(shippo_params) :
{
:object_purpose => "PURCHASE",
:async => false,
:address_to => {
"object_purpose" => "PURCHASE",
"name" => "Test Guy",
"street1" => "5000 Test St",
"street2" => "",
"city" => "New Orleans",
"state" => "LA",
"zip" => "70115",
"country" => "US"
},
:address_from => {
"object_purpose" => "PURCHASE",
"company" => "MyCompany",
"street1" => "1305 Business Lane",
"street2" => "Suite O",
"city" => "New Orleans",
"state" => "LA",
"zip" => "70123",
"country" => "US",
"phone" => "+1 999 999 9999",
},
:parcel => {
"length" => 5,
"width" => 5,
"height" => 5,
"distance_unit" => :in,
"weight" => 1,
"mass_unit" => :lb
}
}
然后我收到错误:
Shippo::Exceptions::APIServerError: Unable to read data received back from the server.
如果我使用 API 中引用的以下参数哈希,它可以工作:
params = { object_purpose: 'PURCHASE',
async: false,
address_from: {
object_purpose: 'PURCHASE',
name: 'Mr Hippo',
company: 'Shippo',
street1: '215 Clayton St.',
street2: '',
city: 'San Francisco',
state: 'CA',
zip: '94117',
country: 'US',
phone: '+1 555 341 9393',
email: 'support@goshippo.com' },
address_to: {
object_purpose: 'PURCHASE',
name: 'Mrs Hippo"',
company: 'San Diego Zoo',
street1: '2920 Zoo Drive',
city: 'San Diego',
state: 'CA',
zip: '92101',
country: 'US',
phone: '+1 555 341 9393',
email: 'hippo@goshippo.com' },
parcel: {
length: 5,
width: 2,
height: 5,
distance_unit: :in,
weight: 2,
mass_unit: :lb }
}
两者之间存在细微差别,在调用检查时,前者在键中有一些转义引号,而另一个则没有,但我不知道为什么这很重要(或者为什么要这样设置)。
谁能告诉我有什么区别以及为什么 Shippo 返回此错误?