OrderLib.php 4.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121
  1. <?php
  2. declare (strict_types=1);
  3. // +----------------------------------------------------------------------
  4. // | [ WE CAN DO IT MORE SIMPLE ]
  5. // +----------------------------------------------------------------------
  6. // | Copyright (c) 2018-2020 rights reserved.
  7. // +----------------------------------------------------------------------
  8. // | 支付结算
  9. // +----------------------------------------------------------------------
  10. // | Date: 2020-08-25 17:23
  11. // +----------------------------------------------------------------------
  12. namespace app\lib;
  13. use app\api\controller\Recharge;
  14. use app\model\api\PayTrade;
  15. use app\model\api\Order;
  16. use app\model\api\ShowTemplateOrder;
  17. use app\model\api\UserShowTemplate;
  18. use app\model\api\RechargeOrder;
  19. use app\model\api\OrderInfo;
  20. use app\model\api\User as UserModel;
  21. use app\model\api\UserDetail as UserDetailModel;
  22. use app\model\api\UserScoreDetail;
  23. use app\model\api\Sys as SysModel;
  24. use think\facade\Db;
  25. class OrderLib
  26. {
  27. /**
  28. * 支付反馈
  29. * @param $orderId
  30. * @return bool|string
  31. * @throws \think\db\exception\DataNotFoundException
  32. * @throws \think\db\exception\DbException
  33. * @throws \think\db\exception\ModelNotFoundException
  34. */
  35. public function orderPay($payOn,$payDataInfo="")
  36. {
  37. $payTradeData = (new PayTrade)->where('pay_no', $payOn)->find();
  38. @file_put_contents('quanju.txt', json_encode($payTradeData). "-支付反馈\r\n", 8);
  39. if (empty($payTradeData)) {
  40. return false;
  41. }
  42. //已支付
  43. if ($payTradeData['status'] == 1) {
  44. return false;
  45. }
  46. $userData = (new UserModel)->where('uid', $payTradeData['uid'])->find();
  47. @file_put_contents('quanju.txt', json_encode($userData). "-用户信息\r\n", 8);
  48. if(empty($userData)){
  49. return false;
  50. }
  51. //处理支付成功
  52. PayTrade::beginTrans();
  53. try {
  54. (new PayTrade)->where('id', $payTradeData['id'])->update(['status' => 1, 'pay_time' => time(),'pay_json' => $payDataInfo]);
  55. //购买模板
  56. if($payTradeData["type"]=="temp"){
  57. $tempOrderData = (new ShowTemplateOrder)->where("id",$payTradeData['o_id'])->find();
  58. if(empty($tempOrderData)){
  59. PayTrade::rollbackTrans();
  60. return false;
  61. }
  62. (new ShowTemplateOrder)->where("id",$payTradeData['o_id'])->update(['status' => 1, 'pay_time' => time()]);
  63. //验证并绑定当前模板
  64. (new UserShowTemplate)->userBindTemp($tempOrderData["show_template_id"],$tempOrderData['uid']);
  65. //添加消费记录
  66. if(in_array($payTradeData["pay_type"],["alipay","wxpay"])){
  67. // (new UserDetailModel)->consumeLog($payTradeData['uid'],$payTradeData["money"],"show_temp_buy","购买名片模板");
  68. }
  69. PayTrade::commitTrans();
  70. return true;
  71. }
  72. //商城订单
  73. if($payTradeData["type"]=="shop"){
  74. (new Order)->where("id",$payTradeData['o_id'])->update(['status' => 1, 'pay_time' => time()]);
  75. PayTrade::commitTrans();
  76. return true;
  77. }
  78. //商城积分支付订单
  79. if($payTradeData["type"]=="shop_score"){
  80. (new Order)->where("id",$payTradeData['o_id'])->update(['status' => 1, 'pay_time' => time()]);
  81. PayTrade::commitTrans();
  82. return true;
  83. }
  84. //充值订单
  85. if($payTradeData["type"]=="recharge"){
  86. // 调用充值成功处理
  87. // $rechargeController = new \app\api\controller\Recharge();
  88. // $result = $rechargeController->paySuccess($payOn, $payTradeData['transaction_id'] ?? '', $payDataInfo);
  89. @file_put_contents('quanju.txt', $payOn. "-能到这里吗\r\n", 8);
  90. $result = (new RechargeOrder())->paySuccess($payOn, $payTradeData['transaction_id'] ?? '', $payDataInfo);
  91. if (!$result) {
  92. PayTrade::rollbackTrans();
  93. return false;
  94. }
  95. PayTrade::commitTrans();
  96. return true;
  97. }
  98. PayTrade::commitTrans();
  99. } catch (DbException $dbException) {
  100. @file_put_contents('quanju.txt', $dbException->getLine() . $dbException->getMessage() . $dbException->getFile() . "-处理完成报错内容\r\n", 8);
  101. PayTrade::rollbackTrans();
  102. return false;
  103. }
  104. //后台管理人员支付直接返回
  105. if($payTradeData["pay_type"]=="system"){
  106. return true;
  107. }
  108. return true;
  109. }
  110. }