Recharge.php 1.5 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556
  1. <?php
  2. namespace app\api\controller;
  3. use app\common\library\Shande;
  4. use comservice\Response;
  5. use datamodel\UserChargeLog;
  6. use think\Db;
  7. class Recharge extends BaseController
  8. {
  9. #充值
  10. public function index(){
  11. $data=input();
  12. $check=$this->validate($data,[
  13. 'amount|金额'=>['require','number','gt:0','lt:1000000'],
  14. 'url|链接'=>['url'],
  15. 'type|付款方式'=>['require','in:shande'],
  16. ]);
  17. if($check!==true){
  18. return json(Response::fail($check));
  19. }
  20. $user=$this->userInfo;
  21. DB::startTrans();
  22. $log=UserChargeLog::create([
  23. 'user_id'=>$user['id'],
  24. 'amount'=>$data['amount'],
  25. 'type'=>$data['type'],
  26. ]);
  27. $res=[
  28. 'data'=>''
  29. ];
  30. switch ($log['type']){
  31. case 'shande':
  32. $resp=Shande::orderPay(
  33. $log['order_no'],
  34. str_pad($log['amount']*100,12,'0',STR_PAD_LEFT),
  35. '充值',
  36. str_replace('http://','https://',url('api/notify/charge',['no'=>$log['order_no'],'type'=>$log['type']],true,true)),
  37. $data['url']??''
  38. );
  39. $res['data']=$resp['data']['body']['credential'];
  40. if(!is_array($res)){
  41. Db::rollback();
  42. return json(Response::fail($res));
  43. }
  44. break;
  45. }
  46. Db::commit();
  47. return json(Response::success('',$res));
  48. }
  49. }