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; }
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'); }
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; } }