在对接美团外卖,新手,怎么获取回掉地址中的数据,并返回给美团成功标识?
一下方法可以获取数据,那怎么返回给美团 success呢??
public function cancel_mt_address(){
header("Content-type:text/html; charset=utf8");
$demo = array(
'data' => 'success'
);
$demo_json = json_encode($demo);
$postStr = file_get_contents("php://input");
if($postStr != NULL){
$ps = print_r($postStr, 1);
//$this->writeLog("门店映射回调返回数据postStr:", $ps);
log::write('yangzl', log::EMERG);
log::write($ps, log::EMERG);
echo $demo_json;
}else{
echo $demo_json;
// $this->writeLog('门店映射回调返回数据data:', $demo_json);
log::write('yangzl2', log::EMERG);
log::write($demo_json, log::EMERG);
}
}
curl函数了解一下 举个例子
$url ="http://xflshop.sevensme.com/index.php?m=orderapi&a=ChengE_back_url"; $ch = curl_init(); $timeout = 30; curl_setopt($ch, CURLOPT_URL, $url); curl_setopt($ch, CURLOPT_HTTPHEADER, array('Content-type: application/json')); curl_setopt($ch, CURLOPT_POSTFIELDS, $json_data); curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); curl_setopt($ch, CURLOPT_USERAGENT, "jb51.net's CURL Example beta"); curl_setopt ($ch, CURLOPT_CONNECTTIMEOUT, $timeout); $file_contents = curl_exec($ch); $file_contents = json_decode($file_contents,true);
$json_data就是向接口发送的数据 $file_contents就是返回的数据
你这是调用别人的接口,获取的返货数据,那么你怎么告诉他你收到了,怎么回复第三次握手?
@yangzailu: 这种接口哪有第三次交互, 双向的接口都是你提供一个url,美团那边会即时向这个url发送数据,获得数据处理完了返回成功或者失败.
@yangzailu: 一般三次以上握手都是websocket来做的 api接口不可能的,用api的话那就调用2次
个人观点,希望采纳.
1. 接口返回一般以xml和json的形式去发送, 而你是以text/html的形式发送的头部信息.所以,数据会直接打印到页面上.
2. json的头部信息是: header('Content-type:application/json;charset=utf-8'), 返回值应该是 echo json_encode(['code' => 1, 'status' =>'success', 'message' => '请求成功', 'data' => []]);
3. 建议使用框架来写接口, 比如: yii2的yii\rest\controller底层接口类, 你只需要继承.