/** * 用户托管充值行为 * @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; } }