Example #1
0
/**
 * 转帐
 * @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 '借款不存在';
    }
}