PayChargeSignService.php 2.1 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152
  1. <?php
  2. require_once dirname(dirname(__FILE__)).'/service/SDKServerService.php';
  3. require_once dirname(dirname(__FILE__)).'/model/SDKException.php';
  4. require_once dirname(dirname(__FILE__)).'/util/ConfigHelper.php';
  5. require_once dirname(dirname(__FILE__)).'/util/LoggerHelper.php';
  6. /**
  7. * 支付前客户端签名计算服务类
  8. * <br>客户端在支付前需调用CP服务端的签名生成方法,CP服务端将签名返回给客户端
  9. * <br><b>注意:此类主要为示例签名计算方法</b>
  10. * <br>具体实现需要CP依据自己与客户端通信的协议加密处理等,避免安全性问题
  11. */
  12. try{
  13. // 接收HTTP POST信息
  14. $request = file_get_contents("php://input");
  15. // 测试数据
  16. //$request = '{"callbackInfo":"callbackInfo","notifyUrl":"notifyUrl","amount":"amount","cpOrderId":"cpOrderId","accountId":"accountId"}';
  17. LoggerHelper::info("[PayChargeSignService.php]收到的客户端待签名的请求:".$request);
  18. // 处理支付回调请求
  19. $reqData = json_decode($request,true);
  20. if($reqData!=null){
  21. $baseService = new BaseSDKService();
  22. //定义签名时排除在外的key,即:指定key不参与签名
  23. $notInKey = array("roleName", "roleId", "grade", "serverId", "signType");
  24. $signSource = $baseService->getSignDataWithoutNotInKey($reqData, $notInKey).ConfigHelper::getStrVal("sdkserver.game.apikey");//组装签名原文
  25. $sign = md5($signSource);//MD5加密签名
  26. LoggerHelper::info("[PayChargeSignService.php]"."[签名原文]:".$signSource);
  27. LoggerHelper::info("[PayChargeSignService.php]"."[签名结果]:".$sign);
  28. $array = array('sign' => $sign);
  29. echo json_encode($array, true);
  30. return;
  31. }
  32. else{
  33. LoggerHelper::info("[PayChargeSignService.php]"."接口返回异常");
  34. $array = array('sign' => null);
  35. echo json_encode($array, true);
  36. return;
  37. }
  38. }
  39. catch (SDKException $e){
  40. LoggerHelper::info("[PayChargeSignService.php]".$e->getMessage());
  41. $array = array('sign' => null);
  42. echo json_encode($array, true);
  43. return;
  44. }