Aidou.php 3.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118
  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 Aidou extends Complex {
  11. protected $channel_mark = 'aidou';
  12. /**
  13. * 支付处理
  14. */
  15. public function pay()
  16. {
  17. if (empty($_POST)) {
  18. die('请求内容为空');
  19. }
  20. $orderid = urldecode($_POST['orderid']); //下级渠道的订单号
  21. $username = urldecode($_POST['username']);
  22. $gameid = urldecode($_POST['gameid']);
  23. $roleid = urldecode($_POST['roleid']);
  24. $serverid = urldecode($_POST['serverid']);
  25. $paytype = urldecode($_POST['paytype']);
  26. $amount = urldecode($_POST['amount']);
  27. $paytime = urldecode($_POST['paytime']);
  28. $attach = urldecode($_POST['attach']); //这个才是自己聚合层(本级)的订单编号
  29. $sign = urldecode($_POST['sign']);
  30. if(!$this->checkOrder($attach,$amount)){
  31. log_message('订单不存在或订单金额不一致,orderid='.$orderid,'error',LOG_PATH . '../complexPaylog/');
  32. die('订单不存在或订单金额不一致');
  33. }
  34. $polyChannelGameModel = new PolychannelGame;
  35. $param = $polyChannelGameModel->where(['game_id'=>$this->payInfo['gameid'],'channel_id'=>$this->payInfo['channel_id']])->value('param');
  36. if(empty($param)){
  37. log_message('后台渠道游戏中,用于该游戏的验签参数还未设置,orderid='.$orderid,'error',LOG_PATH . '../complexPaylog/');
  38. die('用于验签的参数还未设置');
  39. }
  40. $param = unserialize($param);
  41. $appkey = $param[$gameid];
  42. $str = "orderid=".urlencode($orderid)."&username=".urlencode($username)."&gameid=".urlencode($gameid)."&roleid=".urlencode($roleid)."&serverid=".urlencode($serverid)."&paytype=".urlencode($paytype)."&amount=".$amount."&paytime=".$paytime."&attach=".urlencode($attach);
  43. $str.= "&appkey=".urlencode($appkey);
  44. $thisSign = md5($str);
  45. if ($sign != $thisSign) {
  46. log_message('签名校验失败,参数:'.$str.' 生成的签名thisSign='.$thisSign.' 对方的签名:'.$sign,'error',LOG_PATH . '../complexPaylog/');
  47. die('签名校验失败 ' . $thisSign);
  48. }
  49. // 启动事务
  50. Db::startTrans();
  51. try{
  52. $this->updateOrder($attach,$orderid,$paytime);
  53. // 提交事务
  54. Db::commit();
  55. }
  56. catch (\Exception $e) {
  57. // 回滚事务
  58. Db::rollback();
  59. die('订单生成失败'.$e->getMessage());
  60. }
  61. (new PayCallback())->callBackToCp($attach);
  62. die('success');
  63. }
  64. /**
  65. * 二次登录验证
  66. */
  67. public function checklogin()
  68. {
  69. if (empty($_POST)) {
  70. die('请求内容为空');
  71. }
  72. $username = trim($_POST['username']);
  73. $token = $_POST['token'];
  74. $checkUrl = 'http://apisdk.ad1717.com/v1.helper/checkToken.html';
  75. $response = get_http_response($checkUrl, http_build_query(['username'=>$username,'token'=>$token]));
  76. die($response);
  77. // var_dump($response);
  78. // $response = json_decode($response,true);
  79. // var_dump($response);
  80. /*
  81. if ($response == 'success'){
  82. die('success');
  83. }
  84. else{
  85. die($response);
  86. }
  87. die('failed');
  88. */
  89. }
  90. }