Exemplo n.º 1
0
 /**
  * 领取福利
  */
 public function order()
 {
     $id = I('request.id', '', 'strval');
     $json = array('msg_code' => 10001, 'msg_content' => '');
     do {
         $hongbao = M('bao')->where(array('number_no' => $id))->find();
         if (!$hongbao) {
             $json['msg_code'] = 10002;
             $json['msg_content'] = '没找到福利';
             break;
         }
         //            if($hongbao['state'] != 2){
         //                $json['msg_code'] = 10002;
         //                $json['msg_content'] = '福利已经领取完毕.';
         //                break;
         //            }
         $order = M('bao_order')->where(array('from_number_no' => $id, 'user_id' => $this->user_id))->find();
         $user = M('user')->find($this->user_id);
         if (!$order) {
             $user_id = $this->user_id;
             $time = time();
             M('bao_order')->execute("UPDATE zml_bao_order SET user_id='{$user_id}',openid='{$user['openid']}',addtime='{$time}' WHERE from_number_no='{$id}' AND user_id=0 LIMIT 1");
             $order = M('bao_order')->where(array('from_number_no' => $id, 'user_id' => $this->user_id))->find();
             $is_have = M('bao_order')->where(array('from_number_no' => $id, 'user_id' => 0))->find();
             if (!$is_have) {
                 //
                 M('bao')->where(array('from_number_no' => $id, 'state' => array('in', array(2))))->save(array('success_time' => time(), 'state' => 3));
             }
             //                else{
             //                    if($hongbao['state'] == 3){
             //                        M('bao')->where(array('from_number_no'=>$id))->save(array('success_time'=>time(), 'state'=>2));
             //                    }
             //                }
         }
         $honbao_user = M('user')->find($order['bao_user_id']);
         if ($order) {
             if ($order['state'] == 1) {
                 $data = array('partner_trade_no' => $order['order_sn'], 're_user_name' => $user['name'], 'openid' => $user['openid'], 'amount' => $order['amount'] * 100, 'desc' => "您成功领取了”{$honbao_user['name']}“发的福利,¥ {$order['amount']}元");
                 $result = sendPay($data);
                 if ($result['result_code'] == 'SUCCESS' && $result['return_code'] == 'SUCCESS') {
                     M('bao_order')->where(array('id' => $order['id']))->save(array('pay_time' => time(), 'state' => 2, 'transaction_id' => $result['payment_no']));
                 }
             }
             $json['msg_content'] = '成功领取福利.';
             break;
         }
         $json['msg_code'] = 10002;
         $json['msg_content'] = '福利领取失败.';
         break;
     } while (false);
     echo json_encode($json);
 }
Exemplo n.º 2
0
 function sendhongbao()
 {
     header("Content-type:text/html;charset=utf-8");
     $order_list = M('zhaopian_order')->where(array('state' => 2, 'is_send_zhaopian' => 0))->select();
     foreach ($order_list as $order) {
         $hongbao_send = M('zhaopian_pay')->where(array('id' => $order['send_id']))->find();
         $hongbao_user = M('user')->find($order['zhaopian_user_id']);
         $order_user = M('user')->find($order['user_id']);
         if (!$hongbao_send) {
             //                $bao = array(
             //                    'mch_billno' =>get_order_sn(),
             //                    'send_name' => '红包照片',
             //                    're_openid' =>$order['zhaopian_openid'],
             //                    'total_amount' => floor($order['amount'] * 0.98 * 100),
             //                    'wishing' => '恭喜您!你发布的照片有朋友购买了。',
             //                    'act_name'=> '红包照片',
             //                    'remark' => '红包照片',
             //                );
             $bao = array('partner_trade_no' => get_order_sn(), 're_user_name' => $hongbao_user['name'], 'openid' => $order['zhaopian_openid'], 'amount' => floor($order['amount'] * 0.98 * 100), 'desc' => "好消息!“{$order_user['name']}”刚刚购买了您的私货照片。");
             $send = $bao;
             $send['user_id'] = $order['zhaopian_user_id'];
             $send['addtime'] = time();
             $send['order_id'] = $order['id'];
             $send['zhaopian_id'] = $order['zhaopian_id'];
             $hongbao_id = M('zhaopian_pay')->add($send);
             if ($hongbao_id) {
                 M('zhaopian_order')->where(array("id='{$order['id']}'"))->save(array('send_id' => $hongbao_id, 'send_sn' => $bao['partner_trade_no'], 'send_time' => time()));
                 $hongbao_send = M('zhaopian_pay')->find($hongbao_id);
             }
         }
         // 发送红包
         if ($hongbao_send) {
             if ($hongbao_send['state'] == 2) {
                 continue;
             }
             //                $bao = array(
             //                    'mch_billno' =>$hongbao_send['mch_billno'],
             //                    'send_name' => '红包照片',
             //                    're_openid' =>$order['zhaopian_openid'],
             //                    'total_amount' => floor($order['amount'] * 0.98 * 100),
             //                    'wishing' => '恭喜您!你发布的照片有朋友购买了。',
             //                    'act_name'=> '红包照片',
             //                    'remark' => '红包照片',
             //                );
             $bao = array('partner_trade_no' => $hongbao_send['partner_trade_no'], 're_user_name' => $hongbao_send['re_user_name'], 'openid' => $order['zhaopian_openid'], 'amount' => floor($order['amount'] * 0.98 * 100), 'desc' => "好消息!“{$order_user['name']}”刚刚购买了您的私货照片。");
             $data = sendPay($bao);
             if ($data['result_code'] == 'SUCCESS' && $data['return_code'] == 'SUCCESS') {
                 M('zhaopian_order')->where(array("id='{$order['id']}'"))->save(array('is_send_zhaopian' => 1));
                 M('zhaopian_pay')->where(array("id='{$hongbao_send['id']}'"))->save(array('state' => 2, 'payment_no' => $data['payment_no']));
                 $log = "发送红包成功, 红包编号:{$order['id']},发送编号:{$hongbao_send['id']}";
                 f_log($log, ROOT_PATH . 'Runtime/Logs/zhaopian.log');
                 echo $log . "<br/>";
             } else {
                 echo "amount:" . $order['amount'];
                 print_r($data);
                 $log = "发送红包失败, 红包编号:{$order['id']},发送编号:{$hongbao_send['id']}";
                 f_log($log, ROOT_PATH . 'Runtime/Logs/zhaopian.log');
                 echo $log . "<br/>";
             }
             sleep(5);
         }
     }
     die('ok');
 }
Exemplo n.º 3
0
 public function zhaopian($result, $pay_log_id = 0)
 {
     // 更改order 状态
     // 更改 hongbao状态
     $result['out_trade_no'];
     $order = M('zhaopian_order')->where("order_sn='{$result['out_trade_no']}'")->find();
     $user = M('user')->find($order['user_id']);
     if ($order) {
         // 重复操作
         if ($order['state'] > 1) {
             return true;
         }
         $order_data = array('pay_id' => $pay_log_id, 'pay_time' => time(), 'transaction_id' => $result['transaction_id'], 'state' => 2);
         M('zhaopian_order')->where("id='{$order['id']}'")->save($order_data);
         $zhaopian = M('zhaopian')->where("id='{$order['hongbao_id']}'")->find();
         if ($zhaopian) {
             $data = array('update_time' => time(), 'total_num' => $zhaopian['total_num'] + 1, 'total_amount' => $zhaopian['total_amount'] + $order['amount']);
             $zhaopian = M('zhaopian')->where("id='{$order['hongbao_id']}'")->save($data);
             $zhaopian_user = M('user')->find($zhaopian['user_id']);
             // 自动发送红包
             if (true) {
                 $bao = array('partner_trade_no' => get_order_sn(), 're_user_name' => $zhaopian_user['name'], 'openid' => $zhaopian['openid'], 'amount' => floor($order['amount'] * 0.98 * 100), 'desc' => "好消息!“{$user['name']}”刚刚购买了您的私货照片。");
                 $send = $bao;
                 $send['user_id'] = $zhaopian['user_id'];
                 $send['addtime'] = time();
                 $send['order_id'] = $order['id'];
                 $send['zhaopian_id'] = $order['zhaopian_id'];
                 $hongbao_id = M('zhaopian_pay')->add($send);
                 if ($hongbao_id) {
                     M('zhaopian_order')->where(array("id='{$order['id']}'"))->save(array('send_id' => $hongbao_id, 'send_sn' => $bao['partner_trade_no'], 'send_time' => time()));
                     $data = sendPay($bao);
                     if ($data['result_code'] == 'SUCCESS' && $data['return_code'] == 'SUCCESS') {
                         M('zhaopian_order')->where(array("id='{$order['id']}'"))->save(array('is_send_zhaopian' => 1));
                         M('zhaopian_pay')->where(array("id='{$hongbao_id}'"))->save(array('state' => 2, 'payment_no' => $data['payment_no']));
                         $user_amount = number_format($order['amount'] * 0.98, 2);
                         $msg = "你发布的照片有朋友购买了!\n\n照片标题:{$zhaopian['remark']}\n\n支付金额:¥{$order['amount']}元\n\n好友购买照片钱已经通过微信支付打给你,其中已扣除2%微信支付手续费,扣除后金额为{$user_amount}元";
                         \Wechat\Wxapi::send_wxmsg($zhaopian['openid'], '红包照片状态提醒', U('/zhao/zhaopian/detail', array('id' => $zhaopian['number_no']), true, true), $msg);
                     } else {
                         M('hongbao_send')->where(array("id='{$hongbao_id}'"))->save(array('state' => 3));
                         $user_amount = number_format($order['amount'] * 0.98, 2);
                         $msg = "你发布的照片有朋友购买了!\n\n照片标题:{$zhaopian['remark']}\n\n支付金额:¥{$order['amount']}元\n\n红包将会在1~3个工作内,通过微信红包打给你,\n其中已扣除2%的微信支付手续费,扣除后金额为{$user_amount}元。\n因为微信支付到我们的账户需要1~3个工作日,我们\n的账户预存垫付的现金不足,暂时不能实时转账,希望\n理解。资金安全请你放心,如果有疑问请联系客服。";
                         \Wechat\Wxapi::send_wxmsg($zhaopian['openid'], '红包照片状态提醒', U('/zhao/zhaopian/detail', array('id' => $zhaopian['number_no']), true, true), $msg);
                         $sys_openid = "oV3oMxP5wdTR8BpptzNq2tDdGtLk";
                         $msg = "重要提示! 红包发送异常!!! 可能余额不足,或支付金额异常,支付金额:{$user_amount},请及时处理.";
                         \Wechat\Wxapi::send_wxmsg($sys_openid, '红包照片状态提醒', "http://{$_SERVER['HTTP_HOST']}", $msg);
                     }
                 }
             }
         }
     }
     return true;
 }