ConfirmController.php 5.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148
  1. <?php
  2. class ConfirmController extends CController{
  3. public $layout="none";
  4. public function actionPaySuccess(){
  5. $input_data = json_decode(file_get_contents("php://input"), true);
  6. $input_data = $input_data['data']['object'];
  7. if($input_data['object'] == 'charge'&& $input_data['paid']==true){
  8. //TODO update database
  9. if(strpos($input_data['order_no'], 'char') !== false ){ //充值卡订单
  10. // 支付成功后 用户余额/代金券 增加 暂时充值卡发放的代金券没有过期时间
  11. $order = RechargeOrder::get(new MongoId(str_replace("char","",$input_data['order_no'])));
  12. $recharge = Recharge::get(new MongoId($order->recharge));
  13. $user_obj = RUser::get($order->user);
  14. $amount = $recharge->denomination;
  15. if($recharge->cash_back){
  16. $amount += $recharge->cash_back;
  17. }
  18. if(isset($recharge->coupons) && is_array($recharge->coupons) && count($recharge->coupons)){
  19. foreach ($recharge->coupons as $coupon_id) {
  20. //$start_time = time();
  21. //$end_time = strtotime(date('Y-m-d',$start_time+1209600));
  22. Service::factory('CouponService')->giveCoupon($user_obj->_id, $coupon_id);
  23. }
  24. }
  25. $user_obj->balance = $user_obj->balance+$amount;
  26. $user_obj->save();
  27. $log = new RechargeLog();
  28. $log->time = time();
  29. $log->user = $user_obj->_id;
  30. $log->recharge = $recharge->_id;
  31. $log->save(true);
  32. $balance_log = new BalanceLog();
  33. $balance_log->time = time();
  34. $balance_log->user = $user_obj->_id;
  35. $balance_log->memo = '购买充值卡充值';
  36. $balance_log->type = 'recharge';
  37. $balance_log->amount = $amount;
  38. $balance_log->save(true);
  39. $order->charge_id = $input_data['id'];
  40. $order->pay_channel = $input_data['channel'];
  41. $order->status = 1;
  42. $order->update(array('charge_id','pay_channel','status'),true);
  43. echo 'success';
  44. die();
  45. }else{
  46. $order = ROrder::get(new MongoId($input_data['order_no']));
  47. if(!$order || $order->status == -1){
  48. echo 'fail';
  49. die();
  50. }
  51. $order->charge_id = $input_data['id'];
  52. $order->pay_channel = $input_data['channel'];
  53. if($order->final_price>$order->pay_price){
  54. $order->pay_channel = 'mix';
  55. }
  56. $order->status = 1;
  57. if($order->update(array('charge_id','pay_channel','status','pay_channel'),true)){
  58. $list = new ARedisList('o2o_after_pay_success');
  59. $list->push(json_encode($input_data));
  60. //如果有余额支付 扣除用户余额 并生成余额变动日志
  61. if($order->final_price>$order->pay_price){
  62. $user_obj = RUser::get($order->user);
  63. $user_obj->balance = $user_obj->balance-($order->final_price-$order->pay_price);
  64. $user_obj->save();
  65. $balance_log = new BalanceLog();
  66. $balance_log->time = time();
  67. $balance_log->user = $user_obj->_id;
  68. $balance_log->memo = '微信下订单';
  69. $balance_log->type = 'order';
  70. $balance_log->amount = $order->final_price-$order->pay_price;
  71. $balance_log->save(true);
  72. }
  73. echo 'success';
  74. die();
  75. }else{
  76. echo 'fail';
  77. die();
  78. }
  79. }
  80. }elseif($input_data['object'] == 'refund'&& $input_data['succeed']==true){
  81. //TODO update database
  82. echo 'success';
  83. die();
  84. }else{
  85. echo 'fail';
  86. die();
  87. }
  88. }
  89. public function actionCheckMobile(){
  90. $mobile = Yii::app()->getRequest()->getParam("mobile",'');
  91. if($mobile && preg_match("/\d{11}/",$mobile)){
  92. $criteria = new EMongoCriteria();
  93. $criteria->mobile('==',$mobile);
  94. $user = Mobile::model()->find($criteria);
  95. if($user){
  96. echo 'fail';
  97. }else{
  98. $userAr = new Mobile();
  99. $userAr->mobile = $mobile;
  100. if($userAr->save()){
  101. echo 'success';
  102. }else{
  103. echo 'fail';
  104. }
  105. }
  106. }else{
  107. echo 'fail';
  108. }
  109. }
  110. public function actionSyncCode(){
  111. echo ENVIRONMENT."\n";
  112. if(ENVIRONMENT == 'product'){
  113. exec("/data/php/webshell/SyncCodeOnline.sh");
  114. echo 'success';
  115. }elseif(ENVIRONMENT == 'develop'){
  116. exec("/data/php/webshell/SyncCodeDev.sh");
  117. echo 'success';
  118. }else{
  119. exec("/data/php/webshell/SyncCode.sh");
  120. echo 'success';
  121. }
  122. }
  123. }