/** * 创建新帐户 * @param int $user_id * @param int $user_type 0:普通用户xd_user.id;1:担保用户xd_deal_agency.id * @param unknown_type $MerCode * @param unknown_type $cert_md5 * @param unknown_type $post_url * @return string */ function CreateNewAcct($user_id, $user_type, $MerCode, $cert_md5, $post_url) { $pWebUrl = SITE_DOMAIN . APP_ROOT . "/index.php?ctl=collocation&act=response&class_name=Ips&class_act=CreateNewAcct&from=" . $_REQUEST['from']; //web方式返回 $pS2SUrl = SITE_DOMAIN . APP_ROOT . "/index.php?ctl=collocation&act=notify&class_name=Ips&class_act=CreateNewAcct&from=" . $_REQUEST['from']; //s2s方式返回 $user = array(); if ($user_type == 0) { $user = $GLOBALS['db']->getRow("select * from " . DB_PREFIX . "user where id = " . $user_id); } else { $user = $GLOBALS['db']->getRow("select * from " . DB_PREFIX . "deal_agency where id = " . $user_id); } $data = array(); $data['user_type'] = $user_type; $data['user_id'] = $user_id; $data['argMerCode'] = $MerCode; // '“平台”账号 否 由IPS颁发的商户号 ', $data['pMerBillNo'] = $user_id . 'U' . get_gmtime(); //$user_id;//'pMerBillNo商户开户流水号 否 商户系统唯一丌重复 针对用户在开户中途中断(开户未完成,但关闭了IPS开 户界面)时,必须重新以相同的商户订单号发起再次开户 ', $data['pIdentType'] = 1; //'证件类型 否 1#身份证,默认:1', $data['pIdentNo'] = $user['idno']; //'证件号码 否 真实身份证 ', $data['pRealName'] = $user['real_name']; //'姓名 否 真实姓名(中文) ' $data['pMobileNo'] = $user['mobile']; //'手机号 否 用户发送短信 ' $data['pEmail'] = $user['email']; //'注册邮箱 否 用于登录账号,IPS系统内唯一丌能重复', $data['pSmDate'] = to_date(get_gmtime(), 'Ymd'); //'提交日期 否 时间格式“yyyyMMdd”,商户提交日期,。如:20140323 ', $GLOBALS['db']->autoExecute(DB_PREFIX . "ips_create_new_acct", $data, 'INSERT'); $id = $GLOBALS['db']->insert_id(); $strxml = CreateNewAcctXml($data, $pWebUrl, $pS2SUrl); //echo $strxml;exit; $Crypt3Des = new Crypt3Des(); //new 3des class $p3DesXmlPara = $Crypt3Des->DESEncrypt($strxml); //3des 加密 $str = $MerCode . $p3DesXmlPara . $cert_md5; //print_r($cert_md5); exit; $pSign = md5($str); $html = ' <form name="form1" id="form1" method="post" action="' . $post_url . 'CreateNewIpsAcct.aspx" target="_self"> <input type="hidden" name="argMerCode" value="' . $MerCode . '" /> <input type="hidden" name="arg3DesXmlPara" value="' . $p3DesXmlPara . '" /> <input type="hidden" name="argSign" value="' . $pSign . '" /> </form> <script language="javascript">document.form1.submit();</script>'; //echo $html; exit; return $html; }
/** * 解冻保证金 * @param int $deal_id 标的号 * @param int $pUnfreezenType 解冻类型 否 1#解冻借款方;2#解冻担保方 * @param float $money 解冻金额;默认为0时,则解冻所有未解冻的金额 * @param unknown_type $MerCode * @param unknown_type $cert_md5 * @param unknown_type $post_url * @return string */ function GuaranteeUnfreeze($deal_id, $pUnfreezenType, $money, $MerCode, $cert_md5, $ws_url) { $pWebUrl = SITE_DOMAIN . APP_ROOT . "/index.php?ctl=collocation&act=response&class_name=Ips&class_act=GuaranteeUnfreeze"; //web方式返回 $pS2SUrl = SITE_DOMAIN . APP_ROOT . "/index.php?ctl=collocation&act=notify&class_name=Ips&class_act=GuaranteeUnfreeze"; //s2s方式返回 $deal = $GLOBALS['db']->getRow("select * from " . DB_PREFIX . "deal where id = " . $deal_id); if ($pUnfreezenType == 1) { $user = $GLOBALS['db']->getRow("select * from " . DB_PREFIX . "user where id = " . intval($deal['user_id'])); } else { $user = $GLOBALS['db']->getRow("select * from " . DB_PREFIX . "user where id = " . intval($deal['agency_id'])); } $data = array(); $data['deal_id'] = $deal_id; $data['pMerCode'] = $MerCode; // '“平台”账号 否 由IPS颁发的商户号 ', $data['pMerBillNo'] = $deal_id . 'U' . get_gmtime(); //商户系统唯一丌重复 ', $data['pBidNo'] = $deal_id; //'标的号,商户系统唯一丌重复', $data['pUnfreezeDate'] = to_date(get_gmtime(), 'Ymd'); //'解冻日期格 式:yyyymmdd', $data['pUnfreezenType'] = $pUnfreezenType; //'解冻类型 否 1#解冻借款方;2#解冻担保方', $money = floatval($money); if ($money == 0) { if ($pUnfreezenType == 1) { $money = $deal['real_freezen_amt'] - $deal['un_real_freezen_amt']; //'解冻金额 金额单位,丌能为负,丌允许为0 累计解冻金额 <= 当时冻结时的保证金', } else { $money = $deal['guarantor_real_freezen_amt'] - $deal['un_guarantor_real_freezen_amt']; } } $data['pUnfreezeAmt'] = str_replace(',', '', number_format($money, 2)); $data['pAcctType'] = 1; //'解冻者账户类型 否 0#机构;1#个人', $data['pIdentNo'] = $user['idno']; //'解冻者证件号码 是/否 解冻者账户类型1时:真实身份证(个人),必填 解冻账户类型0时:为空处理 ', $data['pRealName'] = $user['real_name']; //'解冻者姓名 否 账户类型为1时,真实姓名(中文) 账户类型为0时,开户时在IPS登记的商户名称 ' $data['pIpsAcctNo'] = $user['ips_acct_no']; //'解冻者IPS账号 否 账户类型为1时,IPS个人托管账户号 账户类型为0时,由IPS颁发的商户号', $GLOBALS['db']->autoExecute(DB_PREFIX . "ips_guarantee_unfreeze", $data, 'INSERT'); $id = $GLOBALS['db']->insert_id(); $strxml = GuaranteeUnfreezeXml($data, $pWebUrl, $pS2SUrl); //echo $strxml;exit; $Crypt3Des = new Crypt3Des(); //new 3des class $p3DesXmlPara = $Crypt3Des->DESEncrypt($strxml); //3des 加密 $str = $MerCode . $p3DesXmlPara . $cert_md5; $pSign = md5($str); try { $url = $ws_url; $client = new SoapClient($url); $param = array('argMerCode' => $MerCode, 'arg3DesXmlPara' => $p3DesXmlPara, 'argSign' => $pSign); $arrResult = $client->GuaranteeUnfreeze($param); $resultStr = $arrResult->GuaranteeUnfreezeResult; require_once APP_ROOT_PATH . 'system/collocation/ips/ips.php'; require_once APP_ROOT_PATH . 'system/collocation/ips/xml.php'; $result = @XML_unserialize($resultStr); $result = $result['pReq']; wsnotify($result, 'GuaranteeUnfreeze', $cert_md5); $result['resultStr'] = $resultStr; return $result; } catch (SOAPFault $e) { print $e; //file_put_contents(PATH_LOG_FILE,PATH.$e."\r\n",FILE_APPEND); } }
/** * 登记债权人 * @param int $user_id 用户ID * @param int $deal_id 标的ID * @param float $pAuthAmt 投资金额 * @param int $MerCode 商户ID * @param string $cert_md5 * @param string $post_url * @return string */ function RegisterCreditor($user_id, $deal_id, $pAuthAmt, $MerCode, $cert_md5, $post_url) { $pWebUrl = SITE_DOMAIN . APP_ROOT . "/index.php?ctl=collocation&act=response&class_name=Ips&class_act=RegisterCreditor"; //web方式返回 $pS2SUrl = SITE_DOMAIN . APP_ROOT . "/index.php?ctl=collocation&act=notify&class_name=Ips&class_act=RegisterCreditor"; //s2s方式返回 $user = $GLOBALS['db']->getRow("select * from " . DB_PREFIX . "user where id = " . $user_id); $deal = $GLOBALS['db']->getRow("select * from " . DB_PREFIX . "deal where id = " . $deal_id); $data = array(); $data['user_id'] = $user_id; $data['deal_id'] = $deal_id; $data['pMerCode'] = $MerCode; // '“平台”账号 否 由IPS颁发的商户号 ', $data['pMerBillNo'] = $user_id . 'L' . $deal_id . 'No' . to_date(get_gmtime(), 'YmdHis'); //商户订单号 否 商户系统唯一不重复, $data['pMerDate'] = to_date(get_gmtime(), 'Ymd'); //'商户日期 否 格式:YYYYMMDD ', $data['pBidNo'] = $deal_id; // varchar(30) default NULL COMMENT '标的号 否 字母和数字,如a~z,A~Z,0~9', $data['pContractNo'] = $data['pMerBillNo']; //$user_id.'L'.$deal_id.'No'.to_date(get_gmtime(),'YmdH:i:s');//`` varchar(30) default NULL COMMENT '合同号 否 字母和数字,如a~z,A~Z,0~9', $data['pRegType'] = 1; //'登记方式 否 1:手劢投标 2:自劢投标', $data['pAuthNo'] = ''; // '授权号 是/否 字母和数字,如a~z,A~Z,0~9 登记方式为1时,为空 登记方式为2时,填写该投资人自劢投标签约时IPS向平 台接口返回的“pIpsAuthNo 授权号” (详见自劢投标签 约) ', $data['pAuthAmt'] = str_replace(',', '', number_format($pAuthAmt, 2)); // '债权面额 否 金额单位元,不能为负,不允许为0 ', $data['pTrdAmt'] = str_replace(',', '', number_format($pAuthAmt, 2)); //'交易金额 否 金额单位元,不能为负,不允许为0 债权面额等于交易金额 ', $data['pFee'] = 0; // '0.00' COMMENT '投资人手续费 否 金额单位元,不能为负,允许为0 ', $data['pAcctType'] = 1; // '账户类型 否 0#机构(暂未开放) ;1#个人 ', $data['pIdentNo'] = $user['idno']; // '证件号码 否 真实身份证(个人)/由IPS颁发的商户号', $data['pRealName'] = $user['real_name']; // '姓名 否 真实姓名(中文)', $data['pAccount'] = $user['ips_acct_no']; // '投资人账户 否 账户类型为1时,IPS托管账户号(个人) 账户类型为0时,由IPS颁发的商户号', $pUse = $GLOBALS['db']->getOne("select name from " . DB_PREFIX . "deal_loan_type where id = " . intval($deal['type_id'])); $data['pUse'] = $pUse; // '借款用途', $GLOBALS['db']->autoExecute(DB_PREFIX . "ips_register_creditor", $data, 'INSERT'); $id = $GLOBALS['db']->insert_id(); $strxml = RegisterCreditorXml($data, $pWebUrl, $pS2SUrl); //echo $strxml;exit; $Crypt3Des = new Crypt3Des(); //new 3des class $p3DesXmlPara = $Crypt3Des->DESEncrypt($strxml); //3des 加密 $str = $MerCode . $p3DesXmlPara . $cert_md5; //print_r($cert_md5); exit; $pSign = md5($str); $html = ' <form name="form1" id="form1" method="post" action="' . $post_url . 'registerCreditor.aspx" target="_self"> <input type="hidden" name="pMerCode" value="' . $MerCode . '" /> <input type="hidden" name="p3DesXmlPara" value="' . $p3DesXmlPara . '" /> <input type="hidden" name="pSign" value="' . $pSign . '" /> </form> <script language="javascript">document.form1.submit();</script>'; //echo $html; exit; return $html; }
/** * 还款 * @param deal $deal 标的数据 * @param array $repaylist 还款列表 * @param int $deal_repay_id 还款计划ID * @param int $MerCode 商户ID * @param string $cert_md5 * @param string $post_url * @return string */ function RepaymentNewTrade($deal, $repaylist, $deal_repay_id, $MerCode, $cert_md5, $post_url) { $pWebUrl = SITE_DOMAIN . APP_ROOT . "/index.php?ctl=collocation&act=response&class_name=Ips&class_act=RepaymentNewTrade&from=" . $_REQUEST['from']; //web方式返回 $pS2SUrl = SITE_DOMAIN . APP_ROOT . "/index.php?ctl=collocation&act=notify&class_name=Ips&class_act=RepaymentNewTrade&from=" . $_REQUEST['from']; //s2s方式返回 $user = $GLOBALS['db']->getRow("select * from " . DB_PREFIX . "user where id = " . $deal['user_id']); $deal_id = $deal['id']; $pOutAmt = 0; $pOutFee = 0; $data = array(); $data['deal_id'] = $deal_id; $data['deal_repay_id'] = $deal_repay_id; $data['pMerCode'] = $MerCode; //“平台”账 号 由IPS颁发的商户号', $data['pMerBillNo'] = $deal_id . 'RT' . get_gmtime(); //'商户订单号 否 商户系统唯一不重复', $data['pRepaymentDate'] = to_date(get_gmtime(), 'Ymd'); //还款日期 格式:YYYYMMDD, $data['pBidNo'] = $deal_id; // '标的号 否 原投资交易的标的号,字母和数字,如a~z,A~Z,0~9 ', $data['pRepayType'] = 1; //'还款类型,1#手动还款,2#自动还款', $data['pIpsAuthNo'] = ''; //授权号 是/否 当还款类型为自动还款时不为空,为手动还款时为空 $data['pOutAcctNo'] = $user['ips_acct_no']; //转出方IPS账号 否 借款人在IPS注册的资金托管账号 $data['pOutAmt'] = 0; //'转出金额 否 表示此次还款总金额。 转出金额=Sum(pInAmt) Sum(pInAmt)代表转入金额的合计,一个或多个 投资人时的还款金额的累加。 金额单位:元,不能为负,不允许为 0,保留 2 位小 数; 格式:12.00 ', $data['pOutFee'] = 0; //'转出方总手续费 否 表示此次借款人或担保人所承担的还款手续费,此手 续费由商户平台向用户收取。 金额单位:元,不能为负,允许为0,保留 2位小数; 格式:12.00 pOutFee = Sum(pOutInfoFee) Sum(pOutInfoFee)代表转出方手续费的合计 ', //print_r($repaylist);die(); $GLOBALS['db']->autoExecute(DB_PREFIX . "ips_repayment_new_trade", $data, 'INSERT'); $id = $GLOBALS['db']->insert_id(); if ($id > 0) { $result['data'] = $data; $details = array(); $result['id'] = $id; foreach ($repaylist as $k => $v) { $detail = array(); $detail['pid'] = $id; $detail['deal_load_repay_id'] = $v['id']; $detail['impose_money'] = round($v['impose_money'], 2); $detail['repay_manage_impose_money'] = $v['repay_manage_impose_money']; $detail['repay_status'] = intval($v['status']) - 1; $detail['true_repay_time'] = TIME_UTC; //$detail['self_money'] = round($v['self_money'],2); //$detail['manage_interest_money'] = $v['manage_interest_money']; //转出方手续费 ===》收取:借款者 的管理费 + 管理逾期罚息 $item['repay_manage_money'] + $item['repay_manage_impose_money'] //转入方手续费 ===》收取:投资者 的管理费 $item['manage_money'] //转入金额 ===》还款金额 + 逾期罚息 $item['month_repay_money'] + $item['impose_money'] $detail['pInFee'] = str_replace(',', '', number_format(round($v['manage_money'] + $v['manage_interest_money'], 2), 2)); //转入方手续费 否 表示此次还款债权人所承担的还款手续费,此手续费由商 户平台向用户收取。金额单位:元,不能为负,允许为0,保留2位小数; 格式:12.00 $detail['pOutInfoFee'] = str_replace(',', '', number_format(round($v['repay_manage_money'] + $v['repay_manage_impose_money'], 2), 2)); //转出方手续费 否 表示此次借款人或担保人所承担的还款明细手续费,此手 续费由商户平台收取。; $detail['pInAmt'] = str_replace(',', '', number_format(round($v['month_repay_money'] + $v['impose_money'], 2), 2)); //转入金额 否 格式:0.00 必须大于0 且大于转入方手续费 if ($v['t_user_id']) { //债权转让后,还款时,转给:承接者, 在债权转让后需要更新 fanwe_deal_load_repay.t_user_id 数据值 $pInAcctNo = $v['t_ips_acct_no']; $detail['pCreMerBillNo'] = $v['t_pMerBillNo']; //登记债权人时提 交的订单号 否 登记债权人时提交的订单号,见<登记债权人接口>请求 参数中的“pMerBillNo” ' } else { $pInAcctNo = $v['ips_acct_no']; $detail['pCreMerBillNo'] = $v['pMerBillNo']; //登记债权人时提 交的订单号 否 登记债权人时提交的订单号,见<登记债权人接口>请求 参数中的“pMerBillNo” ' } $detail['pInAcctNo'] = $pInAcctNo; //转出方 IPS 托管 账户号 否 账户类型为1时,IPS个人托管账户号 账户类型为0时,由 IPS颁发的商户号 转账类型,1:投资,此为转出方(投资人); 转账类型,2:代偿,此为转出方(担保方); 转账类型,3:代偿还款,此为转出方(借款人); 转账类型,4:债权转让,此为转出方(受让方); 转账类型,5:结算担保收益,此为转出方(借款人); ' $pOutAmt = $pOutAmt + $detail['pInAmt']; $pOutFee = $pOutFee + $detail['pOutInfoFee']; $GLOBALS['db']->autoExecute(DB_PREFIX . "ips_repayment_new_trade_detail", $detail, 'INSERT'); $details[] = $detail; } $data2['pOutAmt'] = str_replace(',', '', number_format($pOutAmt, 2)); //'转出金额 否 表示此次还款总金额。 转出金额=Sum(pInAmt) Sum(pInAmt)代表转入金额的合计,一个或多个 投资人时的还款金额的累加。 金额单位:元,不能为负,不允许为 0,保留 2 位小 数; 格式:12.00 ', $data2['pOutFee'] = str_replace(',', '', number_format($pOutFee, 2)); //'转出方总手续费 否 表示此次借款人或担保人所承担的还款手续费,此手 续费由商户平台向用户收取。 金额单位:元,不能为负,允许为0,保留 2位小数; 格式:12.00 pOutFee = Sum(pOutInfoFee) Sum(pOutInfoFee)代表转出方手续费的合计 ', $data['pOutAmt'] = $data2['pOutAmt']; $data['pOutFee'] = $data2['pOutFee']; $GLOBALS['db']->autoExecute(DB_PREFIX . "ips_repayment_new_trade", $data2, 'UPDATE', ' id = ' . $id); } //print_r($repaylist);die(); $pDetails = ''; foreach ($details as $k => $v) { $pDetails .= RepaymentNewTradeRowXml($v); } $strxml = RepaymentNewTradeXml($data, $pDetails, $pWebUrl, $pS2SUrl); //echo $strxml;exit; $Crypt3Des = new Crypt3Des(); //new 3des class $p3DesXmlPara = $Crypt3Des->DESEncrypt($strxml); //3des 加密 $str = $MerCode . $p3DesXmlPara . $cert_md5; //print_r($cert_md5); exit; $pSign = md5($str); $html = ' <form name="form1" id="form1" method="post" action="' . $post_url . 'RepaymentNewTrade.aspx" target="_self"> <input type="hidden" name="pMerCode" value="' . $MerCode . '" /> <input type="hidden" name="p3DesXmlPara" value="' . $p3DesXmlPara . '" /> <input type="hidden" name="pSign" value="' . $pSign . '" /> </form> <script language="javascript">document.form1.submit();</script>'; //echo $html; exit; $ips_log = array(); $ips_log['code'] = 'RepaymentNewTrade'; $ips_log['create_date'] = to_date(TIME_UTC, 'Y-m-d H:i:s'); $ips_log['strxml'] = $strxml; $ips_log['html'] = $html; $GLOBALS['db']->autoExecute(DB_PREFIX . "ips_log", $ips_log); return $html; }
/** * 标的登记 及 流标 * @param int $deal_id * @param int $pOperationType 标的操作类型,1:新增,2:结束 “新增”代表新增标的,“结束”代表标的正常还清、丌 需要再还款戒者标的流标等情况。标的“结束”后,投资 人投标冻结金额、担保方保证金、借款人保证金均自劢解 冻 * @param int $status; 0:新增; 1:标的正常结束; 2:流标结束 * @param string $status_msg 主要是status_msg=2时记录的,流标原因 * @param unknown_type $MerCode * @param unknown_type $cert_md5 * @param unknown_type $post_url * @return string */ function RegisterSubject($deal_id, $pOperationType, $status, $status_msg, $MerCode, $cert_md5, $post_url) { if ($pOperationType == 0) { $pOperationType = 1; } $pWebUrl = SITE_DOMAIN . APP_ROOT . "/index.php?ctl=collocation&act=response&class_name=Ips&class_act=RegisterSubject"; //web方式返回 $pS2SUrl = SITE_DOMAIN . APP_ROOT . "/index.php?ctl=collocation&act=notify&class_name=Ips&class_act=RegisterSubject"; //s2s方式返回 $deal = $GLOBALS['db']->getRow("select * from " . DB_PREFIX . "deal where id = " . $deal_id); $user = $GLOBALS['db']->getRow("select * from " . DB_PREFIX . "user where id = " . intval($deal['user_id'])); if ($pOperationType == 1) { $data = array(); $data['deal_id'] = $deal_id; $data['status'] = $status; //$status; 0:新增; 1:标的正常结束; 2:流标结束 $data['status_msg'] = $status_msg; //主要是status_msg=2时记录的,流标原因 $data['pMerCode'] = $MerCode; // '“平台”账号 否 由IPS颁发的商户号 ', if ($pOperationType == 1) { $data['pMerBillNo'] = $deal_id . 'D' . get_gmtime(); //'商户订单号 否 商户系统唯一不重复', $data['pRegDate'] = to_date($deal['start_time'], 'Ymd'); //'商户日期 否 格式:YYYYMMDD ', } else { if ($pOperationType == 2) { $data['pMerBillNo'] = $deal['mer_bill_no']; //'标的登记时提交的订单单号' $data['pRegDate'] = to_date($deal['start_time'], 'Ymd'); //'商户日期 否 格式:YYYYMMDD ', } } $data['pBidNo'] = $deal_id; //'标的号,商户系统唯一不重复 ', $data['pLendAmt'] = str_replace(',', '', number_format($deal['borrow_amount'], 2)); // '借款金额 否 金额单位,丌能为负,丌允许为0; 借款金额 <= 10000.00万 关于N(9,2)见4.1补充说明 ', $data['pGuaranteesAmt'] = str_replace(',', '', number_format($deal['guarantees_amt'], 2)); // '借款保证金,允许冻结的金额,金额单位,丌能为负,允 许为0; 借款保证金 <= 10000.00万 ', $data['pTrdLendRate'] = str_replace(',', '', number_format($deal['rate'] + 10, 2)); //'借款利率 否 金额单位,丌能为负,允许为0; 借款利率 < 48%,例如:45.12%传入 45.12 ', $data['pTrdCycleType'] = 3; // '借款周期类型 否 借款周期类型,1:天;3:月; 借款周期 <= 5年', // '借款周期值 否 借款周期值 借款周期 <= 5年。 如果借款周期类型为天,则借款周期值<= 1800(360 * 5);如果借款周期类型为月,则借款周期值<= 60(12 * 5) ', if ($deal['repay_time_type'] == 0) { $data['pTrdCycleValue'] = 1; } else { $data['pTrdCycleValue'] = $deal['repay_time']; } $pLendPurpose = $GLOBALS['db']->getOne("select name from " . DB_PREFIX . "deal_loan_type where id = " . intval($deal['type_id'])); $data['pLendPurpose'] = $pLendPurpose; // '借款用途', // '还款方式,1:等额本息,2:按月还息到期还本;3:等 额本金;99:其他; ', if ($deal['loantype'] == 0) { $data['pRepayMode'] = 1; //等额本息 } else { if ($deal['loantype'] == 1) { $data['pRepayMode'] = 2; //付息还本 } else { if ($deal['loantype'] == 2) { $data['pRepayMode'] = 99; //到期本息 } else { $data['pRepayMode'] = 99; } } } $data['pOperationType'] = $pOperationType; // '标的操作类型,1:新增,2:结束 “新增”代表新增标的,“结束”代表标的正常还清、丌 需要再还款戒者标的流标等情况。标的“结束”后,投资 人投标冻结金额、担保方保证金、借款人保证金均自劢解 冻。 ', $data['pLendFee'] = str_replace(',', '', number_format(floatval($deal['services_fee']) / 100 * $deal['borrow_amount'], 2)); // '借款人手续费 否 金额单位,丌能为负,允许为0 这里是平台向借款人收取的费用 ', $data['pAcctType'] = 1; // '账户类型 否 0#机构(暂未开放) ;1#个人 ', $data['pIdentNo'] = $user['idno']; // '证件号码 否 真实身份证(个人)/由IPS颁发的商户号 ', $data['pRealName'] = $user['real_name']; // '姓名 否 真实姓名(中文)', $data['pIpsAcctNo'] = $user['ips_acct_no']; // 'IPS账户号 否 账户类型为1时,IPS托管账户号(个人) 账户类型为0时,由IPS颁发的商户号 ', //print_r($data);exit; $GLOBALS['db']->autoExecute(DB_PREFIX . "ips_register_subject", $data, 'INSERT'); $id = $GLOBALS['db']->insert_id(); } else { $where = " pMerBillNo = '" . $deal['mer_bill_no'] . "'"; $ipsdata = $GLOBALS['db']->getRow("select * from " . DB_PREFIX . "ips_register_subject where " . $where); $id = intval($ipsdata['id']); $data = array(); $data['deal_id'] = $deal_id; $data['status'] = $status; //$status; 0:新增; 1:标的正常结束; 2:流标结束 $data['status_msg'] = $status_msg; //主要是status_msg=2时记录的,流标原因 $data['pMerCode'] = $MerCode; // '“平台”账号 否 由IPS颁发的商户号 ', $data['pMerBillNo'] = $ipsdata['pMerBillNo']; //'标的登记时提交的订单单号' $data['pBidNo'] = $deal_id; //'标的号,商户系统唯一不重复 ', $data['pRegDate'] = to_date(to_timespan($ipsdata['pRegDate'], 'Y-m-d'), 'Ymd'); //'商户日期 否 格式:YYYYMMDD ', $data['pLendAmt'] = str_replace(',', '', number_format($ipsdata['pLendAmt'], 2)); // '借款金额 否 金额单位,丌能为负,丌允许为0; 借款金额 <= 10000.00万 关于N(9,2)见4.1补充说明 ', $data['pGuaranteesAmt'] = str_replace(',', '', number_format($ipsdata['pGuaranteesAmt'], 2)); // '借款保证金,允许冻结的金额,金额单位,丌能为负,允 许为0; 借款保证金 <= 10000.00万 ', $data['pTrdLendRate'] = str_replace(',', '', number_format($ipsdata['pTrdLendRate'], 2)); //'借款利率 否 金额单位,丌能为负,允许为0; 借款利率 < 48%,例如:45.12%传入 45.12 ', $data['pTrdCycleType'] = $ipsdata['pTrdCycleType']; $data['pTrdCycleValue'] = $ipsdata['pTrdCycleValue']; // '借款周期值 否 借款周期值 借款周期 <= 5年。 如果借款周期类型为天,则借款周期值<= 1800(360 * 5);如果借款周期类型为月,则借款周期值<= 60(12 * 5) ', $data['pLendPurpose'] = $ipsdata['pLendPurpose']; // '借款用途', $data['pRepayMode'] = $ipsdata['pRepayMode']; $data['pOperationType'] = $pOperationType; // '标的操作类型,1:新增,2:结束 “新增”代表新增标的,“结束”代表标的正常还清、丌 需要再还款戒者标的流标等情况。标的“结束”后,投资 人投标冻结金额、担保方保证金、借款人保证金均自劢解 冻。 ', $data['pLendFee'] = $ipsdata['pLendFee']; // '借款人手续费 否 金额单位,丌能为负,允许为0 这里是平台向借款人收取的费用 ', $data['pAcctType'] = $ipsdata['pAcctType']; // '账户类型 否 0#机构(暂未开放) ;1#个人 ', $data['pIdentNo'] = $ipsdata['pIdentNo']; // '证件号码 否 真实身份证(个人)/由IPS颁发的商户号 ', $data['pRealName'] = $ipsdata['pRealName']; // '姓名 否 真实姓名(中文)', $data['pIpsAcctNo'] = $ipsdata['pIpsAcctNo']; // 'IPS账户号 否 账户类型为1时,IPS托管账户号(个人) 账户类型为0时,由IPS颁发的商户号 ', //print_r($data);exit; $GLOBALS['db']->autoExecute(DB_PREFIX . "ips_register_subject", $data, 'UPDATE', "id =" . $id); } if ($id > 0) { $data['pMemo1'] = $id; $subject = array(); $subject['pMemo1'] = $id; $GLOBALS['db']->autoExecute(DB_PREFIX . "ips_register_subject", $subject, 'UPDATE', "id =" . $id); //print_r($data);exit(); $strxml = RegisterSubjectXml($data, $pWebUrl, $pS2SUrl); //echo $strxml;exit; $Crypt3Des = new Crypt3Des(); //new 3des class $p3DesXmlPara = $Crypt3Des->DESEncrypt($strxml); //3des 加密 $str = $MerCode . $p3DesXmlPara . $cert_md5; //print_r($cert_md5); exit; $pSign = md5($str); $html = ' <form name="form1" id="form1" method="post" action="' . $post_url . 'registerSubject.aspx" target="_self"> <input type="hidden" name="pMerCode" value="' . $MerCode . '" /> <input type="hidden" name="p3DesXmlPara" value="' . $p3DesXmlPara . '" /> <input type="hidden" name="pSign" value="' . $pSign . '" /> </form> <script language="javascript">document.form1.submit();</script>'; //echo $html; exit; return $html; } else { return '数据插入错误'; } }
/** * 用户提现 * @param int $user_id * @param int $user_type 0:普通用户fanwe_user.id;1:担保用户fanwe_deal_agency.id * @param float $pTrdAmt 提现金额 * @param unknown_type $MerCode * @param unknown_type $cert_md5 * @param unknown_type $post_url * @return string */ function DoDwTrade($user_id, $user_type, $pTrdAmt, $MerCode, $cert_md5, $post_url) { $pWebUrl = SITE_DOMAIN . APP_ROOT . "/index.php?ctl=collocation&act=response&class_name=Ips&class_act=DoDwTrade&from=" . $_REQUEST['from']; //web方式返回 $pS2SUrl = SITE_DOMAIN . APP_ROOT . "/index.php?ctl=collocation&act=notify&class_name=Ips&class_act=DoDwTrade&from=" . $_REQUEST['from']; //s2s方式返回 $user = array(); if ($user_type == 0) { $user = $GLOBALS['db']->getRow("select * from " . DB_PREFIX . "user where id = " . $user_id); } else { $user = $GLOBALS['db']->getRow("select * from " . DB_PREFIX . "user where id = " . $user_id); } $data = array(); $data['user_type'] = $user_type; $data['user_id'] = $user_id; $data['pMerCode'] = $MerCode; // '“平台”账号 否 由IPS颁发的商户号 ', $data['pMerBillNo'] = $user_id . 'DW' . TIME_UTC; // '商户提现订单号商户系统唯一不重复', $data['pAcctType'] = 1; // '账户类型 否 0#机构(暂未开放) ;1#个人', $data['pOutType'] = 1; // '提现模式 否 1#普通提现;2#定向提现<暂不开放> ', $data['pBidNo'] = ''; // '标号 是/否 提现模式为2时,此字段生效 内容是投标时的标号', $data['pContractNo'] = ''; // '合同号 是/否 提现模式为2时,此字段生效 内容是投标时的合同号', $data['pDwTo'] = ''; // '提现去向 是/否 提现模式为2时,此字段生效 上送IPS托管账户号(个人/商户号)', $data['pIdentNo'] = $user['idno']; // '证件号码 否 真实身份证(个人)/由IPS颁发的商户号(商户)', $data['pRealName'] = $user['real_name']; // '姓名 否 真实姓名(中文) ', $data['pIpsAcctNo'] = $user['ips_acct_no']; // 'IPS账户号 否 账户类型为1时,IPS个人托管账户号 账户类型为0时,由IPS颁发的商户号', $data['pDwDate'] = to_date(TIME_UTC, 'Ymd'); // '提现日期 否 格式:YYYYMMDD ', $data['pTrdAmt'] = str_replace(',', '', number_format($pTrdAmt, 2)); //'提现金额 否 金额单位,不能为负,不允许为0 ', $fee = 0; //获取手续费配置表 $fee_config = load_auto_cache("user_carry_config"); //如果手续费大于最大的配置那么取这个手续费 if ($data['pTrdAmt'] >= $fee_config[count($fee_config) - 1]['max_price']) { $fee = $fee_config[count($fee_config) - 1]['fee']; } else { foreach ($fee_config as $k => $v) { if ($data['pTrdAmt'] >= $v['min_price'] && $data['pTrdAmt'] <= $v['max_price']) { $fee = floatval($v['fee']); } } } $data['pMerFee'] = str_replace(',', '', number_format($fee, 2)); // '平台手续费 否 金额单位,不能为负,允许为0 这里是平台向用户收取的费用 ', $data['pIpsFeeType'] = 2; // 'IPS手续费收取方 这里是IPS收取的费用 1:平台支付 2:提现方支付', $GLOBALS['db']->autoExecute(DB_PREFIX . "ips_do_dw_trade", $data, 'INSERT'); $id = $GLOBALS['db']->insert_id(); $strxml = DoDwTradeXml($data, $pWebUrl, $pS2SUrl); //echo $strxml;exit; $Crypt3Des = new Crypt3Des(); //new 3des class $p3DesXmlPara = $Crypt3Des->DESEncrypt($strxml); //3des 加密 $str = $MerCode . $p3DesXmlPara . $cert_md5; //print_r($cert_md5); exit; $pSign = md5($str); $html = ' <form name="form1" id="form1" method="post" action="' . $post_url . 'doDwTrade.aspx" target="_self"> <input type="hidden" name="pMerCode" value="' . $MerCode . '" /> <input type="hidden" name="p3DesXmlPara" value="' . $p3DesXmlPara . '" /> <input type="hidden" name="pSign" value="' . $pSign . '" /> </form> <script language="javascript">document.form1.submit();</script>'; //echo $html; exit; $ips_log = array(); $ips_log['code'] = 'DoDwTrade'; $ips_log['create_date'] = to_date(TIME_UTC, 'Y-m-d H:i:s'); $ips_log['strxml'] = $strxml; $ips_log['html'] = $html; $GLOBALS['db']->autoExecute(DB_PREFIX . "ips_log", $ips_log); return $html; }
/** * 登记担保方 * @param int $deal_id * @param unknown_type $MerCode * @param unknown_type $cert_md5 * @param unknown_type $post_url * @return string */ function RegisterGuarantor($deal_id, $MerCode, $cert_md5, $post_url) { $pWebUrl = SITE_DOMAIN . APP_ROOT . "/index.php?ctl=collocation&act=response&class_name=Ips&class_act=RegisterGuarantor"; //web方式返回 $pS2SUrl = SITE_DOMAIN . APP_ROOT . "/index.php?ctl=collocation&act=notify&class_name=Ips&class_act=RegisterGuarantor"; //s2s方式返回 $deal = $GLOBALS['db']->getRow("select * from " . DB_PREFIX . "deal where id = " . $deal_id); $agency_id = intval($deal['agency_id']); $agency = $GLOBALS['db']->getRow("select * from " . DB_PREFIX . "deal_agency where id = " . $agency_id); $data = array(); $data['deal_id'] = $deal_id; $data['agency_id'] = $agency_id; $data['pMerCode'] = $MerCode; // '“平台”账号 否 由IPS颁发的商户号 ', $data['pMerBillNo'] = $deal_id . 'G' . get_gmtime(); //$user_id;//'pMerBillNo商户开户流水号 否 商户系统唯一丌重复 针对用户在开户中途中断(开户未完成,但关闭了IPS开 户界面)时,必须重新以相同的商户订单号发起再次开户 ', $data['pMerDate'] = to_date(get_gmtime(), 'Ymd'); //商户日期 否 格式:yyyyMMdd, $data['pBidNo'] = $deal_id; //'标的号 否 字母和数字,如a~z,A~Z,0~9', $pAcctType = intval($agency['acct_type']); $data['pAcctType'] = $pAcctType; //担保方类型 否 0#机构;1#个人, if ($pAcctType == 0) { $data['pFromIdentNo'] = $agency['ips_mer_code']; //担保方证件号码 否 针对担保方类型为1时:真实身份证(个人) 针对担保方类型为0时:由IPS颁发的商户号 $data['pAccountName'] = $agency['real_name']; //担保方账户姓名 否 针对担保方类型为1时:担保方账户真实姓名 针对担保方类型为0时:在IPS开户时登记的商户名称 $data['pAccount'] = $agency['ips_mer_code']; //担保方账户 否 担保方类型为1时,IPS托管账户号(个人) 担保方类型为0时,由IPS颁发的商户号 } else { $data['pFromIdentNo'] = $agency['idno']; //担保方证件号码 否 针对担保方类型为1时:真实身份证(个人) 针对担保方类型为0时:由IPS颁发的商户号 $data['pAccountName'] = $agency['real_name']; //担保方账户姓名 否 针对担保方类型为1时:担保方账户真实姓名 针对担保方类型为0时:在IPS开户时登记的商户名称 $data['pAccount'] = $agency['ips_acct_no']; //担保方账户 否 担保方类型为1时,IPS托管账户号(个人) 担保方类型为0时,由IPS颁发的商户号 } //`pAmount` decimal(11,2) default '0.00' COMMENT '担保金额 否 金额单位元,不能为负,不允许为0 担保人针对该合同标的承诺的最高赔付金额 ', //`pProFitAmt` decimal(11,2) default NULL COMMENT '担保收益 否 金额单位元,不能为负,允许为0 ', $data['pAmount'] = str_replace(',', '', number_format($deal['guarantor_amt'], 2)); //'担保金额 否 金额单位元,不能为负,不允许为0 担保人针对该合同标的承诺的最高赔付金额 ' $data['pMarginAmt'] = str_replace(',', '', number_format($deal['guarantor_margin_amt'], 2)); //'担保保证金 否 金额单位元,不能为负,允许为0 担保人针对该合同标的被冻结的金额', $data['pProFitAmt'] = str_replace(',', '', number_format($deal['guarantor_pro_fit_amt'], 2)); //'担保收益 否 金额单位元,不能为负,允许为0 ', $GLOBALS['db']->autoExecute(DB_PREFIX . "ips_register_guarantor", $data, 'INSERT'); $id = $GLOBALS['db']->insert_id(); $strxml = RegisterGuarantorXml($data, $pWebUrl, $pS2SUrl); //echo $strxml;exit; $Crypt3Des = new Crypt3Des(); //new 3des class $p3DesXmlPara = $Crypt3Des->DESEncrypt($strxml); //3des 加密 $str = $MerCode . $p3DesXmlPara . $cert_md5; //print_r($cert_md5); exit; $pSign = md5($str); $html = ' <form name="form1" id="form1" method="post" action="' . $post_url . 'registerGuarantor.aspx" target="_self"> <input type="hidden" name="pMerCode" value="' . $MerCode . '" /> <input type="hidden" name="p3DesXmlPara" value="' . $p3DesXmlPara . '" /> <input type="hidden" name="pSign" value="' . $pSign . '" /> </form> <script language="javascript">document.form1.submit();</script>'; //echo $html; exit; $ips_log = array(); $ips_log['code'] = 'RegisterGuarantor'; $ips_log['create_date'] = to_date(TIME_UTC, 'Y-m-d H:i:s'); $ips_log['strxml'] = $strxml; $ips_log['html'] = $html; $GLOBALS['db']->autoExecute(DB_PREFIX . "ips_log", $ips_log); return $html; }
/** * 登记债权转让 * @param int $transfer_id 转让id * @param int $t_user_id 受让用户ID * @param int $MerCode 商户ID * @param string $cert_md5 * @param string $post_url * @return string */ function RegisterCretansfer($transfer_id, $t_user_id, $MerCode, $cert_md5, $post_url) { $transfer = $GLOBALS['db']->getRow("select * from " . DB_PREFIX . "deal_load_transfer where id = " . $transfer_id); $deal_id = intval($transfer['deal_id']); $user_id = intval($transfer['user_id']); $user = $GLOBALS['db']->getRow("select * from " . DB_PREFIX . "user where id = " . $user_id); $tuser = $GLOBALS['db']->getRow("select * from " . DB_PREFIX . "user where id = " . $t_user_id); $user_load_transfer_fee = $GLOBALS['db']->getOne("SELECT user_load_transfer_fee FROM " . DB_PREFIX . "deal WHERE id=" . $deal_id); if (empty($user['ips_acct_no']) || empty($tuser['ips_acct_no'])) { return '有一方未申请 ips 帐户'; } $pWebUrl = SITE_DOMAIN . APP_ROOT . "/index.php?ctl=collocation&act=response&class_name=Ips&class_act=RegisterCretansfer&from=" . $_REQUEST['from']; //web方式返回 $pS2SUrl = SITE_DOMAIN . APP_ROOT . "/index.php?ctl=collocation&act=notify&class_name=Ips&class_act=RegisterCretansfer&from=" . $_REQUEST['from']; //s2s方式返回 $sql = "update " . DB_PREFIX . "deal_load_transfer set lock_user_id = " . $t_user_id . ", lock_time =" . TIME_UTC; $sql .= " where ips_status = 0 and t_user_id = 0 and status = 1 and (lock_user_id = 0 || lock_user_id =" . $t_user_id . " || (lock_user_id > 0 && lock_time < " . (TIME_UTC - 600) . "))"; //echo $sql; exit; $GLOBALS['db']->query($sql); if ($GLOBALS['db']->affected_rows()) { $data = array(); $data['transfer_id'] = $transfer_id; $data['t_user_id'] = $t_user_id; $data['pMerCode'] = $MerCode; //“平台”账 号 由IPS颁发的商户号', $data['pMerBillNo'] = $transfer_id . 'T' . TIME_UTC; //'商户订单号 否 商户系统唯一不重复', $data['pMerDate'] = to_date(TIME_UTC, 'Ymd'); //'商户日期 否 格式:YYYYMMDD ', $data['pBidNo'] = $deal_id; // '标的号 否 原投资交易的标的号,字母和数字,如a~z,A~Z,0~9 ', $pContractNo = $GLOBALS['db']->getOne("select pContractNo from " . DB_PREFIX . "deal_load where id = " . intval($transfer['load_id'])); $data['pContractNo'] = $pContractNo; // '合同号 否 原投资交易的合同号, 字母和数字,如a~z,A~Z,0~9 ', $data['pFromAccountType'] = 1; // '出让方账户类型 否 0:机构(暂不支持) 1:个人 ', $data['pFromName'] = $user['real_name']; // '出让方账户姓名 否 出让方账户真实姓名', $data['pFromAccount'] = $user['ips_acct_no']; // '出让方账户 否 出让方账户类型为1时,IPS托管账户号(个人) 出让方账户类型为0时,由IPS颁发的商户号 ', $data['pFromIdentType'] = 1; //'出让方证件类型 否 1#身份证,默认:1 ', $data['pFromIdentNo'] = $user['idno']; // '出让方证件号码 否 真实身份证(个人)/由IPS颁发的商户号(机构)', $data['pToAccountType'] = 1; // '受让方账户类型 否 1:个人 0:机构(暂不支持)', $data['pToAccountName'] = $tuser['real_name']; // '受让方账户姓名 否 受让方账户真实姓名 ', $data['pToAccount'] = $tuser['ips_acct_no']; // '受让方账户 否 受让方账户类型为1时,IPS托管账户号(个人)', $data['pToIdentType'] = 1; // '受让方证件类型 否 1#身份证,默讣:1 ', $data['pToIdentNo'] = $tuser['idno']; // '受让方证件号码 否 真实身份证(个人)/由IPS颁发的商户号(机构)', $pCreMerBillNo = $GLOBALS['db']->getOne("select pMerBillNo from " . DB_PREFIX . "deal_load where id = " . intval($transfer['load_id'])); $data['pCreMerBillNo'] = $pCreMerBillNo; // '登记债权人时提 交的订单号 否 字母和数字,如a~z,A~Z,0~9 登记债权人时提交的订单号,见<登记债权人接口>请求 参数中的“pMerBillNo” ', $data['pCretAmt'] = str_replace(',', '', number_format($transfer['load_money'], 2)); // '债权面额 否 金额单位元,不能为负,不允许为0 ', $data['pPayAmt'] = str_replace(',', '', number_format($transfer['transfer_amount'], 2)); // '支付金额 否 金额单位元,不能为负,不允许为0 债权面额(1-30%)<=支付金额<= 债权面额(1+30%) ', $data['pFromFee'] = str_replace(',', '', number_format($transfer['transfer_amount'] * $user_load_transfer_fee * 0.01, 2)); // '出让方手续费 否 金额单位元,不能为负,允许为0 ', $data['pToFee'] = '0.00'; // '受让方手续费 否 金额单位元,不能为负,允许为0 ', $data['pCretType'] = 1; // '转让类型 否 1:全部转让 2:部分转让', $GLOBALS['db']->autoExecute(DB_PREFIX . "ips_register_cretansfer", $data, 'INSERT'); $id = $GLOBALS['db']->insert_id(); $strxml = RegisterCretansferXml($data, $pWebUrl, $pS2SUrl); //echo $strxml;exit; $Crypt3Des = new Crypt3Des(); //new 3des class $p3DesXmlPara = $Crypt3Des->DESEncrypt($strxml); //3des 加密 $str = $MerCode . $p3DesXmlPara . $cert_md5; //print_r($cert_md5); exit; $pSign = md5($str); $html = ' <form name="form1" id="form1" method="post" action="' . $post_url . 'registerCretansfer.aspx" target="_self"> <input type="hidden" name="pMerCode" value="' . $MerCode . '" /> <input type="hidden" name="p3DesXmlPara" value="' . $p3DesXmlPara . '" /> <input type="hidden" name="pSign" value="' . $pSign . '" /> </form> <script language="javascript">document.form1.submit();</script>'; //echo $html; exit; $ips_log = array(); $ips_log['code'] = 'RegisterCretansfer'; $ips_log['create_date'] = to_date(TIME_UTC, 'Y-m-d H:i:s'); $ips_log['strxml'] = $strxml; $ips_log['html'] = $html; $GLOBALS['db']->autoExecute(DB_PREFIX . "ips_log", $ips_log); return $html; } else { return '该债权转让已经被其它用户锁定'; } }
/** * 充值 * @param int $user_id * @param int $user_type 0:普通用户fanwe_user.id;1:担保用户fanwe_deal_agency.id * @param float $pTrdAmt 充值金额 * @param string $pTrdBnkCode 银行编号 * @param unknown_type $MerCode * @param unknown_type $cert_md5 * @param unknown_type $post_url * @return string */ function DoDpTrade($user_id, $user_type, $pTrdAmt, $pTrdBnkCode, $MerCode, $cert_md5, $post_url) { $pWebUrl = SITE_DOMAIN . APP_ROOT . "/index.php?ctl=collocation&act=response&class_name=Ips&class_act=DoDpTrade"; //web方式返回 $pS2SUrl = SITE_DOMAIN . APP_ROOT . "/index.php?ctl=collocation&act=notify&class_name=Ips&class_act=DoDpTrade"; //s2s方式返回 $user = array(); if ($user_type == 0) { $user = $GLOBALS['db']->getRow("select * from " . DB_PREFIX . "user where id = " . $user_id); } else { $user = $GLOBALS['db']->getRow("select * from " . DB_PREFIX . "deal_agency where id = " . $user_id); } //print_r($data); exit; $data = array(); $data['user_type'] = $user_type; $data['user_id'] = $user_id; $data['pMerCode'] = $MerCode; // '“平台”账号 否 由IPS颁发的商户号 ', $data['pMerBillNo'] = $user_id . 'DP' . get_gmtime(); //商户充值订单号 否 商户系统唯一不重复, $data['pAcctType'] = 1; //账户类型 否 固定值为 1,表示为类型为IPS个人账户, $data['pIdentNo'] = $user['idno']; //'证件号码 否 真实身份证(个人)/IPS颁发的商户号(商户) 本期考虑个人,商户充值预留,下期增加 $data['pRealName'] = $user['real_name']; //'姓名 否 真实姓名(中文) pIpsAcctNo 30 IPS托管账户号 否 账户类型为1时,IPS托管账户号(个人) $data['pIpsAcctNo'] = $user['ips_acct_no']; //IPS托管账户号 账户类型为1时,IPS托管账户号(个人) $data['pTrdDate'] = to_date(get_gmtime(), 'Ymd'); //充值日期 否 格式:YYYYMMDD $data['pTrdAmt'] = str_replace(',', '', number_format($pTrdAmt, 2)); //充值金额 否 金额单位:元,丌能为负,丌允许为0,保留2位小数; 格式:12.00 $data['pChannelType'] = 1; //充值渠道种类 否 1#网银充值;2#代扣充值 $data['pTrdBnkCode'] = $pTrdBnkCode; //充值银行 是/否 网银充值的银行列表由IPS提供,对应充值银行的CODE, 具体使用见接口 <<商户端获取银行列表查询(WS)>>, 获取pBankList内容项中“银行卡编号”字段; 代扣充值这里传空; ', $data['pMerFee'] = '0.00'; //`pMerFee` decimal(11,2) default '0.00' COMMENT '平台手续费 否 这里是平台向用户收取的费用 金额单位:元,丌能为负,允许为0,保留2位小数; 格式:12.00 ', $data['pIpsFeeType'] = 2; //'谁付IPS手续费 否 这里是IPS向平台收取的费用 1:平台支付 2:用户支付 ', $GLOBALS['db']->autoExecute(DB_PREFIX . "ips_do_dp_trade", $data, 'INSERT'); $id = $GLOBALS['db']->insert_id(); $strxml = DoDpTradeXml($data, $pWebUrl, $pS2SUrl); //echo $strxml;exit; $Crypt3Des = new Crypt3Des(); //new 3des class $p3DesXmlPara = $Crypt3Des->DESEncrypt($strxml); //3des 加密 $str = $MerCode . $p3DesXmlPara . $cert_md5; //print_r($cert_md5); exit; $pSign = md5($str); $html = ' <form name="form1" id="form1" method="post" action="' . $post_url . 'doDpTrade.aspx" target="_self"> <input type="hidden" name="pMerCode" value="' . $MerCode . '" /> <input type="hidden" name="p3DesXmlPara" value="' . $p3DesXmlPara . '" /> <input type="hidden" name="pSign" value="' . $pSign . '" /> </form> <script language="javascript">document.form1.submit();</script>'; //echo $html; exit; return $html; }
/** * 转帐 * @param int $pTransferType;//转账类型 否 转账类型 1:投资(报文提交关系,转出方:转入方=N:1), 2:代偿(报文提交关系,转出方:转入方=1:N), 3:代偿还款(报文提交关系,转出方:转入方=1:1), 4:债权转让(报文提交关系,转出方:转入方=1:1), 5:结算担保收益(报文提交关系,转出方:转入方=1: 1) * @param int $deal_id 标的id * @param string $ref_data 逗号分割的, 1:投资,填还款日期(int) ; 2代偿,3代偿还款列表; 4债权转让: id; 5结算担保收益:金额,如果为0,则取fanwe_deal.guarantor_pro_fit_amt ; * @param int $MerCode 商户ID * @param string $cert_md5 * @param string $post_url * @return string */ function Transfer($pTransferType, $deal_id, $ref_data, $MerCode, $cert_md5, $ws_url) { $pWebUrl = SITE_DOMAIN . APP_ROOT . "/index.php?ctl=collocation&act=response&class_name=Ips&class_act=Transfer&from=" . $_REQUEST['from']; //web方式返回 $pS2SUrl = SITE_DOMAIN . APP_ROOT . "/index.php?ctl=collocation&act=notify&class_name=Ips&class_act=Transfer&from=" . $_REQUEST['from']; //s2s方式返回 //deal_status 0待等材料,1进行中,2满标,3流标,4还款中,5已还清 require_once APP_ROOT_PATH . "app/Lib/deal_func.php"; $deal = get_deal($deal_id); $user = $GLOBALS['db']->getRow("select * from " . DB_PREFIX . "user where id = " . $deal['user_id']); if ($deal) { $result = array('id' => 0, 'msg' => ''); //echo $pTransferType; exit; if ($pTransferType == 1) { //投资 $result = Transfer_1($pTransferType, $deal, $ref_data, $user, $MerCode); } else { if ($pTransferType == 4) { //债权转让 $result = Transfer_4($pTransferType, $deal, $ref_data, $MerCode); } else { if ($pTransferType == 5) { //担保收益 $result = Transfer_5($pTransferType, $deal, $ref_data, $MerCode); } } } $id = intval($result['id']); if ($id > 0) { $result['data']['pMemo1'] = $id; $subject = array(); $subject['pMemo1'] = $id; $GLOBALS['db']->autoExecute(DB_PREFIX . "ips_transfer", $subject, 'UPDATE', "id =" . $id); $pDetails = ''; foreach ($result['details'] as $k => $v) { $pDetails .= TransferRowXml($v); } $strxml = TransferXml($result['data'], $pDetails, $pS2SUrl); //echo $strxml;exit; $Crypt3Des = new Crypt3Des(); //new 3des class $p3DesXmlPara = $Crypt3Des->DESEncrypt($strxml); //3des 加密 $str = $MerCode . $p3DesXmlPara . $cert_md5; $pSign = md5($str); $ips_log = array(); $ips_log['code'] = 'Transfer_' . $pTransferType; $ips_log['create_date'] = to_date(TIME_UTC, 'Y-m-d H:i:s'); $ips_log['strxml'] = $strxml; $ips_log['html'] = 'p3DesXmlPara:' . $p3DesXmlPara . ';pSign:' . $pSign; $GLOBALS['db']->autoExecute(DB_PREFIX . "ips_log", $ips_log); try { $url = $ws_url; $client = new SoapClient($url); $param = array('pMerCode' => $MerCode, 'p3DesXmlPara' => $p3DesXmlPara, 'pSign' => $pSign); $arrResult = $client->Transfer($param); $resultStr = $arrResult->TransferResult; require_once APP_ROOT_PATH . 'system/collocation/ips/xml.php'; $result = @XML_unserialize($resultStr); $result = $result['pReq']; require_once APP_ROOT_PATH . 'system/collocation/ips/ips.php'; wsnotify($result, 'Transfer', $cert_md5); $result['resultStr'] = $resultStr; $result['strxml'] = $strxml; return $result; } catch (SOAPFault $e) { return print_r($e, 1); //file_put_contents(PATH_LOG_FILE,PATH.$e."\r\n",FILE_APPEND); } } else { return $result['msg']; } } else { return '借款不存在'; } }