PaybackController.php 4.9 KB

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