Пример #1
0
 public function execute($md5Key, $desKey, $resp)
 {
     $log_ = new Log_();
     // 获取通知原始信息
     //$log_->log_result("异步通知原始数据:" . $resp);
     if (null == $resp) {
         return;
     }
     // 获取配置密钥
     $log_->log_result("desKey:" . $desKey);
     $log_->log_result("md5Key:" . $md5Key);
     // 解析XML
     $params = $this->xml_to_array(base64_decode($resp));
     $ownSign = $this->generateSign($params, $md5Key);
     $params_json = json_encode($params);
     $log_->log_result("解析XML得到对象:" . $params_json);
     $log_->log_result("根据传输数据生成的签名:" . $ownSign);
     if ($params['SIGN'][0] == $ownSign) {
         // 验签不对
         $log_->log_result("签名验证正确!");
     } else {
         $log_->log_result("签名验证错误!");
         return;
     }
     // 验签成功,业务处理
     // 对Data数据进行解密
     $des = new DesUtils();
     // (秘钥向量,混淆向量)
     $decryptArr = $des->decrypt($params['DATA'][0], $desKey);
     // 加密字符串
     $log_->log_result("对<DATA>进行解密得到的数据:" . $decryptArr);
     $params['data'] = $decryptArr;
     $log_->log_result("最终数据:" . json_encode($params));
     $log_->log_result("**********接收异步通知结束。**********\n\n");
     return 200;
 }
Пример #2
0
 private function config_jsdz()
 {
     $this->db = System::load_sys_class('model');
     $param = array("version" => "1.0", "token" => "", "merchantNum" => ConfigUtil::get_val_by_key('merchantNum'), "merchantRemark" => $this->config['shouname'], "tradeNum" => $this->config['code'], "tradeName" => $this->config['title'], "tradeDescription" => $this->config['title'], "tradeTime" => date('Y-m-d H:i:s', time()), "tradeAmount" => $this->config['money'] * 100, "currency" => "CNY", "notifyUrl" => $this->config['NotifyUrl'], "successCallbackUrl" => $this->config['ReturnUrl'], "failCallbackUrl" => $this->config['ReturnUrl']);
     $sign = SignUtil::sign($param);
     $param["merchantSign"] = $sign;
     if ($param["version"] == "1.0") {
         //敏感信息未加密
     } else {
         if ($param["version"] == "2.0") {
             //敏感信息加密
             //获取商户 DESkey
             //对敏感信息进行 DES加密
             $desUtils = new DesUtils();
             $key = ConfigUtil::get_val_by_key("desKey");
             $param["merchantRemark"] = $desUtils->encrypt($param["merchantRemark"], $key);
             $param["tradeNum"] = $desUtils->encrypt($param["tradeNum"], $key);
             $param["tradeName"] = $desUtils->encrypt($param["tradeName"], $key);
             $param["tradeDescription"] = $desUtils->encrypt($param["tradeDescription"], $key);
             $param["tradeTime"] = $desUtils->encrypt($param["tradeTime"], $key);
             $param["tradeAmount"] = $desUtils->encrypt($param["tradeAmount"], $key);
             $param["currency"] = $desUtils->encrypt($param["currency"], $key);
             $param["notifyUrl"] = $desUtils->encrypt($param["notifyUrl"], $key);
             $param["successCallbackUrl"] = $desUtils->encrypt($param["successCallbackUrl"], $key);
             $param["failCallbackUrl"] = $desUtils->encrypt($param["failCallbackUrl"], $key);
         }
     }
     $cbjpaySubmit = new CbjpaySubmit($param);
     $this->url = $cbjpaySubmit->buildRequestForm($param, 'POST', 'submit');
 }
Пример #3
0
 public function houtai()
 {
     $resp = $_REQUEST['resp'];
     if (null == $resp) {
         return;
     }
     $desKey = ConfigUtil::get_val_by_key("desKey");
     $md5Key = ConfigUtil::get_val_by_key("md5Key");
     $params = $this->xml_to_array(base64_decode($resp));
     $ownSign = $this->generateSign($params, $md5Key);
     $params_json = json_encode($params);
     if ($params['SIGN'][0] == $ownSign) {
         // 验签正确
         //echo "签名验证正确!" . "\n";
         $des = new DesUtils();
         // (秘钥向量,混淆向量)
         $decryptArr = $des->decrypt($params['DATA'][0], $desKey);
         // 加密字符串
         $params['data'] = $decryptArr;
         $respone = $this->xml_to_array($decryptArr);
         if ($respone['RETURN']['code'] == '0000' || $respone['RETURN']['DESC'] == '成功') {
             //数据库操作
             $v_oid = $respone['TRADE']['ID'];
             $this->db->Autocommit_start();
             $dingdaninfo = $this->db->GetOne("select * from `@#_member_addmoney_record` where `code` = '{$v_oid}' and `status` = '未付款' for update");
             if (!$dingdaninfo) {
                 return;
             }
             //没有该订单,失败
             $c_money = intval($dingdaninfo['money']);
             $j_num = intval($c_money / 100);
             $uid = $dingdaninfo['uid'];
             $time = time();
             $up_q1 = $this->db->Query("UPDATE `@#_member_addmoney_record` SET `pay_type` = '京东支付手机', `status` = '已付款' where `id` = '{$dingdaninfo['id']}' and `code` = '{$dingdaninfo['code']}'");
             $up_q2 = $this->db->Query("UPDATE `@#_member` SET `money` = `money` + {$c_money},`jiangnum`=`jiangnum`+{$j_num} where (`uid` = '{$uid}')");
             $up_q3 = $this->db->Query("INSERT INTO `@#_member_account` (`uid`, `type`, `pay`, `content`, `money`, `time`) VALUES ('{$uid}', '1', '账户', '京东支付手机', '{$c_money}', '{$time}')");
             if ($up_q1 && $up_q2 && $up_q3) {
                 $this->db->Autocommit_commit();
             } else {
                 $this->db->Autocommit_rollback();
                 return;
             }
             if (empty($dingdaninfo['scookies'])) {
                 //充值完成
                 return;
             }
             $scookies = unserialize($dingdaninfo['scookies']);
             $pay = System::load_app_class('pay', 'pay');
             $pay->scookie = $scookies;
             $ok = $pay->init($uid, $pay_type['pay_id'], 'go_record');
             //闪购商品
             if ($ok != 'ok') {
                 _setcookie('Cartlist', NULL);
                 //商品购买失败
                 return;
             }
             $check = $pay->go_pay(1);
             if ($check) {
                 $this->db->Query("UPDATE `@#_member_addmoney_record` SET `scookies` = '1' where `code` = '{$v_oid}' and `status` = '已付款'");
                 _setcookie('Cartlist', NULL);
                 return;
             } else {
                 return;
             }
         } else {
             return;
         }
     } else {
         //echo "签名验证错误!" . "\n";
         return;
     }
 }