123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384 |
- <?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';
- }
- }
- }
- ?>
|