Example #1
0
function telPay($idCard, $telphone, $card, $bank, $name = '')
{
    global $_MooClass, $dbTablePre, $uid, $user_arr, $paymoney, $paymoney2, $payment_code, $activitytime1, $activitytime2, $urltestkey, $timestamp, $cardType, $memcached, $p3_Amt, $text;
    if (empty($uid)) {
        header("login.html");
    }
    set_time_limit(0);
    ini_set('soap.wsdl_cache_enabled', 0);
    //禁止wsdl缓存
    ini_set('soap.wsdl_cache_ttl', 0);
    $ws = "http://123.138.28.20:6699/Angelpay.asmx?wsdl";
    $client = new SoapClient($ws, array('proxy_host' => "123.138.28.20", 'proxy_port' => 6699));
    //=========================公共代码==========================
    //payment_new设置字段pay_type=3,电话支付方式
    $res_sid = $_MooClass['MooMySQL']->getOne("select sid from {$dbTablePre}members_search where uid='{$uid}'", true);
    $sid = $res_sid['sid'];
    $channel = MooGetGPC('channel', 'string', 'P');
    //$bank=MooGetGPC('bank', 'string','P');
    $pay_type = array('pay', 'pay_diamond', 'city_star', 'pay_add_money', 'pay_platinum', 'pay_add_money_other', 'pay_cs', 'pay_sliver', 'pay_midsummer', 'pay_dusk', "pay_rlsl");
    if (!in_array($channel, $pay_type)) {
        MooMessage('您选择的服务有误。', 'index.php?n=payment');
    }
    $sendedPayCount = $memcached->get('telPay' . $uid);
    if (empty($sendedPayCount)) {
        $sendedPayCount = 0;
    }
    if ($sendedPayCount >= 10) {
        MooMessage('您今天累计已经发过支付请求10次', 'index.php?n=service');
    }
    $p3_Amt = MooGetGPC('p3_Amt', 'int', 'P');
    $text = MooGetGPC('text', 'string', 'P');
    $merOrderNum = '';
    $pa_MP = '';
    $Pan = '';
    $sysTraceNum = date('His');
    $transDateTime = date('YmdHis');
    $transDateTimeStamp = strtotime($transDateTime);
    $time = time();
    $p2_Order = date('YmdHis', $time) . $uid;
    //$telbank=isset($tel_bankarr[$bank])?$tel_bankarr[$bank]:'';
    if ($channel == 'pay') {
        //note 高级会员
        $p3_Amt = $paymoney['vip'];
        $p5_Pid = '真爱一生网高级会员';
        // $p5_Pid=iconv("GB2312","UTF-8",'真爱一生网高级会员');
        $pa_MP = '1';
        //0钻石会员 1高级会员 2城市之星
        $sql = "insert into {$dbTablePre}payment_new (uid,pay_type,pay_bank,order_id,status,pay_money,pay_service,apply_sid,pay_time,apply_time,contact,sysTraceNum,apply_note,Pan) values('{$uid}','3','{$bank}','{$p2_Order}','0','{$p3_Amt}','1','{$sid}','{$time}','{$time}','{$user_arr['telphone']}','{$sysTraceNum}','{$p5_Pid}','{$card}')";
        $_MooClass['MooMySQL']->query($sql);
    } elseif ($channel == 'city_star') {
        $p3_Amt = $paymoney['citystar'];
        $p5_Pid = '真爱一生网城市之星';
        // $p5_Pid=iconv("GB2312","UTF-8",'真爱一生网城市之星');
        $pa_MP = '2';
        //0钻石会员 1高级会员 2城市之星
        $sql = "insert into {$dbTablePre}payment_new (uid,pay_type,pay_bank,order_id,status,pay_money,pay_service,apply_sid,pay_time,apply_time,contact,sysTraceNum,apply_note,Pan) values('{$uid}','3','{$bank}','{$p2_Order}','0','{$p3_Amt}','2','{$sid}','{$time}','{$time}','{$user_arr['telphone']}','{$sysTraceNum}','{$p5_Pid}','{$card}')";
        $_MooClass['MooMySQL']->query($sql);
    } elseif ($channel == 'pay_diamond') {
        //note 钻石会员
        $p3_Amt = $paymoney['diamond'];
        $p5_Pid = '真爱一生网钻石会员';
        // $p5_Pid=iconv("GB2312","UTF-8",'真爱一生网钻石会员');
        $pa_MP = '0';
        $sql = "insert into {$dbTablePre}payment_new (uid,pay_type,pay_bank,order_id,status,pay_money,pay_service,apply_sid,pay_time,apply_time,contact,sysTraceNum,apply_note,Pan) values('{$uid}','3','{$bank}','{$p2_Order}','0','{$p3_Amt}','0','{$sid}','{$time}','{$time}','{$user_arr['telphone']}','{$sysTraceNum}','{$p5_Pid}','{$card}')";
        $_MooClass['MooMySQL']->query($sql);
    } elseif ($channel == 'pay_add_money') {
        //note 补款高级升钻石
        $p3_Amt = $paymoney['add_money'];
        $p5_Pid = '高级会员升级钻石会员';
        // $p5_Pid=iconv("GB2312","UTF-8",'高级会员升级钻石会员');
        $pa_MP = '5';
        $sql = "insert into {$dbTablePre}payment_new (uid,pay_type,pay_bank,order_id,status,pay_money,pay_service,apply_sid,pay_time,apply_time,contact,sysTraceNum,apply_note,Pan) values('{$uid}','3','{$bank}','{$p2_Order}','0','{$p3_Amt}','5','{$sid}','{$time}','{$time}','{$user_arr['telphone']}','{$sysTraceNum}','{$p5_Pid}','{$card}')";
        $_MooClass['MooMySQL']->query($sql);
    } elseif ($channel == 'pay_platinum') {
        $p3_Amt = $paymoney['platinum'];
        $p5_Pid = '真爱一生网铂金会员';
        // $p5_Pid=iconv("GB2312","UTF-8",'真爱一生网铂金会员');
        $pa_MP = '99';
        $sql = "insert into {$dbTablePre}payment_new (uid,pay_type,pay_bank,order_id,status,pay_money,pay_service,apply_sid,pay_time,apply_time,contact,sysTraceNum,apply_note,Pan) values('{$uid}','3','{$bank}','{$p2_Order}','0','{$p3_Amt}','-1','{$sid}','{$time}','{$time}','{$user_arr['telphone']}','{$sysTraceNum}','{$p5_Pid}','{$card}')";
        $_MooClass['MooMySQL']->query($sql);
    } elseif ($channel == 'pay_add_money_other') {
        //note 补款预付
        $p3_Amt = $p3_Amt;
        $p5_Pid = '补款预付';
        $pa_MP = '6';
        $sql = "insert into {$dbTablePre}payment_other (uid,pay_type,pay_bank,order_id,status,pay_money,pay_service,apply_sid,apply_time,contact,note,sysTraceNum,apply_note,Pan) values('{$uid}','3','{$bank}','{$p2_Order}','0','{$p3_Amt}','6','{$sid}','{$time}','{$user_arr['telphone']}','{$text}','{$sysTraceNum}','{$p5_Pid}','{$card}')";
        $_MooClass['MooMySQL']->query($sql);
    }
    switch ($pa_MP) {
        case '0':
            $title = '钻石会员';
            $img = '<img src="module/payment/templates/default/images/pay03.gif" />';
            break;
        case '1':
            $title = '高级会员';
            $img = '<img src="module/payment/templates/default/images/pay02.gif" />';
            break;
        case '2':
            $title = '城市之星';
            $img = '<img src="module/payment/templates/default/images/pay01.gif" />';
            break;
        case '6':
            $title = '补款预付';
            $img = '<img src="module/payment/templates/default/images/pay_06.gif" /><span style="font-size:20px;position: relative;top: -6px; color:red; letter-spacing: -3px; font-family:楷体_GB2312; ">' . $text . '</span><img src="module/payment/templates/default/images/pay_06_a.gif" /><span style="font-size:20px;position: relative;top: -6px; color:red; font-family:楷体_GB2312;">' . $p3_Amt . '</span><img src="module/payment/templates/default/images/pay_06_b.gif" />';
            break;
        case '99':
            $title = '真爱一生网铂金会员';
            $img = '<img src="module/payment/templates/default/images/pay06.gif" /> ';
            break;
        case '5':
            $title = '高级会员升级钻石会员';
            $img = '<img src="module/payment/templates/default/images/pay05.gif" />';
            break;
    }
    //==================公共代码结束===================
    $orderType = substr('000000' . $pa_MP, -6);
    try {
        $key = '4B40A73D';
        $des = new DesComponent($key);
        $merchantID = $des->encrypt("990340148160000");
        //
        $parameters = array('merchantID' => $merchantID);
        $username = $client->Attendance($parameters);
        $res = get_object_vars($username);
        // print_r(get_object_vars($username))."<br/>";exit;
        // print_r($res);exit;
        $workKey = $des->decrypt(isset($res['Key']) ? $res['Key'] : '');
        $desC = new DesComponent($workKey);
        $Pan = $desC->encrypt($card);
        $Mobile = $desC->encrypt($telphone);
        $IDCard = $desC->encrypt($idCard);
        //$tranAmt=$desC->encrypt('000000000001');
        $tranAmt = substr('000000000000' . $p3_Amt * 100, -12);
        $tranAmt = $desC->encrypt($tranAmt);
        $addition = array('hzn', 'ahhf');
        $backAddition = array('N00002', '');
        //测试卡号:6225880296988018
        //$productInfo=iconv('GBK','UTF-8','升级真爱一生网钻石会员');
        //echo $Pan.'<br>'.$Mobile.'<br>'.$IDCard.'<br>'.$tranAmt.'<br>'.$transDateTime.'<br>'.$sysTraceNum.'<br>'.$p5_Pid.'<br>'.$pa_MP.'<br>';
        $param = array('Pan' => $Pan, 'Mobile' => $Mobile, 'productInfo' => $p5_Pid, 'tranAmt' => $tranAmt, 'tranDateTime' => $transDateTime, 'currencyType' => '156', 'merchantID' => '990340148160000', 'sysTraceNum' => $sysTraceNum, 'OrderType' => $orderType, 'IDCard' => $IDCard, 'addition' => $addition, 'backAddition' => $backAddition);
        $result = $client->PayTransNoResult($param);
    } catch (SoapFault $fault) {
        // echo "Fault! code:",$fault->faultcode,", string: ",$fault->faultstring;
        MooMessage('您的支付请求发送意外错误,请重新提交你的支付请求。', 'index.php?n=payment&h=govip');
    }
    $PayTransNoResultResult = $result->PayTransNoResultResult;
    //返回值
    //$merOrderNum=$result->merOrderNum;//订单号
    $tranDateTime = date('Y-m-d', $result->tranDateTime);
    //交易日期
    //echo $Serl_result;exit;
    //if(preg_match("/N00000/",$Serl_result)){
    if ($PayTransNoResultResult == 'N00000') {
        $memcached->set('telPay' . $uid, ++$sendedPayCount, 0, 28800);
        //设置当日提交支付请求数
        include MooTemplate('public/paytelReturn', 'module');
        //header("Location: index.php?n=payment&h=telPaying&merOrderNum=$merOrderNum&tranDateTime=$tranDateTime&bank_type=$bank_type");exit;
        //确保重定向后,后续代码不会被执行
    } else {
        get_errorInfo($uid, $telphone, $sid, $transDateTime, $pa_MP, $PayTransNoResultResult);
        MooMessage('您的支付请求失败,请重新提交您的支付请求。' . $PayTransNoResultResult, 'index.php?n=index&h=govip');
    }
}