当前位置:Gxlcms > PHP教程 > php回调接口怎么写

php回调接口怎么写

时间:2021-07-01 10:21:17 帮助过:20人阅读

1、第三方回调API说明:

接口地址:无[需在第三方后台配置]

请求方法:无

请求参数:无

返回参数

type:短信类型:1广告;2祝福

count:本次推送的短信总数

id:唯一标识

mobile:短信号码

userId:用户账号

status:发送状态:0失败;1成功

返回结果:[XML格式]

相关推荐:《php基础教程》

例如:

  1. <?xml version="1.0" encoding="utf-8"?>
  2. <returnData>
  3. <type>1</type>
  4. <count>2</count>
  5. <list>
  6. <allRet>
  7. <id>1529051684657847</id>
  8. <mobile>187********</mobile>
  9. <status>0</status>
  10. <userId>zzzppp</userId>
  11. </allRet>
  12. <allRet>
  13. <id>1529051612347847</id>
  14. <mobile>137********</mobile>
  15. <status>1</status>
  16. <userId>wwwhhh</userId>
  17. </allRet>
  18. </list>
  19. </returnData>

响应说明:客户端接收成功请返回:100或OK或SUCCESS

2、php回调代码:

  1. //PHP接收回调地址操作
  2. public function backAction(){
  3. //模拟获取接收的数据
  4. $contents = $this->getData(); //本地模拟接口获取到的数据
  5. //$contents = file_get_contents('php://input');
  6. $data = $contents ? $this->_xmlToArray($contents) : array();
  7. //写回滚日志
  8. $filePath = APP_PATH."/data/log/";
  9. $this->createDirectory($filePath); //目录不存在,则创建
  10. $fileName = $filePath."back.txt";
  11. file_put_contents( $fileName, date('Ymd H:i:s')."\r\n".(json_encode($data))."\r\n", FILE_APPEND | LOCK_EX);
  12. //var_export($data);die;
  13. $cnt = 0;
  14. $result = $data['list']['allRet'];
  15. /**根据回调结果处理我们数据库的逻辑*/
  16. //START
  17. foreach ($result as $k => $v){ //在循环中[根据唯一标识ID]处理自己数据了的逻辑
  18. $userMobile = $v['mobile'];
  19. if($v['status'] == 1 ){
  20. }else{
  21. }
  22. $cnt ++;
  23. }
  24. //END
  25. if( $cnt == $data['count'] ){
  26. file_put_contents( $fileName, date('Ymd H:i:s')."\r\n".(json_encode($data))."\r\n", FILE_APPEND | LOCK_EX);
  27. //写结果日志
  28. exit('SUCCESS'); //响应第三方[在回调中返回结果,告诉人家自己是否回调成功,否则人家可能会回调N次]
  29. }else{
  30. file_put_contents( $fileName, date('Ymd H:i:s')."\r\n".(json_encode($data))."\r\n", FILE_APPEND | LOCK_EX);
  31. //写结果日志
  32. exit('ERROR');
  33. }
  34. }
  35. //XML格式化成数组
  36. function _xmlToArray($xml){
  37. libxml_disable_entity_loader(true);
  38. $xmlstring = simplexml_load_string($xml, 'SimpleXMLElement', LIBXML_NOCDATA);
  39. $val = json_decode(json_encode($xmlstring),true);
  40. return $val;
  41. }
  42. //递归创建目录[在linux下要有创建目录的权限才能创建目录 chmod -R 777 /var/data/log ]
  43. public function createDirectory( $dir ){
  44. return is_dir ( $dir ) or $this->createDirectory(dirname( $dir )) and mkdir ( $dir , 0777);
  45. }
  46. public function getData(){
  47. $xml = '<?xml version="1.0" encoding="utf-8"?>
  48. <returnData>
  49. <type>1</type>
  50. <count>2</count>
  51. <list>
  52. <allRet>
  53. <id>1529051684657847</id>
  54. <mobile>187********</mobile>
  55. <status>0</status>
  56. <userId>zzzppp</userId>
  57. </allRet>
  58. <allRet>
  59. <id>1529051612347847</id>
  60. <mobile>137********</mobile>
  61. <status>1</status>
  62. <userId>wwwhhh</userId>
  63. </allRet>
  64. </list>
  65. </returnData>';
  66. return $xml;
  67. }

以上就是php回调接口怎么写的详细内容,更多请关注Gxl网其它相关文章!

人气教程排行