/**
 * 登记债权转让
 * @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 '该债权转让已经被其它用户锁定';
    }
}