Pay.php 28 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787
  1. <?php
  2. namespace app\api\controller;
  3. use app\common\controller\Api;
  4. use think\Config;
  5. use think\Db;
  6. /**
  7. * 会员接口
  8. */
  9. class Pay extends Api
  10. {
  11. protected $noNeedLogin = ['notify'];
  12. protected $noNeedRight = '*';
  13. public function _initialize()
  14. {
  15. parent::_initialize();
  16. if (!Config::get('fastadmin.usercenter')) {
  17. $this->error(__('User center already closed'));
  18. }
  19. }
  20. //二合一支付
  21. public function pay() {
  22. $user_token = input('user_token', '', 'trim');
  23. $diversionfst = input('diversionfst', '', 'trim'); //位置等导流标识
  24. $diversioncsk = input('diversioncsk', '', 'trim'); //内容等导流标识
  25. $trace_id = input('trace_id', '', 'trim'); //大数据推荐内容有trace_id
  26. $contentid = input('contentid', '', 'trim'); //订购媒资的媒资movie_id
  27. if (!$user_token) {
  28. $this->error('参数缺失');
  29. }
  30. //生成支付订单记录
  31. $rechar_order['user_id'] = $this->auth->id;
  32. $rechar_order['order_no'] = date('YmdHis', time()) . $this->auth->id . rand(10000000, 99999999); //微信订单编号
  33. $rechar_order['money'] = 49;
  34. $rechar_order['purpose'] = 3; //充值用途:1=支付订单,2=充值,3=开通会员
  35. $rechar_order['pay_type'] = 'zhuowang';
  36. $rechar_order['relation_id'] = 1;
  37. $rechar_order['createtime'] = time();
  38. //开始事务
  39. $result = Db::name('rechar_order')->insertGetId($rechar_order);
  40. if (!$result) {
  41. $this->error('网络延迟,请稍后再试');
  42. }
  43. $url = 'http://' . config('pay_ip') . '/HDC/3.0/hop/svc/pay/toPay.ajax';
  44. $data = [
  45. 'transId' => $rechar_order['order_no'],
  46. 'orderNo' => $rechar_order['order_no'],
  47. 'userToken' => $user_token,
  48. 'notifyUrl' => config('img_url') . '/api/pay/notify',
  49. 'backUrl' => 'http://aspire.jshdc.payback',
  50. 'deskCode' => config('desk_code'),
  51. 'products' => [
  52. [
  53. 'productCode' => config('product_code'),
  54. 'productPrice' => '29',
  55. 'productUnit' => '个',
  56. 'productCount' => 1
  57. ],
  58. /*[
  59. 'productCode' => '005912cp0028',
  60. 'productPrice' => '0',
  61. 'productUnit' => '7天体验',
  62. 'productCount' => 1
  63. ],*/
  64. [
  65. 'productCode' => '005912cp0004',
  66. 'productPrice' => '0',
  67. 'productUnit' => '30天体验',
  68. 'productCount' => 1
  69. ],
  70. [
  71. 'productCode' => '0002112cp0030',
  72. 'productPrice' => '0',
  73. 'productUnit' => '90天体验',
  74. 'productCount' => 1
  75. ],
  76. [
  77. 'productCode' => '005911cp0022',
  78. 'productPrice' => '199',
  79. 'productUnit' => '年度特惠',
  80. 'productCount' => 1
  81. ],
  82. [
  83. 'productCode' => '005912cp0051',
  84. 'productPrice' => '119',
  85. 'productUnit' => '半年特惠',
  86. 'productCount' => 1
  87. ],
  88. [
  89. 'productCode' => '005912cp0052',
  90. 'productPrice' => '59',
  91. 'productUnit' => '季度特惠',
  92. 'productCount' => 1
  93. ],
  94. [
  95. 'productCode' => '005912cp0044',
  96. 'productPrice' => '20',
  97. 'productUnit' => '咪咕叠加包',
  98. 'productCount' => 1
  99. ],
  100. [
  101. 'productCode' => '005912cp0047',
  102. 'productPrice' => '30',
  103. 'productUnit' => '咪咕叠加包',
  104. 'productCount' => 1
  105. ],
  106. [
  107. 'productCode' => '0002112cp0031',
  108. 'productPrice' => '39',
  109. 'productUnit' => '畅享会员',
  110. 'productCount' => 1
  111. ],
  112. [
  113. 'productCode' => '005912cp0035',
  114. 'productPrice' => '20',
  115. 'productUnit' => '两年特惠',
  116. 'productCount' => 1
  117. ],
  118. [
  119. 'productCode' => '005912cp0043',
  120. 'productPrice' => '20',
  121. 'productUnit' => '两年折扣',
  122. 'productCount' => 1
  123. ],
  124. /*[
  125. 'productCode' => '005912cp0034',
  126. 'productPrice' => '468',
  127. 'productUnit' => '两年特惠',
  128. 'productCount' => 1
  129. ],*/
  130. [
  131. 'productCode' => '005912cp0046',
  132. 'productPrice' => '49',
  133. 'productUnit' => '连续包月',
  134. 'productCount' => 1
  135. ],
  136. /*[
  137. 'productCode' => '005912cp0039',
  138. 'productPrice' => '12',
  139. 'productUnit' => '一日会员',
  140. 'productCount' => 1
  141. ],*/
  142. [
  143. 'productCode' => '0002112cp0031T1',
  144. 'productPrice' => '1',
  145. 'productUnit' => '畅享折扣',
  146. 'productCount' => 1
  147. ],
  148. [
  149. 'productCode' => '0002112cp0031T9',
  150. 'productPrice' => '9',
  151. 'productUnit' => '畅享折扣',
  152. 'productCount' => 1
  153. ],
  154. [
  155. 'productCode' => '0002112cp0031T19',
  156. 'productPrice' => '19',
  157. 'productUnit' => '畅享折扣',
  158. 'productCount' => 1
  159. ],
  160. [
  161. 'productCode' => '0002112cp0029',
  162. 'productPrice' => '29',
  163. 'productUnit' => '限时特惠',
  164. 'productCount' => 1
  165. ],
  166. [
  167. 'productCode' => '005912cp0002',
  168. 'productPrice' => '35',
  169. 'productUnit' => '畅享特惠',
  170. 'productCount' => 1
  171. ],
  172. /*[
  173. 'productCode' => '0002112cp0031Z39',
  174. 'productPrice' => '39',
  175. 'productUnit' => '畅享会员',
  176. 'productCount' => 1
  177. ],*/
  178. /*[
  179. 'productCode' => '005912cp0040',
  180. 'productPrice' => '39',
  181. 'productUnit' => '月包会员',
  182. 'productCount' => 1
  183. ],*/
  184. [
  185. 'productCode' => '005912cp0036',
  186. 'productPrice' => '105',
  187. 'productUnit' => '连续包季',
  188. 'productCount' => 1
  189. ],
  190. [
  191. 'productCode' => '005912cp0021',
  192. 'productPrice' => '299',
  193. 'productUnit' => '连续包年',
  194. 'productCount' => 1
  195. ],
  196. [
  197. 'productCode' => '005912cp0012',
  198. 'productPrice' => '365',
  199. 'productUnit' => '连续包年',
  200. 'productCount' => 1
  201. ],
  202. [
  203. 'productCode' => '005912cp0037',
  204. 'productPrice' => '59',
  205. 'productUnit' => '30天会员',
  206. 'productCount' => 1
  207. ],
  208. [
  209. 'productCode' => '005911cp0001',
  210. 'productPrice' => '111',
  211. 'productUnit' => '季度会员',
  212. 'productCount' => 1
  213. ],
  214. [
  215. 'productCode' => '005911cp0005',
  216. 'productPrice' => '209',
  217. 'productUnit' => '半年会员',
  218. 'productCount' => 1
  219. ],
  220. [
  221. 'productCode' => '005911cp0002',
  222. 'productPrice' => '399',
  223. 'productUnit' => '年度会员',
  224. 'productCount' => 1
  225. ],
  226. [
  227. 'productCode' => '005911cp0138',
  228. 'productPrice' => '10',
  229. 'productUnit' => '爱家悦享升档包',
  230. 'productCount' => 1
  231. ],
  232. [
  233. 'productCode' => '005911cp0139',
  234. 'productPrice' => '20',
  235. 'productUnit' => '爱家悦享升档包(含奇异果)',
  236. 'productCount' => 1
  237. ]
  238. ],
  239. 'diversionCode' => config('product_code')
  240. ];
  241. if ($diversionfst) {
  242. $data['diversionFST'] = 'SC::' . $diversionfst;
  243. }
  244. if ($diversioncsk) {
  245. $data['diversionCSK'] = '::' . $diversioncsk;
  246. }
  247. if ($trace_id) {
  248. $data['trace_id'] = $trace_id;
  249. }
  250. if ($contentid) {
  251. $data['contentid'] = $contentid;
  252. }
  253. $data = json_encode($data, 320);
  254. //获取鉴权token
  255. $sign_bytes = '/3.0/hop/svc/pay/toPay.ajax' . $this->base16_encode(md5($data));
  256. $hdc_token = hash_hmac('sha256', $sign_bytes, base64_decode(config('pay_appkey')), false);
  257. $header = [
  258. 'Host:' . config('pay_ip'),
  259. 'HDC-Service:2',
  260. 'HDC-APPID:' . config('pay_appid'),
  261. 'HDC-Token:' . $hdc_token,
  262. 'Content-Type:application/json'
  263. ];
  264. $rs = httpRequest($url, 'POST', $data, $header);
  265. if (!$rs) {
  266. $this->error('您的网络开小差了~');
  267. }
  268. $rs = json_decode($rs, true);
  269. if ($rs['resultCode'] != 0) {
  270. $this->error('您的网络开小差了~');
  271. }
  272. $this->success('链接', $rs['data']);
  273. }
  274. //SDK二合一支付
  275. public function paysdk() {
  276. $user_token = input('user_token', '', 'trim');
  277. $diversionfst = input('diversionfst', '', 'trim'); //位置等导流标识
  278. $diversioncsk = input('diversioncsk', '', 'trim'); //内容等导流标识
  279. $trace_id = input('trace_id', '', 'trim'); //大数据推荐内容有trace_id
  280. $contentid = input('contentid', '', 'trim'); //订购媒资的媒资movie_id
  281. if (!$user_token) {
  282. $this->error('参数缺失');
  283. }
  284. //生成支付订单记录
  285. $rechar_order['user_id'] = $this->auth->id;
  286. $rechar_order['order_no'] = date('YmdHis', time()) . $this->auth->id . rand(10000000, 99999999); //微信订单编号
  287. $rechar_order['money'] = 49;
  288. $rechar_order['purpose'] = 3; //充值用途:1=支付订单,2=充值,3=开通会员
  289. $rechar_order['pay_type'] = 'zhuowang';
  290. $rechar_order['relation_id'] = 1;
  291. $rechar_order['createtime'] = time();
  292. //开始事务
  293. $result = Db::name('rechar_order')->insertGetId($rechar_order);
  294. if (!$result) {
  295. $this->error('网络延迟,请稍后再试');
  296. }
  297. $url = 'http://' . config('pay_ip') . '/HDC/3.0/hop/svc/pay/toPay.ajax';
  298. $data = [
  299. 'transId' => $rechar_order['order_no'],
  300. 'orderNo' => $rechar_order['order_no'],
  301. 'userToken' => $user_token,
  302. 'notifyUrl' => config('img_url') . '/api/pay/notify',
  303. 'backUrl' => 'http://aspire.jshdc.payback',
  304. 'deskCode' => config('desk_code'),
  305. 'products' => [
  306. [
  307. 'productCode' => config('product_code'),
  308. 'productPrice' => '29',
  309. 'productUnit' => '个',
  310. 'productCount' => 1
  311. ],
  312. /*[
  313. 'productCode' => '005912cp0028',
  314. 'productPrice' => '0',
  315. 'productUnit' => '7天体验',
  316. 'productCount' => 1
  317. ],*/
  318. [
  319. 'productCode' => '005912cp0004',
  320. 'productPrice' => '0',
  321. 'productUnit' => '30天体验',
  322. 'productCount' => 1
  323. ],
  324. [
  325. 'productCode' => '0002112cp0030',
  326. 'productPrice' => '0',
  327. 'productUnit' => '90天体验',
  328. 'productCount' => 1
  329. ],
  330. [
  331. 'productCode' => '005911cp0022',
  332. 'productPrice' => '199',
  333. 'productUnit' => '年度特惠',
  334. 'productCount' => 1
  335. ],
  336. [
  337. 'productCode' => '005912cp0051',
  338. 'productPrice' => '119',
  339. 'productUnit' => '半年特惠',
  340. 'productCount' => 1
  341. ],
  342. [
  343. 'productCode' => '005912cp0052',
  344. 'productPrice' => '59',
  345. 'productUnit' => '季度特惠',
  346. 'productCount' => 1
  347. ],
  348. [
  349. 'productCode' => '005912cp0044',
  350. 'productPrice' => '20',
  351. 'productUnit' => '咪咕叠加包',
  352. 'productCount' => 1
  353. ],
  354. [
  355. 'productCode' => '005912cp0047',
  356. 'productPrice' => '30',
  357. 'productUnit' => '咪咕叠加包',
  358. 'productCount' => 1
  359. ],
  360. [
  361. 'productCode' => '0002112cp0031',
  362. 'productPrice' => '39',
  363. 'productUnit' => '畅享会员',
  364. 'productCount' => 1
  365. ],
  366. [
  367. 'productCode' => '005912cp0035',
  368. 'productPrice' => '20',
  369. 'productUnit' => '两年特惠',
  370. 'productCount' => 1
  371. ],
  372. [
  373. 'productCode' => '005912cp0043',
  374. 'productPrice' => '20',
  375. 'productUnit' => '两年折扣',
  376. 'productCount' => 1
  377. ],
  378. [
  379. 'productCode' => '005912cp0034',
  380. 'productPrice' => '468',
  381. 'productUnit' => '两年特惠',
  382. 'productCount' => 1
  383. ],
  384. [
  385. 'productCode' => '005912cp0046',
  386. 'productPrice' => '49',
  387. 'productUnit' => '连续包月',
  388. 'productCount' => 1
  389. ],
  390. /*[
  391. 'productCode' => '005912cp0039',
  392. 'productPrice' => '12',
  393. 'productUnit' => '一日会员',
  394. 'productCount' => 1
  395. ],*/
  396. [
  397. 'productCode' => '0002112cp0031T1',
  398. 'productPrice' => '1',
  399. 'productUnit' => '畅享折扣',
  400. 'productCount' => 1
  401. ],
  402. [
  403. 'productCode' => '0002112cp0031T9',
  404. 'productPrice' => '9',
  405. 'productUnit' => '畅享折扣',
  406. 'productCount' => 1
  407. ],
  408. [
  409. 'productCode' => '0002112cp0031T19',
  410. 'productPrice' => '19',
  411. 'productUnit' => '畅享折扣',
  412. 'productCount' => 1
  413. ],
  414. [
  415. 'productCode' => '0002112cp0029',
  416. 'productPrice' => '29',
  417. 'productUnit' => '限时特惠',
  418. 'productCount' => 1
  419. ],
  420. [
  421. 'productCode' => '005912cp0002',
  422. 'productPrice' => '35',
  423. 'productUnit' => '畅享特惠',
  424. 'productCount' => 1
  425. ],
  426. /*[
  427. 'productCode' => '0002112cp0031Z39',
  428. 'productPrice' => '39',
  429. 'productUnit' => '畅享会员',
  430. 'productCount' => 1
  431. ],*/
  432. /*[
  433. 'productCode' => '005912cp0040',
  434. 'productPrice' => '39',
  435. 'productUnit' => '月包会员',
  436. 'productCount' => 1
  437. ],*/
  438. [
  439. 'productCode' => '005912cp0036',
  440. 'productPrice' => '105',
  441. 'productUnit' => '连续包季',
  442. 'productCount' => 1
  443. ],
  444. [
  445. 'productCode' => '005912cp0021',
  446. 'productPrice' => '299',
  447. 'productUnit' => '连续包年',
  448. 'productCount' => 1
  449. ],
  450. [
  451. 'productCode' => '005912cp0012',
  452. 'productPrice' => '365',
  453. 'productUnit' => '连续包年',
  454. 'productCount' => 1
  455. ],
  456. [
  457. 'productCode' => '005912cp0037',
  458. 'productPrice' => '59',
  459. 'productUnit' => '30天会员',
  460. 'productCount' => 1
  461. ],
  462. [
  463. 'productCode' => '005911cp0001',
  464. 'productPrice' => '111',
  465. 'productUnit' => '季度会员',
  466. 'productCount' => 1
  467. ],
  468. [
  469. 'productCode' => '005911cp0005',
  470. 'productPrice' => '209',
  471. 'productUnit' => '半年会员',
  472. 'productCount' => 1
  473. ],
  474. [
  475. 'productCode' => '005911cp0002',
  476. 'productPrice' => '399',
  477. 'productUnit' => '年度会员',
  478. 'productCount' => 1
  479. ],
  480. /*[
  481. 'productCode' => '008888cp0004',
  482. 'productPrice' => '399',
  483. 'productUnit' => '线下年包',
  484. 'productCount' => 1
  485. ],*/
  486. /*[
  487. 'productCode' => '2400000560_YRHY',
  488. 'productPrice' => '5',
  489. 'productUnit' => '一日会员',
  490. 'productCount' => 1
  491. ],*/
  492. /*[
  493. 'productCode' => '005912cp0017',
  494. 'productPrice' => '39',
  495. 'productUnit' => '手柄',
  496. 'productCount' => 1
  497. ],*/
  498. /*[
  499. 'productCode' => '2000012947_ZY',
  500. 'productPrice' => '39',
  501. 'productUnit' => '手柄',
  502. 'productCount' => 1
  503. ],*/
  504. /*[
  505. 'productCode' => '005912cp0066',
  506. 'productPrice' => '499',
  507. 'productUnit' => '年度会员',
  508. 'productCount' => 1
  509. ],
  510. [
  511. 'productCode' => '005912cp0067',
  512. 'productPrice' => '998',
  513. 'productUnit' => '两年会员',
  514. 'productCount' => 1
  515. ],*/
  516. [
  517. 'productCode' => '005912cp0121',
  518. 'productPrice' => '10',
  519. 'productUnit' => '畅享特惠',
  520. 'productCount' => 1
  521. ],
  522. [
  523. 'productCode' => '005912cp0122',
  524. 'productPrice' => '20',
  525. 'productUnit' => '尊享特惠',
  526. 'productCount' => 1
  527. ],
  528. [
  529. 'productCode' => '2000061592ZYYW',
  530. 'productPrice' => '499',
  531. 'productUnit' => '爱家尊享年度会员',
  532. 'productCount' => 1
  533. ],
  534. [
  535. 'productCode' => '2000061594ZYYW',
  536. 'productPrice' => '998',
  537. 'productUnit' => '爱家尊享两年会员',
  538. 'productCount' => 1
  539. ],
  540. [
  541. 'productCode' => '2400000683ZYYW',
  542. 'productPrice' => '399',
  543. 'productUnit' => '爱家畅享年度会员(包年)',
  544. 'productCount' => 1
  545. ],
  546. [
  547. 'productCode' => '005912cp0299',
  548. 'productPrice' => '299',
  549. 'productUnit' => '爱家尊享年度特惠会员',
  550. 'productCount' => 1
  551. ],
  552. ],
  553. 'diversionCode' => config('product_code')
  554. ];
  555. if ($diversionfst) {
  556. $data['diversionFST'] = 'SC::' . $diversionfst;
  557. }
  558. if ($diversioncsk) {
  559. $data['diversionCSK'] = '::' . $diversioncsk;
  560. }
  561. if ($trace_id) {
  562. $data['trace_id'] = $trace_id;
  563. }
  564. if ($contentid) {
  565. $data['contentid'] = $contentid;
  566. }
  567. // $data2 = $data;
  568. $data = json_encode($data, 320);
  569. //获取鉴权token
  570. // $sign_bytes = strtolower($this->base16_encode(md5($data)));
  571. // $sign_bytes = strtoupper($this->base16_encode($sign_bytes));
  572. $sign_bytes = $this->base16_encode(md5($data));
  573. $hdc_token = hash_hmac('sha256', $sign_bytes, config('pay_appkey'), false);
  574. // $hdc_token = strtolower($this->base16_encode($hdc_token));
  575. $header = [
  576. 'Host:' . config('pay_ip'),
  577. 'HDC-Service:2',
  578. 'HDC-APPID:' . config('pay_appid'),
  579. 'HDC-Token:' . $hdc_token,
  580. 'Content-Type:application/json'
  581. ];
  582. $return_data['url'] = $url;
  583. $return_data['data'] = $data;
  584. $return_data['host'] = config('pay_ip');
  585. $return_data['appid'] = config('pay_appid');
  586. $return_data['token'] = $hdc_token;
  587. $return_data['apptoken'] = config('pay_appkey');
  588. /*$rs = httpRequest($url, 'POST', $data, $header);
  589. if (!$rs) {
  590. $this->error('您的网络开小差了~');
  591. }
  592. $rs = json_decode($rs, true);
  593. if ($rs['resultCode'] != 0) {
  594. $this->error('您的网络开小差了~');
  595. }*/
  596. $this->success('参数', $return_data);
  597. }
  598. public function paysdk_my() {
  599. $user_token = input('user_token', '', 'trim');
  600. $diversionfst = input('diversionfst', '', 'trim'); //位置等导流标识
  601. $diversioncsk = input('diversioncsk', '', 'trim'); //内容等导流标识
  602. $trace_id = input('trace_id', '', 'trim'); //大数据推荐内容有trace_id
  603. $contentid = input('contentid', '', 'trim'); //订购媒资的媒资movie_id
  604. if (!$user_token) {
  605. $this->error('参数缺失');
  606. }
  607. //生成支付订单记录
  608. $rechar_order['user_id'] = $this->auth->id;
  609. $rechar_order['order_no'] = date('YmdHis', time()) . $this->auth->id . rand(10000000, 99999999); //微信订单编号
  610. $rechar_order['money'] = 49;
  611. $rechar_order['purpose'] = 3; //充值用途:1=支付订单,2=充值,3=开通会员
  612. $rechar_order['pay_type'] = 'zhuowang';
  613. $rechar_order['relation_id'] = 1;
  614. $rechar_order['createtime'] = time();
  615. //开始事务
  616. $result = Db::name('rechar_order')->insertGetId($rechar_order);
  617. if (!$result) {
  618. $this->error('网络延迟,请稍后再试');
  619. }
  620. $url = 'http://' . config('pay_ip') . '/HDC/3.0/hop/svc/pay/toPay.ajax';
  621. $data = [
  622. 'transId' => $rechar_order['order_no'],
  623. 'orderNo' => $rechar_order['order_no'],
  624. 'userToken' => $user_token,
  625. 'notifyUrl' => config('img_url') . '/api/pay/notify',
  626. 'backUrl' => 'http://aspire.jshdc.payback',
  627. 'deskCode' => config('desk_code'),
  628. 'products' => [
  629. [
  630. 'productCode' => config('product_code'),
  631. 'productPrice' => '29',
  632. 'productUnit' => '个',
  633. 'productCount' => 1
  634. ],
  635. ],
  636. 'diversionCode' => config('product_code')
  637. ];
  638. if ($diversionfst) {
  639. $data['diversionFST'] = 'SC::' . $diversionfst;
  640. }
  641. if ($diversioncsk) {
  642. $data['diversionCSK'] = '::' . $diversioncsk;
  643. }
  644. if ($trace_id) {
  645. $data['trace_id'] = $trace_id;
  646. }
  647. if ($contentid) {
  648. $data['contentid'] = $contentid;
  649. }
  650. // $data2 = $data;
  651. $data = json_encode($data, 320);
  652. //获取鉴权token
  653. // $sign_bytes = strtolower($this->base16_encode(md5($data)));
  654. // $sign_bytes = strtoupper($this->base16_encode($sign_bytes));
  655. $sign_bytes = $this->base16_encode(md5($data));
  656. $hdc_token = hash_hmac('sha256', $sign_bytes, config('pay_appkey'), false);
  657. // $hdc_token = strtolower($this->base16_encode($hdc_token));
  658. $header = [
  659. 'Host:' . config('pay_ip'),
  660. 'HDC-Service:2',
  661. 'HDC-APPID:' . config('pay_appid'),
  662. 'HDC-Token:' . $hdc_token,
  663. 'Content-Type:application/json'
  664. ];
  665. $return_data['url'] = $url;
  666. $return_data['data'] = $data;
  667. $return_data['host'] = config('pay_ip');
  668. $return_data['appid'] = config('pay_appid');
  669. $return_data['token'] = $hdc_token;
  670. $return_data['apptoken'] = config('pay_appkey');
  671. /*$rs = httpRequest($url, 'POST', $data, $header);
  672. if (!$rs) {
  673. $this->error('您的网络开小差了~');
  674. }
  675. $rs = json_decode($rs, true);
  676. if ($rs['resultCode'] != 0) {
  677. $this->error('您的网络开小差了~');
  678. }*/
  679. $this->success('参数', $return_data);
  680. }
  681. //支付回调
  682. public function notify() {
  683. $data = file_get_contents('php://input');
  684. if (!$data) {
  685. $this->error('参数缺失');
  686. }
  687. $data = json_decode($data, true);
  688. if (!$data) {
  689. $this->error('参数缺失');
  690. }
  691. if ($data['orderstate'] != 0) {
  692. echo json_encode([
  693. 'transid' => $data['transid'],
  694. 'orderid' => $data['orderid'],
  695. 'statuscode' => -1,
  696. 'statusdesc' => '订单状态失败'
  697. ], 320);
  698. die;
  699. }
  700. $order_no = $data['orderid'];
  701. $where['order_no'] = $order_no;
  702. $order_info = Db::name('rechar_order')->where($where)->find();
  703. if (!$order_info) {
  704. echo json_encode([
  705. 'transid' => $data['transid'],
  706. 'orderid' => $data['orderid'],
  707. 'statuscode' => -1,
  708. 'statusdesc' => '业务订单不存在'
  709. ], 320);
  710. die;
  711. }
  712. if ($order_info['status'] == 1) { //已回调成功
  713. echo json_encode([
  714. 'transid' => $data['transid'],
  715. 'orderid' => $data['orderid'],
  716. 'statuscode' => 0,
  717. 'statusdesc' => ''
  718. ], 320);
  719. die;
  720. }
  721. //构建支付订单处理结果信息
  722. $_data['status'] = 1;
  723. $_data['updatetime'] = time();
  724. if ($order_info['purpose'] == 3) {
  725. //开通会员
  726. Db::startTrans();
  727. //充值
  728. $rs = Db::name('user')->where(['id' => $order_info['user_id']])->setField('is_vip', 1);
  729. if ($rs === false) {
  730. Db::rollback();
  731. $_data['pay_status'] = 3; //回调状态:1=支付订单回调失败,2=充值回调失败,3=开通会员回调失败
  732. } else {
  733. Db::commit();
  734. }
  735. }
  736. //修改订单信息
  737. Db::name('rechar_order')->where($where)->setField($_data);
  738. echo json_encode([
  739. 'transid' => $data['transid'],
  740. 'orderid' => $data['orderid'],
  741. 'statuscode' => 0,
  742. 'statusdesc' => ''
  743. ], 320);
  744. }
  745. }