Zoulboom.php 4.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156
  1. <?php
  2. /**
  3. * 曜众子渠道对接
  4. *
  5. */
  6. namespace app\complex\controller;
  7. use app\common\model\PolychannelGame;
  8. use app\common\logic\PayCallback;
  9. use think\Db;
  10. class Zoulboom extends Complex {
  11. protected $channel_mark = 'zoulboom';
  12. /**
  13. * 初始化操作
  14. */
  15. public function _initialize() {
  16. log_message('=== '.$this->channel_mark.' --请求参数记录==='.json_encode($_REQUEST),'log',LOG_PATH . '../complexPaylog/');
  17. }
  18. /**
  19. * 支付处理
  20. */
  21. public function pay()
  22. {
  23. if (empty($_REQUEST)) {
  24. die('请求内容为空');
  25. }
  26. $params = array();
  27. $params['cporderid'] = $attach = trim($_REQUEST['cporderid']);
  28. $params['orderid'] = $orderid = trim($_REQUEST['orderid']); //下级渠道的订单号
  29. $params['appid'] = $appid = trim($_REQUEST['appid']);
  30. $params['uid'] = trim($_REQUEST['uid']);
  31. $params['time'] = $paytime = trim($_REQUEST['time']);
  32. $params['extinfo'] = trim($_REQUEST['extinfo']);
  33. $params['amount'] = $amount = trim($_REQUEST['amount']);
  34. $params['serverid'] = trim($_REQUEST['serverid']);
  35. $params['charid'] = trim($_REQUEST['charid']);
  36. $sign = trim($_REQUEST['sign']);
  37. if(!$this->checkOrder($attach,$amount)){
  38. log_message('订单不存在或订单金额不一致,orderid='.$orderid,'error',LOG_PATH . '../complexPaylog/');
  39. die('订单不存在或订单金额不一致');
  40. }
  41. $polyChannelGameModel = new PolychannelGame;
  42. $param = $polyChannelGameModel->where(['game_id'=>$this->payInfo['gameid'],'channel_id'=>$this->payInfo['channel_id']])->value('param');
  43. if(empty($param)){
  44. log_message('后台渠道游戏中,用于该游戏的验签参数还未设置,orderid='.$orderid,'error',LOG_PATH . '../complexPaylog/');
  45. die('用于验签的参数还未设置');
  46. }
  47. $param = unserialize($param);
  48. $appkey = $param[$appid];
  49. ksort($params); //对关联数组按照键名进行升序排序
  50. $signstr = http_build_query($params);
  51. $thisSign = md5($signstr.$appkey);
  52. if ($sign != $thisSign) {
  53. log_message('签名校验失败,参数:'.$str.' 生成的签名thisSign='.$thisSign.' 对方的签名:'.$sign,'error',LOG_PATH . '../complexPaylog/');
  54. die('签名校验失败 ' . $thisSign);
  55. }
  56. // 启动事务
  57. Db::startTrans();
  58. try{
  59. $this->updateOrder($attach,$orderid,$paytime);
  60. // 提交事务
  61. Db::commit();
  62. }
  63. catch (\Exception $e) {
  64. // 回滚事务
  65. Db::rollback();
  66. die('订单生成失败'.$e->getMessage());
  67. }
  68. // 【产品确认:测试阶段暂时不用通知CP】通知CP,支付成功
  69. (new PayCallback())->callBackToCp($attach);
  70. die('success');
  71. }
  72. /**
  73. * 二次登录验证(安卓)
  74. */
  75. public function checkloginadr()
  76. {
  77. /*
  78. $_POST['appid'] = '100073';
  79. $_POST['uid'] = '122211';
  80. $_POST['token'] = '123213213';
  81. $_POST['time'] = time();
  82. $_POST['sessid'] = '32423432432';
  83. */
  84. if (empty($_POST)) {
  85. die('请求内容为空');
  86. }
  87. $appid = trim($_POST['appid']);
  88. $sessionid = trim($_POST['sessionid']);
  89. $time = trim($_POST['time']);
  90. $sdkversion = '1.1';
  91. $appkeyArrs = array("jTaZHB25JGysZyYJ"=>"aBCNxrR7rhTTQCXb6AyjJMHd5yx4fDNa");
  92. if(!isset($appkeyArrs{$appid})){
  93. die('APP秘钥未配置');
  94. }
  95. else{
  96. $appkey = $appkeyArrs{$appid};
  97. }
  98. $sign = md5($sessionid.$appid.$time.$sdkversion.$appkey);
  99. $checkUrl = 'http://api.zoulboom.com/?ct=login&ac=user_login';
  100. $response = get_http_response($checkUrl, http_build_query(['appid'=>$appid,'sdkversion'=>$sdkversion,'sessionid'=>$sessionid,'time'=>$time,'sign'=>$sign]));
  101. die($response);
  102. }
  103. /**
  104. * 二次登录验证(iOS)
  105. */
  106. public function checkloginios()
  107. {
  108. /*
  109. $_POST['token'] = '123213213';
  110. */
  111. if (empty($_POST)) {
  112. die('请求内容为空');
  113. }
  114. $token = trim($_POST['token']);
  115. $checkUrl = 'http://api.zoulboom.com/?ct=sdk&ac=user_login';
  116. $response = get_http_response($checkUrl, http_build_query(['token'=>$token]));
  117. die($response);
  118. }
  119. }