LgCashNotifyController.php 5.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163
  1. <?php
  2. /**
  3. * 重庆赤晓店信息科技有限公司
  4. * https://www.chixiaodian.com
  5. * Copyright (c) 2023 赤店商城 All rights reserved.
  6. */
  7. namespace app\modules\common\controllers;
  8. use app\models\AccountLog;
  9. use app\models\Cash;
  10. use app\models\Lg;
  11. use app\models\LocalDeliveryCash;
  12. use app\models\LocalDeliveryCourier;
  13. use app\models\Md;
  14. use app\models\ReOrder;
  15. use app\models\Shop;
  16. use app\models\ShopShare;
  17. use app\models\User;
  18. use app\modules\common\models\NotifyForm;
  19. use app\utils\LgApi;
  20. use app\utils\OrderNo;
  21. use app\utils\Wechat\Wechat;
  22. use app\utils\Wechat\WechatProfit;
  23. use app\utils\Wechat\WechatShare;
  24. use EasyWeChat\Kernel\Exceptions\Exception;
  25. use EasyWeChat\Kernel\BaseClient;
  26. use yii\web\Controller;
  27. use app\utils\IotCloudHelper;
  28. use app\models\Store;
  29. use app\models\OrderUnion;
  30. use app\models\Order;
  31. use app\models\WechatConfig;
  32. class LgCashNotifyController extends Controller
  33. {
  34. /**
  35. * 入口文件
  36. * @throws \Exception
  37. */
  38. public function actionIndex() {
  39. $store_id = get_params('store_id');
  40. $res = file_get_contents('php://input');
  41. $data = json_decode($res,true);
  42. $store = Store::findOne($store_id);
  43. $data = json_decode(self::decrypt($data['bizContent'],$store->lg_key),true);
  44. $orderNoHead = substr($data['outTradeNo'], 0, 3);
  45. if ($orderNoHead == OrderNo::ORDER_LOCAL_CASH){
  46. $cash = LocalDeliveryCash::find()->where(['order_no'=>$data['outTradeNo'],'status'=>6])->one();
  47. }else{
  48. $cash = Cash::find()->where(['order_no'=>$data['outTradeNo'],'status'=>6])->one();
  49. }
  50. if (!$cash){
  51. }
  52. if ($data['status'] == 300){
  53. //成功
  54. $cash->status = 2;
  55. $cash->updated_at = time();
  56. $cash->save();
  57. }
  58. if ($data['status'] == 999){
  59. //失败
  60. $cash = Cash::find()->where(['order_no'=>$data['outTradeNo']])->one();
  61. $cash->status = 3;//灵工提现失败
  62. $cash->updated_at = time();
  63. $cash->lg_refuse_desc = $data['msg'];
  64. if ($cash->save()){
  65. if ($cash->status == 3) {
  66. return;
  67. }
  68. //如果是骑手 把提现的钱返还
  69. if ($orderNoHead == OrderNo::ORDER_LOCAL_CASH){
  70. $courier = LocalDeliveryCourier::findOne(['saas_user_id' => $cash->saas_user_id]);
  71. $courier->money += $cash->price;
  72. $courier->save();
  73. }
  74. $user = User::findOne(['id' => $cash->user_id]);
  75. //把提现的钱返还
  76. if ($cash->cash_type == 0) {
  77. $user->price += $cash->price;
  78. $user->save();
  79. }elseif ($cash->cash_type == 17) {//全域提现
  80. $user->global_money += $cash->price;
  81. $user->save();
  82. } elseif ($cash->cash_type == Cash::IS_CASH_TYPE_BALANCE) {
  83. $saveLog = AccountLog::saveLog($cash->user_id, $cash->price, AccountLog::TYPE_BALANCE, AccountLog::LOG_TYPE_INCOME, 0, 0, "余额提现被驳回,单号:{$cash->order_no}");
  84. if (!$saveLog) {
  85. debug_log('网络异常,账户保存失败');
  86. }
  87. } elseif ($cash->cash_type == Cash::IS_CASH_TYPE_AREA_AGENT || $cash->cash_type == 3 ) {
  88. $user->price += $cash->price;
  89. $user->save();
  90. }elseif ($cash->cash_type == 2) {
  91. $md_info = Md::find()->where(['user_id' => $cash->user_id])->one();
  92. $md_info->cash_profit += $cash->price;
  93. $md_info->save();
  94. }elseif ($cash->cash_type == Cash::IS_CASH_TYPE_MCH) {
  95. $saveLog = \app\models\MchAccountLog::saveLog($cash->mch_id, $cash->user_id, $cash->price, AccountLog::LOG_TYPE_INCOME, 0, '', "提现被驳回,单号:{$cash->order_no}", 0, 0);
  96. if ($saveLog['code']) {
  97. debug_log($saveLog);
  98. }
  99. }
  100. }
  101. }
  102. }
  103. public static function decrypt($encryptData,$key){
  104. $privateKey = openssl_pkey_get_private(self::formatterPrivateKey($key));
  105. $privateKey or die('密钥不可用');
  106. $decryptData = '';
  107. $crypto = '';
  108. $ed = str_split(base64_decode($encryptData),256);
  109. foreach ($ed as $chunk) {
  110. if(openssl_private_decrypt($chunk, $decryptData, $privateKey)){
  111. $crypto .= $decryptData;
  112. }else{
  113. die('解密失败');
  114. }
  115. }
  116. return $crypto;
  117. }
  118. /**
  119. * 格式化私钥
  120. * @param $priKey string 私钥
  121. * @return string
  122. */
  123. public static function formatterPrivateKey($priKey)
  124. {
  125. $res = "-----BEGIN RSA PRIVATE KEY-----\n" .
  126. wordwrap($priKey, 64, "\n", true) .
  127. "\n-----END RSA PRIVATE KEY-----";
  128. return $res;
  129. }
  130. }