OrderMerchant.php 46 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394959697989910010110210310410510610710810911011111211311411511611711811912012112212312412512612712812913013113213313413513613713813914014114214314414514614714814915015115215315415515615715815916016116216316416516616716816917017117217317417517617717817918018118218318418518618718818919019119219319419519619719819920020120220320420520620720820921021121221321421521621721821922022122222322422522622722822923023123223323423523623723823924024124224324424524624724824925025125225325425525625725825926026126226326426526626726826927027127227327427527627727827928028128228328428528628728828929029129229329429529629729829930030130230330430530630730830931031131231331431531631731831932032132232332432532632732832933033133233333433533633733833934034134234334434534634734834935035135235335435535635735835936036136236336436536636736836937037137237337437537637737837938038138238338438538638738838939039139239339439539639739839940040140240340440540640740840941041141241341441541641741841942042142242342442542642742842943043143243343443543643743843944044144244344444544644744844945045145245345445545645745845946046146246346446546646746846947047147247347447547647747847948048148248348448548648748848949049149249349449549649749849950050150250350450550650750850951051151251351451551651751851952052152252352452552652752852953053153253353453553653753853954054154254354454554654754854955055155255355455555655755855956056156256356456556656756856957057157257357457557657757857958058158258358458558658758858959059159259359459559659759859960060160260360460560660760860961061161261361461561661761861962062162262362462562662762862963063163263363463563663763863964064164264364464564664764864965065165265365465565665765865966066166266366466566666766866967067167267367467567667767867968068168268368468568668768868969069169269369469569669769869970070170270370470570670770870971071171271371471571671771871972072172272372472572672772872973073173273373473573673773873974074174274374474574674774874975075175275375475575675775875976076176276376476576676776876977077177277377477577677777877978078178278378478578678778878979079179279379479579679779879980080180280380480580680780880981081181281381481581681781881982082182282382482582682782882983083183283383483583683783883984084184284384484584684784884985085185285385485585685785885986086186286386486586686786886987087187287387487587687787887988088188288388488588688788888989089189289389489589689789889990090190290390490590690790890991091191291391491591691791891992092192292392492592692792892993093193293393493593693793893994094194294394494594694794894995095195295395495595695795895996096196296396496596696796896997097197297397497597697797897998098198298398498598698798898999099199299399499599699799899910001001100210031004100510061007100810091010101110121013101410151016101710181019102010211022102310241025102610271028102910301031103210331034103510361037103810391040104110421043104410451046104710481049105010511052105310541055105610571058105910601061106210631064106510661067106810691070107110721073107410751076107710781079108010811082108310841085108610871088108910901091109210931094109510961097109810991100110111021103
  1. <?php
  2. /**
  3. * @package merchant
  4. * @Author: Qinii
  5. * @Date: 2020/5/27
  6. */
  7. namespace app\controller\api\merchant\order;
  8. use AdaPaySdk\AdapayTools;
  9. use app\common\repositories\merchant\MerchantRepository;
  10. use app\traits\HaikeApiRequest;
  11. use app\traits\HuiPay;
  12. use think\App;
  13. use think\Exception;
  14. use crmeb\basic\BaseController;
  15. use app\common\repositories\merchant\order\OrderMerchantRepository as repository;
  16. use think\facade\Cache;
  17. use think\facade\Db;
  18. use think\facade\Log;
  19. class OrderMerchant extends BaseController
  20. {
  21. use HaikeApiRequest;
  22. use HuiPay;
  23. /**
  24. * @var \Redis
  25. */
  26. protected $redis;
  27. /**
  28. * @var repository
  29. */
  30. protected $repository;
  31. /**
  32. * StoreBrand constructor.
  33. * @param App $app
  34. * @param repository $repository
  35. */
  36. public function __construct(App $app, repository $repository)
  37. {
  38. parent::__construct($app);
  39. $this->repository = $repository;
  40. $this->redis = Cache::store('redis')->handler();
  41. }
  42. /**
  43. * 订单列表
  44. * @return mixed
  45. * @author php迷途小书童
  46. * @created 2021/1/16 10:49
  47. */
  48. public function lst()
  49. {
  50. $uid = $this->request->uid();
  51. [$page, $limit] = $this->getPage();
  52. return app('json')->success($this->repository->getMerchantList($uid, [
  53. 'paid' => 1,
  54. ], $page, $limit));
  55. }
  56. /**
  57. * 订单列表
  58. * @return mixed
  59. * @author php迷途小书童
  60. * @created 2021/1/16 10:49
  61. */
  62. public function del()
  63. {
  64. $time=time();
  65. $end=$time-60*5;
  66. $stat=date('Y-m-d H:i:s',$end);
  67. Db::name('order_merchant')
  68. ->where('is_broadcast',0)
  69. ->whereNotNull('pay_time')
  70. ->whereTime('pay_time','<',$stat)
  71. ->update(['is_broadcast'=>1]);
  72. }
  73. // /**
  74. // * 订单列表
  75. // * @return mixed
  76. // * @author php迷途小书童
  77. // * @created 2021/1/16 10:49
  78. // */
  79. // public function lst()
  80. // {
  81. // $merId = $this->request->userInfo()->mer_id;
  82. // [$page, $limit] = $this->getPage();
  83. // return app('json')->success($this->repository->getMerchantList($merId, [
  84. // 'paid' => 1,
  85. // ], $page, $limit));
  86. // }
  87. /**
  88. * 修改语音播报状态
  89. * @return mixed
  90. * @author php迷途小书童
  91. * @created 2021/3/8 18:08
  92. */
  93. public function broadcast()
  94. {
  95. $orderId = (int)$this->request->param('order_id', 0);
  96. $order = $this->repository->getOneById($orderId);
  97. if (!$order)
  98. return app('json')->fail('订单不存在');
  99. $order->is_broadcast = 1;
  100. $order->save();
  101. return app('json')->success('修改成功');
  102. }
  103. /**
  104. * 创建订单
  105. * @return mixed
  106. * @author php迷途小书童
  107. * @created 2021/1/16 10:52
  108. */
  109. public function createOrder(MerchantRepository $merchantRepository)
  110. {
  111. $merchantUserId = (int)$this->request->param('user_id', 0);
  112. $merId = $this->request->param('mer_id', 0);
  113. if($merId==496){
  114. return app('json')->fail('该商户暂不支持该支付方式');
  115. }
  116. if(strpos($merId,'_') !== false){
  117. $mer_ = explode("_",$merId);
  118. $merId=$mer_[0];
  119. }
  120. log::info($merId);
  121. $payUserId = $this->request->param('pay_user_id', null);
  122. // Db::name('log')->insert(['data'=>json_encode($payUserId)]);
  123. $nickname = $this->request->param('nickname', null);
  124. $avatar = $this->request->param('avatar', null);
  125. $money = (float)$this->request->param('money', 0);
  126. $tradeType = $this->request->param('trade_type');
  127. $mer = $merchantRepository->getWhere(['mer_id' => $merId]);
  128. if (!$mer)
  129. return app('json')->fail('商户不存在');
  130. if (!in_array($tradeType, explode(',', $mer['trade_type'])))
  131. return app('json')->fail('该商户暂不支持该支付方式');
  132. if ($mer['mer_id'] == 324 && !in_array($money,[300,1000,3000]))
  133. return app('json')->fail('支付金额不正确,请支付300、1000、3000元的档位');
  134. $this->redis->set('create_order' . $payUserId, 1, 5);
  135. $merchant_type=Db::name('merchant')->where('mer_id',$merId)->value('merchant_type');
  136. try {
  137. if($merchant_type==2){
  138. $order = $this->repository->createOrder_276(
  139. [
  140. 'merchant_user_id' => $merchantUserId,
  141. 'mer_id' => $merId,
  142. 'merch_no' => $mer['merch_no'],
  143. 'pay_user_id' => $payUserId,
  144. 'nickname' => $nickname,
  145. 'avatar' => $avatar,
  146. 'money' => $money,
  147. 'trade_type' => $tradeType,
  148. 'qr_num' => $mer_[1]??0,
  149. ]
  150. );
  151. }else{
  152. $order = $this->repository->createOrder(
  153. [
  154. 'merchant_user_id' => $merchantUserId,
  155. 'mer_id' => $merId,
  156. 'merch_no' => $mer['merch_no'],
  157. 'pay_user_id' => $payUserId,
  158. 'nickname' => $nickname,
  159. 'avatar' => $avatar,
  160. 'money' => $money,
  161. 'trade_type' => $tradeType,
  162. 'qr_num' => $mer_[1]??0,
  163. ]
  164. );
  165. }
  166. } catch (\Throwable $e) {
  167. $this->redis->del('create_order' . $payUserId);
  168. return app('json')->fail($e->getMessage());
  169. }
  170. $this->redis->del('create_order' . $payUserId);
  171. try {
  172. return app('json')->success($order);
  173. } catch (\Throwable $e) {
  174. return app('json')->status('error', $e->getMessage(), ['out_trade_no' => $order->out_trade_no]);
  175. }
  176. }
  177. /**
  178. * 聚合公众号支付API
  179. * @return mixed
  180. * @author php迷途小书童
  181. * @created 2021/1/16 10:02
  182. */
  183. public function jsapiPay(){
  184. try {
  185. $type = (string)$this->request->param("type", '');
  186. $out_trade_no = (string)$this->request->param("out_trade_no", '');
  187. $order = $this->repository->getOne($out_trade_no);
  188. if (!$order)
  189. return app('json')->fail('订单不存在');
  190. $merchant=Db::name('merchant')->where('mer_id',$order['mer_id'])->find();
  191. // Db::name('log')->insert(['data'=>'商户信息---'.json_encode($merchant)]);
  192. if($type=='HF'){
  193. //这个不用管他。这两商户关了
  194. if($merchant['hf_type']==2) {
  195. // Db::name('log')->insert(['data'=>'单独付款进来了']);
  196. if($merchant['mer_id']==290){
  197. $data=$this->HF_DANDU_290($order);
  198. }elseif($merchant['mer_id']==276){
  199. $data=$this->HF_DANDU_276($order);
  200. }
  201. }else{
  202. // if($merchant['merchant_type']==2){
  203. // $data=$this->HF_276($order);
  204. // }else{
  205. $data=$this->HF($order);
  206. // }
  207. }
  208. }else{
  209. $data = $this->getJsapiPayGateway($order);
  210. }
  211. }catch (\Throwable $e){
  212. Db::name('log')->insert(['data'=>'支付错误:'.$e->getFile().':'.$e->getLine().'【'.$e->getMessage().'】']);
  213. }
  214. log::info('聚合公众号支付API'.json_encode($data));
  215. try {
  216. if ($data['return_code'] === 10000) {
  217. $params = [
  218. 'trade_no' => $data['trade_no'],
  219. 'channel_trade_no' => $data['channel_trade_no'],
  220. ];
  221. if ($order->trade_type == "ALI")
  222. $params['alipay_no'] = $data['alipay_no'];
  223. $this->repository->updateOrder($order, $params);
  224. return app('json')->success($data);
  225. } elseif($data['code']=='1000'){
  226. $params = [
  227. 'trade_no' => $data['order_no'],
  228. 'channel_trade_no' => $data['party_order_id'],
  229. 'hf_pay_id' => $data['id'],
  230. ];
  231. ////
  232. // $this->repository->updateOrder($order, $params);
  233. Db::name('order_merchant')->where(['out_trade_no'=>$out_trade_no])->update($params);
  234. return app('json')->success($data);
  235. }else {
  236. return app('json')->fail($data['return_msg']);
  237. }
  238. } catch (\Throwable $e) {
  239. return app('json')->status('error', $e->getMessage(), ['out_trade_no' => $order->out_trade_no]);
  240. }
  241. }
  242. public function HF($order)
  243. {
  244. // $amt = $order['service_money'] + $order['pension'] + $order['swipe_fee']; //总可分佣金额
  245. $amt = $order['service_money'] + $order['pension']; //总可分佣金额 手续费由商家出
  246. $amt=sprintf("%01.2f",$amt); //保留2位数字。
  247. $mouny=$order['money']-$amt; //商户货款
  248. $mouny=sprintf("%01.2f",$mouny); //保留2位小时。
  249. $goods_title=Db::name('merchant')->where('mer_id',$order['mer_id'])->find();
  250. if($order['trade_type']=='WX'){
  251. $pay_wx = systemConfig('pay_wx');
  252. //微信
  253. if($pay_wx == 3){
  254. $member_id=Db::name('merchant_member')->where('mer_id',$order['mer_id']) ->where("type",3)->value('member_id');
  255. $key='api_live_b0a687ec-5450-4ada-a0e4-65bac0f46871';
  256. $app_id='app_383a75dd-c03d-44ab-8f58-92c60fe9b9d0';
  257. $member_70 = 'jsdk_member_wx21689817115207';
  258. $member_20 = 'jsdk_member_wx21689817115207';
  259. }else{
  260. $member_id=Db::name('merchant_member')->where('mer_id',$order['mer_id']) ->where("type",2)->value('member_id');
  261. $key='api_live_90ef02e4-54ac-41ee-adf1-e4927d23d58f';
  262. $app_id='app_0827b960-b932-45ec-b800-4e850091b419';
  263. $member_70 = 'jsdk_member_wx1689758980590';
  264. $member_20 = 'jsdk_member_wx1689758980590';
  265. }
  266. // $member_id=$goods_title['hf_member_id_wx'];
  267. // $app_id='app_0827b960-b932-45ec-b800-4e850091b419';
  268. $type='2';
  269. $pay_channel='wx_pub';
  270. // $key='api_live_90ef02e4-54ac-41ee-adf1-e4927d23d58f';
  271. $expend=[
  272. 'open_id'=>$order['pay_user_id']
  273. ];
  274. }elseif($order['trade_type']=='ALI'){
  275. $member_id=$goods_title['hf_member_id'];
  276. $app_id='app_44108546-d27a-48ee-88c1-84b45b75114f';
  277. $type='1';
  278. $pay_channel='alipay_pub';
  279. $expend=[
  280. 'buyer_id'=>$order['pay_user_id']
  281. ];
  282. $key='api_live_b23537ed-64b8-45d6-832e-fb228aa9e0a9';
  283. $member_70 = 'jsdk_member_ali1689817119448';
  284. $member_20 = 'jsdk_member_ali1689817119448';
  285. // 天地博爱通道
  286. // $app_id='app_0827b960-b932-45ec-b800-4e850091b419';
  287. // $key='api_live_90ef02e4-54ac-41ee-adf1-e4927d23d58f';
  288. }
  289. if($order['mer_id']==324 ){
  290. $div_members = [
  291. [
  292. 'member_id' => $member_id,
  293. 'amount' => bcmul($order['money'], 0.3, 2),
  294. 'fee_flag' => 'N'
  295. ],
  296. [
  297. 'member_id' => $member_70,
  298. 'amount' => bcmul($order['money'], 0.7, 2),
  299. 'fee_flag' => 'Y'
  300. ]
  301. ];
  302. }else if($order['mer_id']==496 ){
  303. $amt = $order['pension'] ; //只给养老金
  304. $amt=sprintf("%01.2f",$amt); //保留2位数字。
  305. $mouny=$order['money']-$amt; //商户货款
  306. $mouny=sprintf("%01.2f",$mouny); //保留2位小时。
  307. $div_members = [
  308. [
  309. 'member_id' => $member_id,
  310. 'amount' => $mouny,
  311. 'fee_flag' => 'Y'
  312. ],
  313. [
  314. 'member_id' => $member_20,
  315. 'amount' => $amt,
  316. 'fee_flag' => 'N'
  317. ]
  318. ];
  319. }else if($order['mer_id']==321 ){
  320. $div_members = [
  321. [
  322. 'member_id' => $member_id,
  323. 'amount' => bcmul($order['money'], 1, 2),
  324. 'fee_flag' => 'Y'
  325. ]
  326. ];
  327. }else{
  328. if($amt=='0.00'){
  329. $div_members=[
  330. [
  331. 'member_id'=>$member_id,
  332. 'amount'=>$mouny,
  333. 'fee_flag'=>'Y'
  334. ]
  335. ];
  336. }else{
  337. $div_members= [
  338. [
  339. 'member_id'=>$member_id,
  340. 'amount'=>$mouny,
  341. 'fee_flag'=>'Y'
  342. ],
  343. [
  344. 'member_id'=>$member_20,
  345. 'amount'=>$amt,
  346. 'fee_flag'=>'N'
  347. ]
  348. ];
  349. }
  350. }
  351. if($order['trade_type']=='WX'){
  352. $params=[
  353. 'order_no'=>$order['out_trade_no'].'_'.rand(000,999),
  354. 'app_id'=>$app_id,
  355. 'pay_channel'=>$pay_channel,
  356. 'pay_amt'=>(string)$order['money'],
  357. 'goods_title'=>$goods_title['mer_name'],
  358. 'goods_desc'=>$goods_title['mer_name'],
  359. 'device_info'=>[
  360. 'device_ip'=>app('request')->ip()
  361. // 'device_ip'=>'115.171.134.68'
  362. ],
  363. 'expend'=>json_encode($expend),
  364. 'div_members'=>json_encode($div_members),
  365. 'fee_mode'=>'I',
  366. 'notify_url'=>env('APP_URL')."/api/jsapiPay/notify/HF"
  367. ];
  368. }elseif($order['trade_type']=='ALI'){
  369. $params=[
  370. 'order_no'=>$order['out_trade_no'].'_'.rand(000,999),
  371. 'app_id'=>$app_id,
  372. 'pay_channel'=>$pay_channel,
  373. 'pay_amt'=>(string)$order['money'],
  374. 'goods_title'=>$goods_title['mer_name'],
  375. 'goods_desc'=>$goods_title['mer_name'],
  376. 'device_info'=>[
  377. 'device_ip'=>app('request')->ip()
  378. // 'device_ip'=>'115.171.134.68'
  379. ],
  380. 'expend'=>json_encode($expend),
  381. 'div_members'=>json_encode($div_members),
  382. 'fee_mode'=>'I',
  383. 'notify_url'=>env('APP_URL')."/api/jsapiPay/notify/HF"
  384. ];
  385. }
  386. // dump($type);return ;
  387. $res=$this->Payment_create_traits($params,$type,$key);
  388. // Db::name('log')->insert(['data'=>'发起支付参数:'.json_encode($params,true)]);
  389. // Db::name('log')->insert(['data'=>'支付返回:'.json_encode($res,true)]);
  390. if(!empty($res['error_code'])){
  391. $res1['code']='1000';
  392. $res1['return_msg']=$res['error_msg'];
  393. $res1['return_code']=1200;
  394. return $res1;
  395. }
  396. $res['code']='1000';
  397. $res['return_code']='999';
  398. return $res;
  399. }
  400. public function HF_DANDU_290($order)
  401. {
  402. $merchant=Db::name('merchant_intention')->where('mer_id',$order['mer_id'])->find();
  403. $goods_title=Db::name('merchant')->where('mer_id',$order['mer_id'])->find();
  404. if($order['trade_type']=='WX'){
  405. $fenyongmember_id=$goods_title['hf_dimension_id_wx'];
  406. $ingtaimember_id=$goods_title['hf_pingtai_id_wx'];
  407. $app_id=$merchant['app_id_wx'];
  408. $type='2';
  409. $pay_channel='wx_pub';
  410. $key=$merchant['hf_api_key_wx'];
  411. $expend=[
  412. 'open_id'=>$order['pay_user_id']
  413. ];
  414. }elseif($order['trade_type']=='ALI'){
  415. $fenyongmember_id=$goods_title['hf_dimension_id_al'];
  416. $ingtaimember_id=$goods_title['hf_pingtai_id_al'];
  417. $app_id=$merchant['app_id'];
  418. $type='1';
  419. $pay_channel='alipay_pub';
  420. $expend=[
  421. 'buyer_id'=>$order['pay_user_id']
  422. ];
  423. $key=$merchant['hf_api_key'];
  424. }
  425. $merchant_money=bcmul($order['money'],'0.4',2);
  426. $fenyongjine=bcmul($order['money'],'0.5',2);
  427. $pingtai_money=bcmul($order['money'],'0.1',2);
  428. $div_members= [
  429. [
  430. 'member_id'=>$fenyongmember_id,
  431. 'amount'=>$fenyongjine,
  432. 'fee_flag'=>'N'
  433. ],
  434. [
  435. 'member_id'=>0,
  436. 'amount'=>$merchant_money,
  437. 'fee_flag'=>'Y'
  438. ],
  439. [
  440. 'member_id'=>$ingtaimember_id,
  441. 'amount'=>$pingtai_money,
  442. 'fee_flag'=>'N'
  443. ]
  444. ];
  445. if($order['trade_type']=='WX'){
  446. $params=[
  447. 'order_no'=>$order['out_trade_no'].'_'.rand(000,999),
  448. 'app_id'=>$app_id,
  449. 'pay_channel'=>$pay_channel,
  450. 'pay_amt'=>(string)$order['money'],
  451. 'goods_title'=>$goods_title['mer_name'],
  452. 'goods_desc'=>$goods_title['mer_name'],
  453. 'device_info'=>[
  454. 'device_ip'=>app('request')->ip()
  455. ],
  456. 'expend'=>json_encode($expend),
  457. 'div_members'=>json_encode($div_members),
  458. 'fee_mode'=>'I',
  459. 'notify_url'=>env('APP_URL')."/api/jsapiPay/notify/HF"
  460. ];
  461. }elseif($order['trade_type']=='ALI'){
  462. $params=[
  463. 'order_no'=>$order['out_trade_no'].'_'.rand(000,999),
  464. 'app_id'=>$app_id,
  465. 'pay_channel'=>$pay_channel,
  466. 'pay_amt'=>(string)$order['money'],
  467. 'goods_title'=>$goods_title['mer_name'],
  468. 'goods_desc'=>$goods_title['mer_name'],
  469. 'device_info'=>[
  470. 'device_ip'=>app('request')->ip()
  471. ],
  472. 'expend'=>json_encode($expend),
  473. 'div_members'=>json_encode($div_members),
  474. 'fee_mode'=>'I',
  475. 'notify_url'=>env('APP_URL')."/api/jsapiPay/notify/HF"
  476. ];
  477. }
  478. $res=$this->Payment_create_traits($params,$type,$key);
  479. if(!empty($res['error_code'])){
  480. $res1['code']='1000';
  481. $res1['return_msg']=$res['error_msg'];
  482. $res1['return_code']=1200;
  483. return $res1;
  484. }
  485. $res['code']='1000';
  486. $res['return_code']='999';
  487. return $res;
  488. }
  489. public function HF_DANDU_276($order)
  490. {
  491. $merchant=Db::name('merchant_intention')->where('mer_id',$order['mer_id'])->find();
  492. $goods_title=Db::name('merchant')->where('mer_id',$order['mer_id'])->find();
  493. if($order['trade_type']=='WX'){
  494. $ingtaimember_id=$goods_title['hf_pingtai_id_wx'];
  495. $app_id=$merchant['app_id_wx'];
  496. $type='2';
  497. $pay_channel='wx_pub';
  498. $key=$merchant['hf_api_key_wx'];
  499. $expend=[
  500. 'open_id'=>$order['pay_user_id']
  501. ];
  502. }elseif($order['trade_type']=='ALI'){
  503. $ingtaimember_id=$goods_title['hf_pingtai_id_al'];
  504. $app_id=$merchant['app_id'];
  505. $type='1';
  506. $pay_channel='alipay_pub';
  507. $expend=[
  508. 'buyer_id'=>$order['pay_user_id']
  509. ];
  510. $key=$merchant['hf_api_key'];
  511. }
  512. $merchant_money=bcmul($order['money'],'0.62',2);
  513. $pingtai_money=bcmul($order['money'],'0.38',2);
  514. $div_members= [
  515. [
  516. 'member_id'=>0,
  517. 'amount'=>$merchant_money,
  518. 'fee_flag'=>'Y'
  519. ],
  520. [
  521. 'member_id'=>$ingtaimember_id,
  522. 'amount'=>$pingtai_money,
  523. 'fee_flag'=>'N'
  524. ]
  525. ];
  526. if($order['trade_type']=='WX'){
  527. $params=[
  528. 'order_no'=>$order['out_trade_no'].'_'.rand(000,999),
  529. 'app_id'=>$app_id,
  530. 'pay_channel'=>$pay_channel,
  531. 'pay_amt'=>(string)$order['money'],
  532. 'goods_title'=>$goods_title['mer_name'],
  533. 'goods_desc'=>$goods_title['mer_name'],
  534. 'device_info'=>[
  535. 'device_ip'=>app('request')->ip()
  536. ],
  537. 'expend'=>json_encode($expend),
  538. 'div_members'=>json_encode($div_members),
  539. 'fee_mode'=>'I',
  540. 'notify_url'=>env('APP_URL')."/api/jsapiPay/notify/HF"
  541. ];
  542. }elseif($order['trade_type']=='ALI'){
  543. $params=[
  544. 'order_no'=>$order['out_trade_no'].'_'.rand(000,999),
  545. 'app_id'=>$app_id,
  546. 'pay_channel'=>$pay_channel,
  547. 'pay_amt'=>(string)$order['money'],
  548. 'goods_title'=>$goods_title['mer_name'],
  549. 'goods_desc'=>$goods_title['mer_name'],
  550. 'device_info'=>[
  551. 'device_ip'=>app('request')->ip()
  552. ],
  553. 'expend'=>json_encode($expend),
  554. 'div_members'=>json_encode($div_members),
  555. 'fee_mode'=>'I',
  556. 'notify_url'=>env('APP_URL')."/api/jsapiPay/notify/HF"
  557. ];
  558. }
  559. $res=$this->Payment_create_traits($params,$type,$key);
  560. if(!empty($res['error_code'])){
  561. $res1['code']='1000';
  562. $res1['return_msg']=$res['error_msg'];
  563. $res1['return_code']=1200;
  564. return $res1;
  565. }
  566. $res['code']='1000';
  567. $res['return_code']='999';
  568. return $res;
  569. }
  570. public function HF_276($order)
  571. {
  572. $goods_title=Db::name('merchant')->where('mer_id',$order['mer_id'])->find();
  573. if($order['trade_type']=='WX'){
  574. $member_id=$goods_title['hf_member_id_wx'];
  575. $app_id='app_0827b960-b932-45ec-b800-4e850091b419';
  576. $type='2';
  577. $pay_channel='wx_pub';
  578. $key='api_live_90ef02e4-54ac-41ee-adf1-e4927d23d58f';
  579. $expend=[
  580. 'open_id'=>$order['pay_user_id']
  581. ];
  582. }elseif($order['trade_type']=='ALI'){
  583. $member_id=$goods_title['hf_member_id'];
  584. $app_id='app_44108546-d27a-48ee-88c1-84b45b75114f';
  585. $type='1';
  586. $pay_channel='alipay_pub';
  587. $expend=[
  588. 'buyer_id'=>$order['pay_user_id']
  589. ];
  590. $key='api_live_b23537ed-64b8-45d6-832e-fb228aa9e0a9';
  591. }
  592. $amt = $order['service_money'] + $order['pension'];
  593. $amt=sprintf("%01.2f",$amt);
  594. $mouny=$order['money']-$amt;
  595. $mouny=sprintf("%01.2f",$mouny);
  596. if($amt=='0.00'){
  597. $div_members=[
  598. [
  599. 'member_id'=>$member_id,
  600. 'amount'=>$mouny,
  601. 'fee_flag'=>'Y'
  602. ]
  603. ];
  604. }else{
  605. $div_members= [
  606. [
  607. 'member_id'=>$member_id,
  608. 'amount'=>$mouny,
  609. 'fee_flag'=>'Y'
  610. ],
  611. [
  612. 'member_id'=>0,
  613. 'amount'=>$amt,
  614. 'fee_flag'=>'N'
  615. ]
  616. ];
  617. }
  618. if($order['trade_type']=='WX'){
  619. $params=[
  620. 'order_no'=>$order['out_trade_no'].'_'.rand(000,999),
  621. 'app_id'=>$app_id,
  622. 'pay_channel'=>$pay_channel,
  623. 'pay_amt'=>(string)$order['money'],
  624. 'goods_title'=>$goods_title['mer_name'],
  625. 'goods_desc'=>$goods_title['mer_name'],
  626. 'device_info'=>[
  627. 'device_ip'=>app('request')->ip()
  628. // 'device_ip'=>'115.171.134.68'
  629. ],
  630. 'expend'=>json_encode($expend),
  631. 'div_members'=>json_encode($div_members),
  632. 'fee_mode'=>'I',
  633. 'notify_url'=>env('APP_URL')."/api/jsapiPay/notify/HF"
  634. ];
  635. }elseif($order['trade_type']=='ALI'){
  636. $params=[
  637. 'order_no'=>$order['out_trade_no'].'_'.rand(000,999),
  638. 'app_id'=>$app_id,
  639. 'pay_channel'=>$pay_channel,
  640. 'pay_amt'=>(string)$order['money'],
  641. 'goods_title'=>$goods_title['mer_name'],
  642. 'goods_desc'=>$goods_title['mer_name'],
  643. 'device_info'=>[
  644. 'device_ip'=>app('request')->ip()
  645. // 'device_ip'=>'115.171.134.68'
  646. ],
  647. // 'expend'=>json_encode($expend),
  648. 'div_members'=>json_encode($div_members),
  649. 'fee_mode'=>'I',
  650. 'notify_url'=>env('APP_URL')."/api/jsapiPay/notify/HF"
  651. ];
  652. }
  653. // dump($type);return ;
  654. $res=$this->Payment_create_traits($params,$type,$key);
  655. if(!empty($res['error_code'])){
  656. $res1['code']='1000';
  657. $res1['return_msg']=$res['error_msg'];
  658. $res1['return_code']=1200;
  659. return $res1;
  660. }
  661. $res['code']='1000';
  662. $res['return_code']='999';
  663. return $res;
  664. }
  665. /**
  666. * 支付后回调处理
  667. * @return mixed
  668. * @author php迷途小书童
  669. * @created 2021/1/16 14:41
  670. */
  671. public function notify($type){
  672. if($type=='HK'){
  673. try {
  674. $post = $this->request->post();
  675. Log::info($post);
  676. $bool = $this->doNotify($post);
  677. if (!$bool)
  678. return app('json')->success(['result' => 'ERROR']);
  679. $bool = $this->repository->doNotify($post);
  680. if (!$bool)
  681. return app('json')->success(['result' => 'ERROR']);
  682. return app('json')->success(['result' => 'SUCCESS']);
  683. } catch (\Throwable $e) {
  684. Log::info($e->getMessage());
  685. return app('json')->status('error', $e->getMessage());
  686. }
  687. }elseif ($type=='HF'){
  688. $post=$this->request->param();
  689. Db::name("log")->insert(array('data'=>'【异步接受到的参数】'.json_encode($post),));//日志记录
  690. $post_data_str = isset($post['data']) ? $post['data']: '';
  691. $post_sign_str = isset($post['sign']) ? $post['sign']: '';
  692. if (!empty($post['id'])) {
  693. $requestId = $post['id'];
  694. $redisKey = 'api-merchant-order-OrderMerchant-HF-request-id:' . $requestId;
  695. $ttl = 60;
  696. $redisHandler = Cache::store('redis')->handler();
  697. $isSet = $redisHandler->set($redisKey, 1, ['nx', 'ex' => $ttl]);
  698. if ($isSet) {
  699. Db::name("log")->insert([
  700. 'data' => '汇付回调处理成功 (ID: ' . $requestId . ')'
  701. ]);
  702. } else {
  703. // 重复回调
  704. Db::name("log")->insert([
  705. 'data' => '汇付回调错误:重复回调 (ID: ' . $requestId . ')'
  706. ]);
  707. return app('json')->success(['result' => 'ERROR']);
  708. }
  709. } else {
  710. Db::name("log")->insert([
  711. 'data' => '汇付回调错误:' . $type . '缺少必要参数(id)'
  712. ]);
  713. return app('json')->success(['result' => 'ERROR']);
  714. }
  715. # 先校验签名和返回的数据的签名的数据是否一致
  716. $adapay_tools=new AdapayTools();
  717. AdapayTools::setRsaPrivateKey('MIICdQIBADANBgkqhkiG9w0BAQEFAASCAl8wggJbAgEAAoGBALFOkwRKx2HKMpAL7LUb755cIS7mleort++Rkl25tJMJCf9Ezeyg4xwLBN6RQsLERTAzRKc/EUtxm4/9rzDzvNZ4BegEI8mXWBUrgpn7e1ar8Ek8IRPdXLrozuld9cv56R3yB/Yta0R+kmgCfn2C5V+xtM6njimkOStvdK5cNwqFAgMBAAECgYA5pn+87IeJr1Hjbk0n0g6GYhRUCJuECXUEC0QY/3HMQSsj+f4uy10s2BRcPcUESQbqFjFjY+k+q5DWL7kP5KBoXGnFyflAyRhWGTkSC3VhGixh6ro3EcUJSrFDjGaThGaPrc8Zfcp5JhL5Thi0GaBXSnRH1Cmn4h8gkAEJxIM7PQJBAOq2+oVPtqkj99YRs0eewkZAM7bKRzSwI7OFU6YWsCYVkqNE7Lr3KKGekehuWwkOvrCBR+NEGQfAb557g2CHmzMCQQDBYtgQ5wvl9fD8BWAVKuPoxoleH+9wUQ65Rnt/Ebkx+g8kP37JRun81duLDULTKr/3ak42goE00TfnfeXl0gNnAkA0wuUVypF4/AjeKiRu2RU6zXvSfy36fg3IcRQYpcj7BqZr5TaB4MVVb1vFL+lu482hx63tPIWT5IIy0fj6XgFZAkBinlKLRBgIPISZMPCPuuCg22ZADs8fGucEStI9ub8Uom3IUW0JndVDb5fW8HtMjrd4p8ic+a6ETdFRhx2PNqsvAkAzDvlve56sZnLYx9t/MPkJTK3ZhgVETS0H2FUyJGVOSfjv68bNsUshyPfzJrdbCeLzjMLq8TpyOmiIUAeQ5YCX');
  718. // $adapay_tools->SetParams();
  719. $sign_flag = $adapay_tools->verifySign($post_data_str, $post_sign_str);
  720. $post_data_str=json_decode($post_data_str,true);
  721. if ($sign_flag){
  722. try {
  723. if(empty($post_data_str['error_msg'])){
  724. Db::name("log")->insert(array('data'=>'【验签通过-支付】:时间:'.date('Y-m-d H:i:s',time()),));//日志记录
  725. $bool = $this->repository->doNotifyHF($post_data_str);
  726. }else{
  727. Db::name('order_merchant')->where('out_trade_no', explode('/', $post_data_str['payment_order_no'][0]))->update(['status'=>5]);
  728. }
  729. if (!$bool)
  730. return app('json')->success(['result' => 'ERROR']);
  731. return app('json')->success(['result' => 'SUCCESS']);
  732. }catch (Exception $exception){
  733. Db::name("log")->insert(array('data'=>'【汇付错误日志】'));//日志记录
  734. Db::name("log")->insert(array('data'=>$exception->getFile().':'.$exception->getLine().'【'.$exception->getMessage().'】'));
  735. return app('json')->fail('错误2');
  736. }
  737. }else{
  738. Db::name("log")->insert(array('data'=>'【签名验证失败】'.json_encode($sign_flag).json_encode($post_data_str),));//日志记录
  739. }
  740. }elseif ($type == 'HF_pay_user_annual'){
  741. $post=$this->request->param();
  742. Db::name("log")->insert(array('data'=>'【异步接受到的参数】'.json_encode($post),));//日志记录
  743. $post_data_str = isset($post['data']) ? $post['data']: '';
  744. $post_sign_str = isset($post['sign']) ? $post['sign']: '';
  745. if (!empty($post['id'])) {
  746. $requestId = $post['id'];
  747. $redisKey = 'api-merchant-order-OrderMerchant-HF_pay_user_annual-request-id:' . $requestId;
  748. $ttl = 60;
  749. $redisHandler = Cache::store('redis')->handler();
  750. $isSet = $redisHandler->set($redisKey, 1, ['nx', 'ex' => $ttl]);
  751. if ($isSet) {
  752. Db::name("log")->insert([
  753. 'data' => '汇付回调处理成功 (ID: ' . $requestId . ')'
  754. ]);
  755. } else {
  756. // 重复回调
  757. Db::name("log")->insert([
  758. 'data' => '汇付回调错误:重复回调 (ID: ' . $requestId . ')'
  759. ]);
  760. return app('json')->success(['result' => 'ERROR']);
  761. }
  762. } else {
  763. Db::name("log")->insert([
  764. 'data' => '汇付回调错误:' . $type . '缺少必要参数(id)'
  765. ]);
  766. return app('json')->success(['result' => 'ERROR']);
  767. }
  768. # 先校验签名和返回的数据的签名的数据是否一致
  769. $adapay_tools=new AdapayTools();
  770. AdapayTools::setRsaPrivateKey('MIICdQIBADANBgkqhkiG9w0BAQEFAASCAl8wggJbAgEAAoGBALFOkwRKx2HKMpAL7LUb755cIS7mleort++Rkl25tJMJCf9Ezeyg4xwLBN6RQsLERTAzRKc/EUtxm4/9rzDzvNZ4BegEI8mXWBUrgpn7e1ar8Ek8IRPdXLrozuld9cv56R3yB/Yta0R+kmgCfn2C5V+xtM6njimkOStvdK5cNwqFAgMBAAECgYA5pn+87IeJr1Hjbk0n0g6GYhRUCJuECXUEC0QY/3HMQSsj+f4uy10s2BRcPcUESQbqFjFjY+k+q5DWL7kP5KBoXGnFyflAyRhWGTkSC3VhGixh6ro3EcUJSrFDjGaThGaPrc8Zfcp5JhL5Thi0GaBXSnRH1Cmn4h8gkAEJxIM7PQJBAOq2+oVPtqkj99YRs0eewkZAM7bKRzSwI7OFU6YWsCYVkqNE7Lr3KKGekehuWwkOvrCBR+NEGQfAb557g2CHmzMCQQDBYtgQ5wvl9fD8BWAVKuPoxoleH+9wUQ65Rnt/Ebkx+g8kP37JRun81duLDULTKr/3ak42goE00TfnfeXl0gNnAkA0wuUVypF4/AjeKiRu2RU6zXvSfy36fg3IcRQYpcj7BqZr5TaB4MVVb1vFL+lu482hx63tPIWT5IIy0fj6XgFZAkBinlKLRBgIPISZMPCPuuCg22ZADs8fGucEStI9ub8Uom3IUW0JndVDb5fW8HtMjrd4p8ic+a6ETdFRhx2PNqsvAkAzDvlve56sZnLYx9t/MPkJTK3ZhgVETS0H2FUyJGVOSfjv68bNsUshyPfzJrdbCeLzjMLq8TpyOmiIUAeQ5YCX');
  771. // $adapay_tools->SetParams();
  772. $sign_flag = $adapay_tools->verifySign($post_data_str, $post_sign_str);
  773. $post_data_str=json_decode($post_data_str,true);
  774. if ($sign_flag){
  775. try {
  776. if(empty($post_data_str['error_msg'])){
  777. Db::name("log")->insert(array('data'=>'【验签通过-支付】:时间:'.date('Y-m-d H:i:s',time()),));//日志记录
  778. if(strpos($post_data_str['order_no'],'_') !== false){
  779. $order_no = explode("_",$post_data_str['order_no'])[0];
  780. }else{
  781. $order_no = $post_data_str['order_no'];
  782. }
  783. $user_pension_account_order=Db::name('user_pension_account_order')-> where('order_no',$order_no)->find();
  784. if (!$user_pension_account_order){
  785. return app('json')->success(['result' => 'fail']);
  786. }
  787. if($user_pension_account_order['status']==1){
  788. return app('json')->success(['result' => 'SUCCESS']);
  789. }
  790. Db::startTrans();
  791. try {
  792. $pay_type = $post_data_str['pay_channel'] == "wx_pub" ? "WX" : "ALI";
  793. $uid = $user_pension_account_order['uid'];
  794. Db::name('user_pension_account_order')-> where('order_no',$order_no) -> update(['status'=>1,'pay_time'=>date('Y-m-d H:i:s'),'pay_type'=>$pay_type]);
  795. $check = Db::name("user_pension_account") -> where("uid",$uid) -> find();
  796. $start_time = date('Y-m-d');
  797. $end_time = date("Y-m-d 23:59:59",strtotime("+1 year", strtotime($start_time)));
  798. $give = 0;
  799. //存在既续费
  800. if ($check){
  801. Db::name("user_pension_account") -> where("uid",$uid) -> update(['start_time'=>$start_time,'end_time'=>$end_time]);
  802. }else{
  803. //新用户订单
  804. Db::name("user_pension_account") -> insert([
  805. "uid" => $uid,
  806. "start_time" => $start_time,
  807. "end_time" => $end_time,
  808. "status" => 1,
  809. ]);
  810. }
  811. Db::name("user_pension_account") -> where("uid",$uid) -> update(['give' => 1]);
  812. if ($user_pension_account_order['type'] > 1){
  813. $mark = "购买大礼包补贴养老金";
  814. $ylj=sprintf("%01.2f",bcmul($user_pension_account_order['pay_price'],'0.1',5));//10%的养老金
  815. $billData=[
  816. 'uid'=>$uid,
  817. 'pm'=>1,
  818. 'title'=>'养老金',
  819. 'category'=>'now_money',
  820. 'type'=>'commission',
  821. 'number'=>$ylj,
  822. 'balance'=>0,
  823. 'mark'=>$mark,
  824. 'create_time'=>date("Y-m-d H:i:s",time()),
  825. 'status'=>1,
  826. 'order_sn'=>'',
  827. 'type_shop'=>0,
  828. 'commission_type'=>5,
  829. 'order_type'=>1,
  830. 'gzc'=>0
  831. ];
  832. Db::name('user_bill')->insert($billData);
  833. Db::name("user")->where("uid",$uid)->inc('annuity', $ylj) ->update();
  834. Db::name("user")->where("uid",$uid)->inc('annuity_num', 1) ->update();
  835. //上级佣金
  836. $spread_uid = Db::name('user') -> where('uid',$uid) -> value('spread_uid');
  837. //上级给佣金10%
  838. $commission=sprintf("%01.2f",bcmul($user_pension_account_order['pay_price'],'0.1',5));//10%的佣金
  839. $spreadTitle='用户购买大礼包获得佣金';
  840. $spreadMark = "用户购买大礼包获得佣金";
  841. $spreadBillData=[
  842. 'uid'=>$spread_uid,
  843. 'link_id'=>0,
  844. 'pm'=>1,
  845. 'title'=>$spreadTitle,
  846. 'category'=>'now_money',
  847. 'type'=>'commission',
  848. 'number'=>$commission,
  849. 'balance'=>0,
  850. 'mark'=>$spreadMark,
  851. 'create_time'=>date("Y-m-d H:i:s",time()),
  852. 'status'=>1,
  853. 'order_sn'=>$user_pension_account_order['order_no'],
  854. 'type_shop'=>0,
  855. 'commission_type'=>3,
  856. 'order_type'=>1
  857. ];
  858. Db::name('user_bill')->insert($spreadBillData);
  859. Db::name('user')->where('uid',$spread_uid)->inc('brokerage_price',$commission)->update();
  860. }
  861. // 提交事务
  862. Db::commit();
  863. return true;
  864. } catch (\Exception $e) {
  865. // 回滚事务
  866. Db::rollback();
  867. Log::error($e->getMessage());
  868. }
  869. }
  870. return app('json')->success(['result' => 'SUCCESS']);
  871. }catch (\Exception $exception){
  872. return app('json')->fail('错误2');
  873. }
  874. }
  875. }
  876. }
  877. /**
  878. * 查询订单API
  879. * @return mixed
  880. * @author php迷途小书童
  881. * @created 2021/1/16 10:05
  882. */
  883. public function queryOrder(){
  884. $out_trade_no = (string)$this->request->param('out_trade_no');
  885. $data = $this->doQueryOrder($out_trade_no);
  886. return app('json')->success($data);
  887. }
  888. /**
  889. * 关闭订单API
  890. * @return bool|string
  891. * @author php迷途小书童
  892. * @created 2021/1/16 10:05
  893. */
  894. public function closeOrder(){
  895. $out_trade_no = (string)$this->request->param('out_trade_no');
  896. $data = $this->doCloseOrder($out_trade_no);
  897. return app('json')->success($data);
  898. }
  899. /**
  900. * 申请退款API
  901. * @return bool|string
  902. * @author php迷途小书童
  903. * @created 2021/1/16 10:05
  904. */
  905. public function refundApply(){
  906. $out_trade_no = (string)$this->request->param('out_trade_no');
  907. $order = $this->repository->getOne($out_trade_no);
  908. if (!$order)
  909. return app('json')->fail('订单不存在');
  910. makeLock()->lock();
  911. try {
  912. $refund_no=$this->repository->getNewOrderId($order->trade_type);
  913. $this->repository->updateOrder($order,
  914. [
  915. 'refund_no' => $refund_no,
  916. 'status' => 2,
  917. ]
  918. );
  919. } catch (\Throwable $e) {
  920. makeLock()->unlock();
  921. return app('json')->fail($e->getMessage());
  922. }
  923. makeLock()->unlock();
  924. try {
  925. // $data = $this->doRefundApply(['out_trade_no'=>$order['out_trade_no'],'refund_no'=>$refund_no,'money'=>$order['money']]);
  926. $data=$this->hf_refund($order,$refund_no);
  927. return app('json')->success($data);
  928. } catch (\Throwable $e) {
  929. return app('json')->status('error', $e->getMessage(), ['out_trade_no' => $order->out_trade_no]);
  930. }
  931. }
  932. public function hf_refund($order,$refund_no)
  933. {
  934. $goods_title=Db::name('merchant')->where('mer_id',$order['mer_id'])->find();
  935. if($order['trade_type']=='WX'){
  936. $member_id=$goods_title['hf_member_id_wx'];
  937. $key='api_live_90ef02e4-54ac-41ee-adf1-e4927d23d58f';
  938. }elseif($order['trade_type']=='ALI'){
  939. $member_id=$goods_title['hf_member_id'];
  940. $key='api_live_b23537ed-64b8-45d6-832e-fb228aa9e0a9';
  941. }
  942. $amt = $order['service_money'] + $order['pension']+$order['swipe_fee'];
  943. $amt=sprintf("%01.2f",$amt);
  944. $mouny=$order['money']-$amt;
  945. $mouny=sprintf("%01.2f",$mouny);
  946. if($amt=='0.00'){
  947. $div_members=[
  948. [
  949. 'member_id'=>$member_id,
  950. 'amount'=>$mouny,
  951. 'fee_flag'=>'Y'
  952. ]
  953. ];
  954. }else{
  955. $div_members= [
  956. [
  957. 'member_id'=>$member_id,
  958. 'amount'=>$mouny,
  959. 'fee_flag'=>'Y'
  960. ],
  961. [
  962. 'member_id'=>0,
  963. 'amount'=>$amt,
  964. 'fee_flag'=>'N'
  965. ]
  966. ];
  967. }
  968. return $this->Payment_refund_traits(['id'=>$order['hf_pay_id'],'refund_order_no'=>$refund_no,'refund_amt'=>$order['money'],'div_members'=>$div_members,'notify_url'=>env('APP_URL')."/api/jsapiPay/refund_notify/HF"],$key);
  969. }
  970. /**
  971. * 申请退款API回调
  972. * @return bool|string
  973. * @author php迷途小书童
  974. * @created 2021/1/16 10:05
  975. */
  976. public function refundNotify($type){
  977. try {
  978. if($type=='HF'){
  979. $post=$this->request->param();
  980. Db::name("log")->insert(array('data'=>'【异步接受到的参数】'.json_encode($post),));//日志记录
  981. $post_data_str = isset($post['data']) ? $post['data']: '';
  982. $post_sign_str = isset($post['sign']) ? $post['sign']: '';
  983. # 先校验签名和返回的数据的签名的数据是否一致
  984. $adapay_tools=new AdapayTools();
  985. AdapayTools::setRsaPrivateKey('MIICdQIBADANBgkqhkiG9w0BAQEFAASCAl8wggJbAgEAAoGBALFOkwRKx2HKMpAL7LUb755cIS7mleort++Rkl25tJMJCf9Ezeyg4xwLBN6RQsLERTAzRKc/EUtxm4/9rzDzvNZ4BegEI8mXWBUrgpn7e1ar8Ek8IRPdXLrozuld9cv56R3yB/Yta0R+kmgCfn2C5V+xtM6njimkOStvdK5cNwqFAgMBAAECgYA5pn+87IeJr1Hjbk0n0g6GYhRUCJuECXUEC0QY/3HMQSsj+f4uy10s2BRcPcUESQbqFjFjY+k+q5DWL7kP5KBoXGnFyflAyRhWGTkSC3VhGixh6ro3EcUJSrFDjGaThGaPrc8Zfcp5JhL5Thi0GaBXSnRH1Cmn4h8gkAEJxIM7PQJBAOq2+oVPtqkj99YRs0eewkZAM7bKRzSwI7OFU6YWsCYVkqNE7Lr3KKGekehuWwkOvrCBR+NEGQfAb557g2CHmzMCQQDBYtgQ5wvl9fD8BWAVKuPoxoleH+9wUQ65Rnt/Ebkx+g8kP37JRun81duLDULTKr/3ak42goE00TfnfeXl0gNnAkA0wuUVypF4/AjeKiRu2RU6zXvSfy36fg3IcRQYpcj7BqZr5TaB4MVVb1vFL+lu482hx63tPIWT5IIy0fj6XgFZAkBinlKLRBgIPISZMPCPuuCg22ZADs8fGucEStI9ub8Uom3IUW0JndVDb5fW8HtMjrd4p8ic+a6ETdFRhx2PNqsvAkAzDvlve56sZnLYx9t/MPkJTK3ZhgVETS0H2FUyJGVOSfjv68bNsUshyPfzJrdbCeLzjMLq8TpyOmiIUAeQ5YCX');
  986. // $adapay_tools->SetParams();
  987. $sign_flag = $adapay_tools->verifySign($post_data_str, $post_sign_str);
  988. $post_data_str=json_decode($post_data_str,true);
  989. if ($sign_flag){
  990. if(empty($post_data_str['error_code'])){
  991. Db::name("log")->insert(array('data'=>'【退款验签通过 时间:】'.date('Y-m-d H:i:s',time())));
  992. $bool = $this->repository->doRefundNotify( $post_data_str['refund_order_no']);
  993. }
  994. if (!$bool)
  995. return app('json')->success(['result' => 'ERROR']);
  996. return app('json')->success(['result' => 'SUCCESS']);
  997. }
  998. }
  999. $post = $this->request->post();
  1000. $bool = $this->doNotify($post);
  1001. if (!$bool)
  1002. return app('json')->success(['result' => 'ERROR']);
  1003. $bool = $this->repository->doRefundNotify($post);
  1004. if (!$bool)
  1005. return app('json')->success(['result' => 'ERROR']);
  1006. return app('json')->success(['result' => 'SUCCESS']);
  1007. } catch (\Throwable $e) {
  1008. return app('json')->status('error', $e->getMessage());
  1009. }
  1010. }
  1011. /**
  1012. * 退款查询API
  1013. * @return bool|string
  1014. * @author php迷途小书童
  1015. * @created 2021/1/16 10:04
  1016. */
  1017. public function refundQuery(){
  1018. $refund_no = (string)$this->request->param('refund_no');
  1019. $data = $this->doRefundQuery($refund_no);
  1020. return app('json')->success($data);
  1021. }
  1022. /**
  1023. * 账户余额查询
  1024. * @return mixed
  1025. * @author php迷途小书童
  1026. * @created 2021/1/16 10:04
  1027. */
  1028. public function balanceQuery(){
  1029. $merch_no = env('JSAPI.MERCH_NO');//海科商户编号
  1030. $data = $this->dobalanceQuery($merch_no);
  1031. return app('json')->success($data);
  1032. }
  1033. public function queryOrders(){
  1034. $out_trade_no = (string)$this->request->param('out_trade_no');
  1035. $data = Db::name("order_merchant")
  1036. -> alias("om")
  1037. -> join("merchant m","om.mer_id = m.mer_id")
  1038. -> where("out_trade_no",$out_trade_no) -> field("om.money,om.status,om.out_trade_no,om.pension,om.pay_time,m.mer_name") -> find();
  1039. return app('json')->success($data);
  1040. }
  1041. }