Пример #1
0
 /**
  * 用户托管充值行为
  * @param $uid 用户id
  * @param $amount 充值金额
  * @return array|mixed
  */
 public static function recharge($uid, $amount)
 {
     $flag = self::getIdentity($uid);
     if (!$flag) {
         $return = array('errorNum' => '1', 'errorMsg' => '用户不存在', 'data' => null);
         return $return;
     }
     $SinaBank = SinaBank::find()->where(['uid' => $uid, 'identity_id' => $flag, 'status' => SinaBank::STATUS_BINGING])->one();
     if (!$SinaBank) {
         $return = array('errorNum' => '1', 'errorMsg' => '请先进行绑定银行卡', 'data' => null);
         return $return;
     }
     //增加银行卡限额配置
     $check = self::checkdeposit($uid, $amount);
     if ($check['errorNum']) {
         $return = array('errorNum' => '1', 'errorMsg' => $check['errorMsg'], 'data' => null);
         return $return;
     }
     //获取配置中--最小--最大金额
     $config = self::getsiteConfig();
     $deposit_num = $config->deposit_num;
     $deposit_min = $config->deposit_min;
     $deposit_max = $config->deposit_max;
     $today_num = member::get_deposit_num($uid);
     //如果今日有充值行为 -- 次数有限定
     if ($today_num && $deposit_num) {
         if ($today_num > $deposit_num) {
             $return = array('errorNum' => '1', 'errorMsg' => '每日限定充值' . $deposit_num . '次', 'data' => null);
             return $return;
         }
     }
     if ($amount < $deposit_min || $amount > $deposit_max || strstr($amount, '.')) {
         $return = array('errorNum' => '1', 'errorMsg' => '充值金额在' . $deposit_min . '元与' . $deposit_max . '元之间,且为整数', 'data' => null);
         return $return;
     }
     $out_trade_no = self::build_order_no();
     $identity_id = $SinaBank->identity_id;
     //存钱罐类型用户
     $account_type = 'SAVING_POT';
     $payer_ip = Yii::$app->request->userIp;
     if ($payer_ip == '::1') {
         $payer_ip = '127.0.0.1';
     }
     //绑定支付 对应存钱罐类型用户
     $pay_type = 'binding_pay';
     $card_id = $SinaBank->card_id;
     $pay_method = $pay_type . '^' . $amount . '^' . $card_id;
     //
     $notify_url = '';
     //网银支付
     //        $pay_type = 'online_bank';
     //        $bank_code = $SinaBank->bank_code;
     //        $card_type = $SinaBank->card_type;
     //        $card_attribute = $SinaBank->card_attribute;
     //        $pay_method = $pay_type.'^'.$amount.'^'.$bank_code.','.$card_type.','.$card_attribute;
     $sina = new sina();
     $deposit = $sina->create_hosting_deposit($out_trade_no, $identity_id, $account_type, $amount, $payer_ip, $pay_method);
     if (!$deposit) {
         $return = array('errorNum' => '1', 'errorMsg' => '新浪接口错误', 'data' => null);
         return $return;
     }
     if ($deposit['response_code'] == 'APPLY_SUCCESS') {
         $ticket = $deposit['ticket'];
         $res = self::depositLog($uid, $identity_id, $out_trade_no, $account_type, $amount, $payer_ip, $pay_method, $ticket, SinaDeposit::STATUS_CONFIRM, '等待确认', '');
         if (!$res) {
             $return = array('errorNum' => '1', 'errorMsg' => '数据记录失败', 'data' => null);
             return $return;
         }
         $out_trade_no = $deposit['out_trade_no'];
         $data = array('ticket' => $ticket, 'out_trade_no' => $out_trade_no);
         $return = array('errorNum' => '0', 'errorMsg' => 'success', 'data' => $data);
         return $return;
     } else {
         $return = array('errorNum' => '1', 'errorMsg' => $deposit['response_message'], 'data' => null);
         return $return;
     }
 }