/** * 登记债权转让 * @param int $order_id 订单id * @param int $t_user_id 受让用户ID * @param int $MerCode 商户ID * @param string $cert_md5 * @param string $post_url * @return string */ function RegisterCretansfer($order_id, $t_user_id, $platformNo, $post_url, $sys = 'pc') { $order = $GLOBALS['db']->getRow("select * from " . DB_PREFIX . "deal_order where id = " . $order_id); $deal_id = intval($order['deal_id']); $user_id = intval($order['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); $deal = $GLOBALS['db']->getRow("select * 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=Yeepay&class_act=RegisterCretansfer&from=" . $_REQUEST['from']; //web方式返回 $pS2SUrl = SITE_DOMAIN . APP_ROOT . "/index.php?ctl=collocation&act=notify&class_name=Yeepay&class_act=RegisterCretansfer&from=" . $_REQUEST['from']; //s2s方式返回 // $sql = "update ".DB_PREFIX."deal_order set lock_user_id = ".$t_user_id.", lock_time =".NOW_TIME; // $sql .= " where is_tg = 1 and order_status = 0 "; // $sql .= " and id = ".$order_id; // // //echo $sql; exit; // $GLOBALS['db']->query($sql); if (true) { $yeepay_log = array(); $yeepay_log['code'] = 'toCpTransaction'; $yeepay_log['create_date'] = to_date(NOW_TIME, 'Y-m-d H:i:s'); $GLOBALS['db']->autoExecute(DB_PREFIX . "yeepay_log", $yeepay_log); $requestNo = $GLOBALS['db']->insert_id(); $data = array(); $data['requestNo'] = $requestNo; //请求流水号 $data['platformUserNo'] = $user_id; // $data['platformNo'] = $platformNo; // 商户编号 $data['transfer_id'] = $order_id; //用户类型 0普通用户 1 企业用户;现在只支持 普通用户 if (true) { $data['userType'] = 'MEMBER'; //出款人用户类型 } else { $data['userType'] = 'MERCHANT'; //出款人用户类型MEMBER 个人会员 商户 } //TENDER 投标 REPAYMENT 还款 CREDIT_ASSIGNMENT 债权转让 TRANSFER 转账 COMMISSION 分润,仅在资金转账明细中使用 $data['bizType'] = 'CREDIT_ASSIGNMENT'; //根据业务的不同,需要传入不同的值,见【业务类型】。并参考下面的详细信息 //投标 扩展字段 $data['tenderOrderNo'] = $order_id; //项目编号 $data['creditorPlatformUserNo'] = $user_id; //债权转让人 $data['originalRequestNo'] = $order_id; //需要转让的投资记录流水号 //成交服务费 $deal_fee = $deal['pay_radio'] ? $deal['pay_radio'] : 0.1; $fee = round($order['deal_price'] * $deal_fee, 2); //分红 $share_fee = $order['share_fee']; //实际可到账金额 $targetAmount = $order['total_price'] - $fee - $share_fee; $data["tenderAmount"] = $fee + $targetAmount + $share_fee; $data["tenderName"] = $deal["name"]; $data["borrowerPlatformUserNo"] = $user_id; $data["tenderDescription"] = $deal["name"]; //$data["money"] = $deal["name"]; $details = "<details><detail><targetUserType>" . $data['userType'] . "</targetUserType><targetPlatformUserNo>" . $t_user_id . "</targetPlatformUserNo><amount>" . $targetAmount . "</amount><bizType>CREDIT_ASSIGNMENT</bizType></detail>" . "<detail><targetUserType>MERCHANT</targetUserType><targetPlatformUserNo>{$platformNo}</targetPlatformUserNo><amount>{$fee}</amount><bizType>COMMISSION</bizType></detail>"; if ($share_fee > 0) { $details .= "<detail><targetUserType>" . $data['userType'] . "</targetUserType><targetPlatformUserNo>" . $user_id . "</targetPlatformUserNo><amount>{$share_fee}</amount><bizType>COMMISSION</bizType></detail>"; } $details .= "</details>"; $extend = '<extend>' . '<property name="tenderOrderNo" value="' . $data['tenderOrderNo'] . '" />' . '<property name="creditorPlatformUserNo" value="' . $data['creditorPlatformUserNo'] . '" />' . '<property name="originalRequestNo" value="' . $data['originalRequestNo'] . '" />' . '</extend>'; $data['details'] = $details; //资金明细记录 $data['extend'] = $extend; //业务扩展属性,根据业务类型的不同,需要传入不同的参数 $data['create_time'] = NOW_TIME; $GLOBALS['db']->autoExecute(DB_PREFIX . "yeepay_cp_transaction", $data, 'INSERT'); $id = $GLOBALS['db']->insert_id(); $strxml = RegisterCretansferXml($data, $details, $extend, $pWebUrl, $pS2SUrl); $pSign = cfca($strxml); if ($sys == 'pc') { $act = 'bha'; } elseif ($sys == 'mobile') { $act = 'bhawireless'; } $html = '<html><head><meta http-equiv="content-type" content="text/html; charset=UTF-8" /></head><body> <form name="form1" id="form1" method="post" action="' . $post_url . '/' . $act . '/toCpTransaction" target="_self"> <input type="hidden" name="sign" value="' . $pSign . '" /> <textarea name="req" cols="100" rows="5" style="display:none">' . $strxml . '</textarea> <input type="hidden" value="提交"></input> <div style="width:100%;text-align:center;padding:50px 0;"><img src="' . APP_ROOT . '/app/Tpl/' . app_conf("TEMPLATE") . '/images/loading.gif" />页面正在跳转,请稍后...</div> </form> </body></html> <script language="javascript">document.form1.submit();</script>'; //echo $html; exit; $yeepay_log = array(); $yeepay_log['strxml'] = $strxml; $yeepay_log['html'] = $html; $GLOBALS['db']->autoExecute(DB_PREFIX . "yeepay_log", $yeepay_log, 'UPDATE', 'id=' . $requestNo); return $html; } else { return '该债权转让已经被其它用户锁定'; } }
/** * 登记债权转让 * @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, $platformNo, $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=Yeepay&class_act=RegisterCretansfer&from=" . $_REQUEST['from']; //web方式返回 $pS2SUrl = SITE_DOMAIN . APP_ROOT . "/index.php?ctl=collocation&act=notify&class_name=Yeepay&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) . "))"; $sql .= " and id = " . $transfer_id; //echo $sql; exit; $GLOBALS['db']->query($sql); if ($GLOBALS['db']->affected_rows()) { $yeepay_log = array(); $yeepay_log['code'] = 'toCpTransaction'; $yeepay_log['create_date'] = to_date(TIME_UTC, 'Y-m-d H:i:s'); $GLOBALS['db']->autoExecute(DB_PREFIX . "yeepay_log", $yeepay_log); $requestNo = $GLOBALS['db']->insert_id(); $data = array(); $data['requestNo'] = $requestNo; //请求流水号 $data['platformUserNo'] = $tuser['id']; // $data['platformNo'] = $platformNo; // 商户编号 $data['transfer_id'] = $transfer_id; //用户类型 0普通用户 1 企业用户;现在只支持 普通用户 if ($tuser['user_type'] == 0) { $data['userType'] = 'MEMBER'; //出款人用户类型 } else { $data['userType'] = 'MERCHANT'; //出款人用户类型MEMBER 个人会员 商户 } //TENDER 投标 REPAYMENT 还款 CREDIT_ASSIGNMENT 债权转让 TRANSFER 转账 COMMISSION 分润,仅在资金转账明细中使用 $data['bizType'] = 'CREDIT_ASSIGNMENT'; //根据业务的不同,需要传入不同的值,见【业务类型】。并参考下面的详细信息 //投标 扩展字段 $data['tenderOrderNo'] = $deal_id; //项目编号 $data['creditorPlatformUserNo'] = $user_id; //债权转让人 $transfer_requestNo = $GLOBALS['db']->getOne("select pMerBillNo from " . DB_PREFIX . "deal_load where id = " . $transfer["load_id"]); $data['originalRequestNo'] = $transfer_requestNo; //需要转让的投资记录流水号 //成交服务费 $fee = round($transfer['transfer_amount'] * $user_load_transfer_fee / 100, 2); //实际可到账金额 $targetAmount = $transfer['transfer_amount'] - $fee; $data["tenderAmount"] = $fee + $targetAmount; $deal = $GLOBALS['db']->getRow("select * from " . DB_PREFIX . "deal where id = " . $deal_id); $data["tenderName"] = $deal["sub_name"]; $data["borrowerPlatformUserNo"] = $deal["user_id"]; $data["tenderDescription"] = $deal["name"]; //$data["money"] = $deal["name"]; $details = "<details><detail><targetUserType>" . $data['userType'] . "</targetUserType><targetPlatformUserNo>" . $user_id . "</targetPlatformUserNo><amount>" . $targetAmount . "</amount><bizType>CREDIT_ASSIGNMENT</bizType></detail>" . "<detail><targetUserType>MERCHANT</targetUserType><targetPlatformUserNo>{$platformNo}</targetPlatformUserNo><amount>{$fee}</amount><bizType>COMMISSION</bizType></detail></details>"; $extend = '<extend>' . '<property name="tenderOrderNo" value="' . $data['tenderOrderNo'] . '" />' . '<property name="creditorPlatformUserNo" value="' . $data['creditorPlatformUserNo'] . '" />' . '<property name="originalRequestNo" value="' . $data['originalRequestNo'] . '" />' . '</extend>'; $data['details'] = $details; //资金明细记录 $data['extend'] = $extend; //业务扩展属性,根据业务类型的不同,需要传入不同的参数 $data['create_time'] = TIME_UTC; $GLOBALS['db']->autoExecute(DB_PREFIX . "yeepay_cp_transaction", $data, 'INSERT'); $id = $GLOBALS['db']->insert_id(); $strxml = RegisterCretansferXml($data, $details, $extend, $pWebUrl, $pS2SUrl); $pSign = "signdata"; $html = '<html><head><meta http-equiv="content-type" content="text/html; charset=UTF-8" /></head><body> <form name="form1" id="form1" method="post" action="' . $post_url . '/bha/toCpTransaction" target="_self"> <input type="text" name="sign" value="' . $pSign . '" /> <textarea name="req" cols="100" rows="5">' . $strxml . '</textarea> <input type="submit" value="提交"></input> </form> </body></html> <script language="javascript">document.form1.submit();</script>'; //echo $html; exit; $yeepay_log = array(); $yeepay_log['strxml'] = $strxml; $yeepay_log['html'] = $html; $GLOBALS['db']->autoExecute(DB_PREFIX . "yeepay_log", $yeepay_log, 'UPDATE', 'id=' . $requestNo); return $html; } else { return '该债权转让已经被其它用户锁定'; } }
/** * 登记债权转让 * @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 '该债权转让已经被其它用户锁定'; } }