pay.php 2.8 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253
  1. <?php
  2. /**
  3. * 九游创建预订单
  4. * 支付前客户端签名计算服务类
  5. * <br>客户端在支付前需调用CP服务端的签名生成方法,CP服务端将签名返回给客户端
  6. * <br><b>注意:此类主要为示例签名计算方法</b>
  7. * <br>具体实现需要CP依据自己与客户端通信的协议加密处理等,避免安全性问题
  8. */
  9. // 导入uc_sdk
  10. require_once __DIR__ . '/service/SDKServerService.php';
  11. require_once __DIR__ . '/model/SDKException.php';
  12. require_once __DIR__ . '/util/ConfigHelper.php';
  13. require_once __DIR__ . '/util/LoggerHelper.php';
  14. // 导入自定义库
  15. include_once __DIR__ . '/../../../main.php'; # 导入game库
  16. require_once __DIR__ . '/../Mo/payRequest.php'; # 导入通用订单请求结构
  17. require_once __DIR__ . '/../Mo/payResp.php'; # 导入通用返回值结构
  18. use loyalsoft\HttpUtil;
  19. use loyalsoft\JsonUtil;
  20. use loyalsoft\CLog;
  21. try {
  22. HttpUtil::PostOnly(); # 要求客户端必须以post方式提交数据
  23. $str = HttpUtil::getQueryString();
  24. // $str = gzinflate($str);
  25. $data = JsonUtil::decode($str); # 提取请求参数
  26. CLog::pay("[uc.pay.php] 请求签名:" . $str); # 日志
  27. $req = new PayRequest($data);
  28. if ($req != null) {
  29. $baseService = new BaseSDKService();
  30. $notInKey = array("roleName", "roleId", "grade", // # 定义签名时排除在外的key,即:指定key不参与签名
  31. "serverId", "signType", "sign");
  32. // $req->notifyUrl = ConfigHelper::getStrVal("sdkserver.game.notifyUrl"); // 采用智能提取方法
  33. $signSource = $baseService->getSignDataWithoutNotInKey($req->uc_GetData2Sign(), $notInKey)
  34. . ConfigHelper::getStrVal("sdkserver.game.apikey"); # 组装签名原文
  35. $req->sign = md5($signSource); # MD5加密签名
  36. if ($req->InserDataBase()) { # 将订单数据写入数据库
  37. echo payResp::ok($req); # 修改返回值,只返回签名数据
  38. CLog::pay("[uc.pay.php] 创建订单:" . $req); # 日志
  39. } else {
  40. echo payResp::err(1, "创建订单失败!");
  41. CLog::pay("[uc.pay.php] 创建订单失败:" . $req); # 日志
  42. }
  43. } else {
  44. echo payResp::err(1, "提取参数异常");
  45. CLog::pay("[uc.pay.php] 提取参数异常:"); # 日志
  46. }
  47. } catch (SDKException $e) {
  48. echo payResp::err($e->getCode(), $e->getMessage());
  49. CLog::pay("[uc.pay.php] :" . $e->getMessage()); # 日志
  50. }