PaybackController.php 4.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139
  1. <?php
  2. /**
  3. * PaybackController.php UTF-8
  4. *
  5. *
  6. * @date : 2018/10/13 18:19
  7. *
  8. * @license 这不是一个自由软件,未经授权不许任何使用和传播。
  9. * @author : wuyonghong <wyh@huosdk.com>
  10. * @version : HuoMp 1.0
  11. */
  12. namespace mini\sdk\controller;
  13. use huo\controller\game\Game;
  14. use huolib\tool\StrUtils;
  15. use think\Controller;
  16. use think\Log;
  17. class PaybackController extends Controller {
  18. private $param = [];
  19. function _initialize() {
  20. parent::_initialize();
  21. $this->param = $this->request->param();
  22. /* 记录请求数据 */
  23. Log::write(
  24. $this->request->server('HTTP_HOST').$this->request->server('REQUEST_URI').'?'.$this->request->getContent(),
  25. Log::LOG
  26. );
  27. }
  28. /**
  29. * 支付回调测试
  30. * http://doc.1tsdk.com/138?page_id=3353
  31. * 【域名】/cp/payback/test
  32. */
  33. public function notify() {
  34. die('SUCCESS');
  35. $_param = $this->param;
  36. /* 1 查询是否具有访问权限 */
  37. $this->checkAuth();
  38. $this->checkParam();
  39. $_data['app_id'] = $_param['app_id'];
  40. $_data['cp_order_id'] = $_param['cp_order_id'];
  41. $_data['mem_id'] = $_param['mem_id'];
  42. $_data['order_id'] = $_param['order_id'];
  43. $_data['order_status'] = $_param['order_status'];
  44. $_data['pay_time'] = $_param['pay_time'];
  45. $_data['product_id'] = $_param['product_id'];
  46. $_data['product_name'] = $_param['product_name'];
  47. $_data['product_price'] = $_param['product_price'];
  48. $_data['ext'] = $_param['ext'];
  49. $_sign = $_param['sign'];
  50. $_data = StrUtils::argSort($_data);
  51. $_check_str = http_build_query($_data);
  52. $_app_key = $this->getAppKey($_data['app_id']);
  53. if (empty($_app_key)) {
  54. die('FAILURE');
  55. }
  56. $_check_sign = md5($_check_str.'&app_key='.$_app_key);
  57. if ($_sign != $_check_sign) {
  58. die('FAILURE');
  59. }
  60. die('SUCCESS');
  61. }
  62. private function checkParam() {
  63. $_param = $this->param;
  64. if (!isset($_param['app_id']) || empty($_param['app_id'])) {
  65. die('app_id 参数为空');
  66. }
  67. if (!isset($_param['cp_order_id']) || empty($_param['cp_order_id'])) {
  68. die('cp_order_id 参数为空');
  69. }
  70. if (!isset($_param['mem_id']) || empty($_param['mem_id'])) {
  71. die('mem_id 参数为空');
  72. } else {
  73. // $_mg_mem_id = HuoSession::getMgMemId();
  74. // if ($_mg_mem_id != $_param['mem_id']) {
  75. // die('mem_id 错误 玩家不存在');
  76. // }
  77. }
  78. if (!isset($_param['order_id']) || empty($_param['order_id'])) {
  79. die('order_id 参数为空');
  80. }
  81. if (!isset($_param['order_status']) || empty($_param['order_status'])) {
  82. die('order_status 参数为空');
  83. }
  84. if (!isset($_param['pay_time']) || empty($_param['pay_time'])) {
  85. die('pay_time 参数为空');
  86. }
  87. if (!isset($_param['product_id']) || empty($_param['product_id'])) {
  88. die('product_id 参数为空');
  89. }
  90. if (!isset($_param['product_name']) || empty($_param['product_name'])) {
  91. die('product_name 参数为空');
  92. }
  93. if (!isset($_param['product_price']) || empty($_param['product_price'])) {
  94. die('product_price 参数为空');
  95. }
  96. if (!isset($_param['ext'])) {
  97. die('ext 参数为空');
  98. }
  99. if (!isset($_param['sign']) || empty($_param['sign'])) {
  100. die('sign 参数为空');
  101. }
  102. }
  103. /**
  104. * 获取APPKEY
  105. *
  106. * @param $app_id
  107. *
  108. * @return bool
  109. */
  110. private function getAppKey($app_id) {
  111. $_app_key = (new Game())->getAppKey($app_id);
  112. if (empty($_app_key)) {
  113. return false;
  114. }
  115. return $_app_key;
  116. }
  117. /**
  118. * 校验权限
  119. *
  120. * @return bool
  121. */
  122. private function checkAuth() {
  123. $_ip = $this->request->ip();
  124. if (!is_string($_ip)) {
  125. die('FAILURE');
  126. }
  127. return true;
  128. }
  129. }