Fuyou.php 11 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342
  1. <?php
  2. namespace app\notify\controller;
  3. use app\core\model\Bank;
  4. use app\core\model\User;
  5. use app\core\model\UserCancelLog;
  6. use app\core\model\UserDrawcash;
  7. use app\core\model\UserRecharge;
  8. use app\core\service\Finance;
  9. use think\Controller;
  10. use think\Log;
  11. use think\Request;
  12. use tool\Common;
  13. class Fuyou extends Controller
  14. {
  15. //充值接口通知,2分钟之后调用
  16. public function recharge() {
  17. /*$param = Request::instance()->param();
  18. Log::write('notify begin', 'fuyou');
  19. Log::write($param, 'fuyou');
  20. vendor('fuyou.Gold');
  21. $gold = new \Gold();
  22. $check = $gold->rsaVerify($param['amt'].'|'.$param['login_id'].'|'.$param['mchnt_cd'].'|'.$param['mchnt_txn_ssn'].'|'.$param['resp_code'], $param['signature']);
  23. if(!$check) {
  24. Log::write('验证失败', 'fuyou');
  25. }
  26. $finance = new Finance();
  27. //传入第三方订单号
  28. $result = $finance->userRecharge_notify($msg, $param['mchnt_txn_ssn'], $param['amt'], $param['login_id']);//消息提示,流水号,金额,手机号
  29. Log::write($msg, 'fuyou');
  30. if(!$result) {
  31. $str = '<plain>'.
  32. '<resp_code>'.'1111'.'</resp_code>'.
  33. '<mchnt_cd>'.$gold->getMchID().'</mchnt_cd>'.
  34. '<mchnt_txn_ssn>'.$param['mchnt_txn_ssn'].'</mchnt_txn_ssn>'.
  35. '</plain>';
  36. Log::write($str, 'fuyou');
  37. $sign = $gold->rsaSign($str);
  38. Log::write('end', 'fuyou');
  39. return '<ap>'.
  40. '<plain>'.
  41. $str.
  42. '<signature>'.$sign.'</signature>'.
  43. '</ap>';
  44. }
  45. $str = '<plain>'.
  46. '<resp_code>'.'0000'.'</resp_code>'.
  47. '<mchnt_cd>'.$gold->getMchID().'</mchnt_cd>'.
  48. '<mchnt_txn_ssn>'.$param['mchnt_txn_ssn'].'</mchnt_txn_ssn>'.
  49. '</plain>';
  50. Log::write($str, 'fuyou');
  51. $sign = $gold->rsaSign($str);
  52. Log::write('end', 'fuyou');
  53. return '<ap>'.
  54. '<plain>'.
  55. $str.
  56. '<signature>'.$sign.'</signature>'.
  57. '</ap>';*/
  58. }
  59. //充值实时同步
  60. public function rechargePage() {
  61. $param = Request::instance()->param();
  62. $this->assign('from', isset($param['from']) ? $param['from'] : '');
  63. vendor('fuyou.Gold');
  64. $gold = new \Gold();
  65. $check = $gold->rsaVerify($param['amt'].'|'.$param['login_id'].'|'.$param['mchnt_cd'].'|'.$param['mchnt_txn_ssn'].'|'.$param['resp_code'], $param['signature']);
  66. if(!$check) {
  67. Log::write('充值验证失败', 'fuyou');
  68. $this->assign('icon', 2);
  69. return $this->fetch();
  70. }
  71. if($param['resp_code'] != '0000') {
  72. $this->assign('icon', 2);
  73. return $this->fetch();
  74. }
  75. $userRecharge = UserRecharge::get([
  76. 'outerNumber'=>$param['mchnt_txn_ssn']
  77. ]);
  78. if(!$userRecharge) {
  79. $this->assign('icon', 2);
  80. return $this->fetch();
  81. }
  82. $bank = Bank::get($userRecharge['bankID']);
  83. $this->assign('bankNumber', substr($userRecharge['bankNumber'], (strlen($userRecharge['bankNumber'])-4)));
  84. $this->assign('bankName', $bank['bankName']);
  85. $this->assign('money', $userRecharge['money']);
  86. $this->assign('icon', 1);
  87. return $this->fetch();
  88. }
  89. //充值实时异步
  90. public function rechargeNotify() {
  91. $param = Request::instance()->param();
  92. Log::write('notify begin', 'fuyou');
  93. Log::write($param, 'fuyou');
  94. Log::write('end', 'fuyou');
  95. vendor('fuyou.Gold');
  96. $gold = new \Gold();
  97. $check = $gold->rsaVerify($param['amt'].'|'.$param['login_id'].'|'.$param['mchnt_cd'].'|'.$param['mchnt_txn_ssn'].'|'.$param['resp_code'], $param['signature']);
  98. if(!$check) {
  99. Log::write('充值验证失败', 'fuyou');
  100. }
  101. if($param['resp_code'] != '0000') {
  102. exit;
  103. }
  104. $finance = new Finance();
  105. $finance->userRecharge_notify($msg, $param['mchnt_txn_ssn'], $param['amt'], $param['login_id']);
  106. Log::write($msg, 'fuyou');
  107. }
  108. //提现接口通知,2分钟之后调用
  109. public function drawcash() {
  110. //Log::info(request());
  111. }
  112. //提现实时同步
  113. public function drawcashPage() {
  114. /*$this->assign('bankNumber', '123123123123123123123123');
  115. $this->assign('bankName', '中国旗舰银行');
  116. $this->assign('money', '200.00');
  117. $this->assign('reachTime', '2012年2月12 下周二');
  118. $this->assign('icon', 1);
  119. $this->assign('from', isset($param['from']) ? $param['from'] : '');
  120. return $this->fetch();*/
  121. $param = Request::instance()->param();
  122. $this->assign('from', isset($param['from']) ? $param['from'] : '');
  123. vendor('fuyou.Gold');
  124. $gold = new \Gold();
  125. $check = $gold->rsaVerify($param['amt'].'|'.$param['login_id'].'|'.$param['mchnt_cd'].'|'.$param['mchnt_txn_ssn'].'|'.$param['resp_code'], $param['signature']);
  126. if(!$check) {
  127. Log::write('提现验证失败', 'fuyou');
  128. $this->assign('icon', 2);
  129. return $this->fetch();
  130. }
  131. //更新userDrawcash可能和异步重复,但是不影响业务
  132. //$finance = new Finance();
  133. //$finance->userDrawcash_notify($msg, $param['mchnt_txn_ssn'], $param['amt'], $param['login_id']);
  134. //Log::write($msg, 'fuyou');
  135. if($param['resp_code'] != '0000') {
  136. $this->assign('icon', 2);
  137. return $this->fetch();
  138. }
  139. $userDrawcash = UserDrawcash::get([
  140. 'outerNumber'=>$param['mchnt_txn_ssn']
  141. ]);
  142. if(!$userDrawcash) {
  143. $this->assign('icon', 2);
  144. return $this->fetch();
  145. }
  146. $weekIndex= date("w",strtotime(Common::timetodate(THINK_START_TIME, 0)));
  147. $reachTime = '';
  148. if($weekIndex == 5) {
  149. $reachTime = '预计下周一'.Common::timetodate(THINK_START_TIME, 7).'前到账';
  150. }
  151. else {
  152. $reachTime = '预计明日'.Common::timetodate(THINK_START_TIME, 7).'前到账';
  153. }
  154. $bank = Bank::get($userDrawcash['bankID']);
  155. $this->assign('bankNumber', substr($userDrawcash['bankNumber'], (strlen($userDrawcash['bankNumber'])-4)));
  156. $this->assign('bankName', $bank['bankName']);
  157. $this->assign('money', $userDrawcash['money']);
  158. $this->assign('reachTime', $reachTime);
  159. $this->assign('icon', 1);
  160. return $this->fetch();
  161. }
  162. //提现实时异步
  163. public function drawcashNotify() {
  164. $param = Request::instance()->param();
  165. Log::write('notify begin', 'fuyou');
  166. Log::write($param, 'fuyou');
  167. Log::write('end', 'fuyou');
  168. vendor('fuyou.Gold');
  169. $gold = new \Gold();
  170. $check = $gold->rsaVerify($param['amt'].'|'.$param['login_id'].'|'.$param['mchnt_cd'].'|'.$param['mchnt_txn_ssn'].'|'.$param['resp_code'], $param['signature']);
  171. if(!$check) {
  172. Log::write('提现验证失败', 'fuyou');
  173. }
  174. $finance = new Finance();
  175. $finance->userDrawcash_notify($msg, $param['mchnt_txn_ssn'], $param['amt'], $param['login_id']);
  176. Log::write($msg, 'fuyou');
  177. }
  178. //交易接口通知,2分钟之后调用
  179. public function trade() {
  180. /*Log::info(request());
  181. $param = Request::instance()->param();
  182. Log::write('notify begin', 'fuyou');
  183. Log::write($param, 'fuyou');
  184. vendor('fuyou.Gold');
  185. $gold = new \Gold();
  186. $check = $gold->rsaVerify($param['amt'].'|'.$param['login_id'].'|'.$param['mchnt_cd'].'|'.$param['mchnt_txn_ssn'].'|'.$param['resp_code'], $param['signature']);
  187. if(!$check) {
  188. Log::write('验证失败', 'fuyou');
  189. }
  190. $finance = new Finance();
  191. //传入第三方订单号
  192. $result = $finance->userRecharge_notify($msg, $param['mchnt_txn_ssn']);
  193. Log::write($msg, 'fuyou');
  194. if(!$result) {
  195. $str = '<plain>'.
  196. '<resp_code>'.'1111'.'</resp_code>'.
  197. '<mchnt_cd>'.$gold->getMchID().'</mchnt_cd>'.
  198. '<mchnt_txn_ssn>'.$param['mchnt_txn_ssn'].'</mchnt_txn_ssn>'.
  199. '</plain>';
  200. Log::write($str, 'fuyou');
  201. $sign = $gold->rsaSign($str);
  202. Log::write('end', 'fuyou');
  203. return '<ap>'.
  204. '<plain>'.
  205. $str.
  206. '<signature>'.$sign.'</signature>'.
  207. '</ap>';
  208. }
  209. $str = '<plain>'.
  210. '<resp_code>'.'0000'.'</resp_code>'.
  211. '<mchnt_cd>'.$gold->getMchID().'</mchnt_cd>'.
  212. '<mchnt_txn_ssn>'.$param['mchnt_txn_ssn'].'</mchnt_txn_ssn>'.
  213. '</plain>';
  214. Log::write($str, 'fuyou');
  215. $sign = $gold->rsaSign($str);
  216. Log::write('end', 'fuyou');
  217. return '<ap>'.
  218. '<plain>'.
  219. $str.
  220. '<signature>'.$sign.'</signature>'.
  221. '</ap>';*/
  222. }
  223. //退票接口通知,2分钟之后调用
  224. public function refundTicket() {
  225. Log::info(request());
  226. }
  227. //修改用户信息接口通知,2分钟之后调用
  228. public function updateUser() {
  229. Log::info(request());
  230. }
  231. //注销用户实时同步
  232. public function cancelUser() {
  233. $param = Request::instance()->param();
  234. $this->assign('from', isset($param['from']) ? $param['from'] : '');
  235. Log::write('canceluser notify begin', 'fuyou');
  236. Log::write($param, 'fuyou');
  237. Log::write('end', 'fuyou');
  238. vendor('fuyou.Gold');
  239. $gold = new \Gold();
  240. $check = $gold->rsaVerify($param['login_id'].'|'.$param['mchnt_cd'].'|'.$param['mchnt_txn_ssn'].'|'.$param['resp_code'].'|'.$param['resp_desc'], $param['signature']);
  241. if(!$check) {
  242. $this->assign('icon', 2);
  243. return $this->fetch();
  244. }
  245. if($param['resp_code'] != '0000') {
  246. $this->assign('msg', $param['resp_desc']);
  247. $this->assign('icon', 2);
  248. return $this->fetch();
  249. }
  250. $userCancelLog = UserCancelLog::get([
  251. 'outerNumber'=>$param['mchnt_txn_ssn']
  252. ]);
  253. if(!$userCancelLog) {
  254. $this->assign('icon', 2);
  255. return $this->fetch();
  256. }
  257. $userCancelLog['status'] = UserCancelLog::STATUS_SUCCESS;
  258. $userCancelLog['resultTime'] = THINK_START_TIME;
  259. $userCancelLog->save();
  260. User::update([
  261. 'status'=>User::STATUS_UNBANDING,
  262. 'token'=>'',
  263. 'tokenOverTime'=>0
  264. ], [
  265. 'userID'=>$userCancelLog['userID']
  266. ]);
  267. $this->assign('icon', 1);
  268. return $this->fetch();
  269. }
  270. }