最近对接美团配送,在初次调用接口的时候,就遇到了几个坑,尽管美团配送开发文档比较规范,可还是有不够详尽的地方,在对接的时候容易踩坑。
一、参数传递
在调用接口传参的时候,都使用post请求方式,我尝试了将参数以数组、json、XML的形式传递,皆返回错误信息:缺少xxx参数,我仔细检查,参数都有!
没办法对接到他们的技术,而且他们的客服又不懂,能查的资料又很少,费好大劲终于知道参数要自己拼接成类似于a=&c=3&b=1的字符串,然后传递过去。
二、签名加密
鉴于参数传递要拼接成key1=value1&key2=value2的形式,我就偷懒直接使用了http_build_query()函数来处理参数,结果一直报签名错误。
原因在于:http_build_query()方法会将中文进行urlencode编码,也就是自己在生成签名的时候,用的是中文,但是传递参数的时候中文就成了urlencode编码之后的字符串,很自然而然的对不上。
原始数据:
$product = [
'id' => 1,
'title' => '茅台飞天52°',
'product_class_title' => '酒水/饮料',
'price' => 9.01,
];
http_build_query()函数处理后数据:
id=1&title=%E8%8C%85%E5%8F%B0%E9%A3%9E%E5%A4%A952%C2%B0&product_class_title=%E9%85%92%E6%B0%B4%2F%E9%A5%AE%E6%96%99&price=9.01
实