<?php
/**
 * @desc    自动对账
 * @author  renjie
 * @date    20130314
 */
class AutoReceiveController extends DooController {
    private $cashlimit = 100; // 充值金额奖励底限
    private $perlimit = 0.05; // 奖励百分比
    private $salelimit = 0.2; // 销售人员提成

    function autoreceive() { // 自动对账
        //****************************************  //MD5密钥要跟订单提交页相同，如Send.asp里的 key = "test" ,修改""号内 test 为您的密钥
                                                    //如果您还没有设置MD5密钥请登陆我们为您提供商户后台，地址：https://merchant3.chinabank.com.cn/
            $key='smartcost@)!@onlinepaychinabank'; //登陆后在上面的导航栏里可能找到“B2C”，在二级导航栏里有“MD5密钥设置”
                                                    //建议您设置一个16位以上的密钥或更高，密钥最多64位，但设置16位已经足够了
        //****************************************
        $v_oid     =trim($_POST['v_oid']);      
        $v_pmode   =trim($_POST['v_pmode']);      
        $v_pstatus =trim($_POST['v_pstatus']);      
        $v_pstring =trim($_POST['v_pstring']);      
        $v_amount  =trim($_POST['v_amount']);     
        $v_moneytype  =trim($_POST['v_moneytype']);     
        $remark1   =trim($_POST['remark1']);     
        $remark2   =trim($_POST['remark2']);     
        $v_md5str  =trim($_POST['v_md5str']);     
        /**
         * 重新计算md5的值
         */
        $md5string=strtoupper(md5($v_oid.$v_pstatus.$v_amount.$v_moneytype.$key)); //拼凑加密串
        if ($v_md5str==$md5string) {
           if ($v_pstatus == '20') {
                $pay = Doo::loadModel('pay', TRUE);
                $Arrayorder = $pay->getRowsBySN($v_oid);
                if(empty($Arrayorder)){ // 无效订单
                    echo 'error';
                    die();
                }
                if ($Arrayorder['money'] == $v_amount) { // 充值金额是否与订单相同
                    if ($Arrayorder['status'] == 'succ') { // 已手动触发订单完成状态
                        echo 'ok';
                        die();
                    }
                    if ($Arrayorder['status'] == 'unpay') { // 未完成订单状态
                            $newpay = Doo::loadModel('pay', TRUE);
                            $newpay->id = $Arrayorder['id'];
                            $newpay->paytime = time();
                            $newpay->status = 'succ';
                            $succvalue = $newpay->update();
                            if ($succvalue) {
                                if(!empty($remark2)&&($v_amount>=$this->cashlimit)){
                                    $salerGet = floor($v_amount*$this->salelimit); // 计算销售人员获得的提成
                                    $v_amount += floor($v_amount*$this->perlimit); // 计算输入优惠码的最终充值金额
                                    Doo::loadModel('m/sale');
                                    $saleObj = new Sale();
                                    $saleObj->total = new DooDbExpression('total+' . $salerGet);
                                    $saleObj->update(array('where'=>'promocode=?','param'=>array($remark2)));
                                }
                                Doo::loadModel('users');
                                $users = new Users();
                                $moneyValue = $users->updateBank($Arrayorder['userid'], $v_amount);
                                if ($moneyValue) {
                                    echo "ok";
                                    die();
                                }
                            }
                    }
                }else{ // 订单金额与实际充值不等
                    echo 'error';
                    die();
                }
            }
            if ($v_pstatus == '30') { // 网银在线返回错误码
                echo 'error';
                die();
            }
        }else{ // 哈希串不匹配
            echo 'error';
        }
    }

}

?>
