DeliverReceive.php 3.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121
  1. <?php
  2. /**
  3. * PHP for BaiDuSDK
  4. *
  5. * @version 1.0
  6. * @author 91
  7. */
  8. header("Content-type: text/html; charset=utf-8");
  9. if (!function_exists('json_decode')){
  10. exit('您的PHP不支持JSON,请升级您的PHP版本。');
  11. }
  12. /**
  13. * 应用服务器接收服务器端发过来发货通知的接口DEMO
  14. * 当然这个DEMO只是个参考,具体的操作和业务逻辑处理开发者可以自由操作
  15. */
  16. /*
  17. * 这里的AppId和Secretkey是我们自己做测试的
  18. * 开发者可以自己根据自己在平台上创建的具体应用信息进行修改
  19. */
  20. $AppId = 0; //应用开发者appid
  21. $Secretkey = '';//应用开发者apKey
  22. $Res = notify_process($AppId,$Secretkey);
  23. print_r($Res);
  24. /**
  25. * 此函数就是接收服务器那边传过来传后进行各种验证操作处理代码
  26. * @param int $AppId 应用Id
  27. * @param string $Secretkey 应用Secretkey
  28. * @return json 结果信息
  29. */
  30. function notify_process($AppId,$Secretkey){
  31. $Result = array();//存放结果数组
  32. $OrderSerial='';
  33. $CooperatorOrderSerial='';
  34. $Sign='';
  35. $Content='';
  36. //获取参数 提供两种获取参数方式
  37. //1.Request方式获取请求参数
  38. //if(isset($_REQUEST['OrderSerial']))
  39. //$OrderSerial= $_REQUEST['OrderSerial'];
  40. //if(isset($_REQUEST['CooperatorOrderSerial']))
  41. //$CooperatorOrderSerial= $_REQUEST['CooperatorOrderSerial'];
  42. //if(isset($_REQUEST['Sign']))
  43. //$Sign= $_REQUEST['Sign'];
  44. //if(isset($_REQUEST['Content']))
  45. //$Content= $_REQUEST['Content'];//Content通过Request读取的数据已经自动解码
  46. //2.读取POST流方式获取请求参数
  47. $inputParams = file_get_contents('php://input');
  48. $connectorParam = "&";
  49. $spiltParam="=";
  50. if(!empty($inputParams)){
  51. if(strpos($inputParams,$connectorParam) && strpos($inputParams,$spiltParam)){
  52. $list=explode($connectorParam,$inputParams);
  53. //print(count($list));
  54. for($i=0;$i<count($list);$i++){
  55. $kv=explode($spiltParam,$list[$i]);
  56. if(count($kv)>1){
  57. if($kv[0]=="OrderSerial"){
  58. $OrderSerial=$kv[1];
  59. }else if($kv[0]=="CooperatorOrderSerial"){
  60. $CooperatorOrderSerial=$kv[1];
  61. }else if($kv[0]=="Sign"){
  62. $Sign=$kv[1];
  63. }else if($kv[0]=="Content"){
  64. $Content=urldecode($kv[1]); //读取POST流的方式需要进行UrlDecode解码操作
  65. //print($Content);
  66. }
  67. }
  68. }
  69. }
  70. }
  71. //参数检测
  72. if(empty($OrderSerial)||empty($CooperatorOrderSerial)||empty($Sign)
  73. ||empty($Content)){
  74. $Result["AppID"] = $AppId;
  75. $Result["ResultCode"] = 1000;
  76. $Result["ResultMsg"] = urlencode("接收参数失败");
  77. $Result["Sign"] = md5($AppId.$Result["ResultCode"].$Secretkey);
  78. $Result["Content"] = "";
  79. $Res = json_encode($Result);
  80. return urldecode($Res);
  81. }
  82. //检测请求数据签名是否合法
  83. if($Sign != md5($AppId.$OrderSerial.$CooperatorOrderSerial.$Content.$Secretkey)){
  84. $Result["AppID"] = $AppId;
  85. $Result["ResultCode"] = 1001;
  86. $Result["ResultMsg"] = urlencode("签名错误");
  87. $Result["Sign"] = md5($AppId.$Result["ResultCode"].$Secretkey);
  88. $Result["Content"] = "";
  89. $Res = json_encode($Result);
  90. return urldecode($Res);
  91. }
  92. //base64解码
  93. $Content=base64_decode($Content);
  94. //json解析
  95. $Item=extract(json_decode($Content,true));
  96. //$UID $MerchandiseName $OrderMoney $StartDateTime $BankDateTime $OrderStatus $StatusMsg $ExtInfo $VoucherMoney
  97. //print($UID);
  98. //根据获取到的数据,执行业务处理
  99. //返回成功结果
  100. $Result["AppID"] = $AppId;
  101. $Result["ResultCode"] = 1;
  102. $Result["ResultMsg"] = urlencode("成功");
  103. $Result["Sign"] = md5($AppId.$Result["ResultCode"].$Secretkey);
  104. $Result["Content"] = "";
  105. $Res = json_encode($Result);
  106. return urldecode($Res);
  107. }
  108. ?>