public static function doEncrypt($map) { $log = new Logger(); // 找到这个服务需要校验哪些字段 // if(count(CheckReqDataAndEncrypt::$keysarray)<=0){ // $log->logInfo ("loading mapping_keys.ini"); // CheckReqDataAndEncrypt::$keysarray=parse_ini_file("mapping_keys.ini"); // } // $keys = CheckReqDataAndEncrypt::$keysarray["Encrypt.Paramters"]; // if (empty($keys)) { // // die("Not configured to RSA encrypt sensitive fields"); // $log->logInfo ("Not configured to RSA encrypt sensitive fields"); // return $map; // } // 对每个key进行正则表达式校验 $keys = "card_id,valid_date,cvv2,pass_wd,identity_code,card_holder,recv_account,recv_user_name,identity_holder,identityCode,cardHolder,mer_cust_name,account_name,bank_account,endDate"; $chkKeys = array(); $chkKeys = explode(",", $keys); if (count($chkKeys) > 0) { foreach ($chkKeys as $key) { $value = $map->get($key); if (empty($value)) { continue; } $log->logInfo("The parameters of the request " . $key . " RSA encryption"); $value = iconv("UTF-8", "GBK", $value); $value = RSACryptUtil::encrypt($value); $map->put($key, $value); } } return $map; }
<meta name="description" content="" /> <link rel="stylesheet" href="../common/css/public_css_ussys.css" type="text/css"> <link type="text/css" rel="stylesheet" href="../common/syntaxHighlighter/css/SyntaxHighlighter.css"></link> <script language="javascript" src="../common/syntaxHighlighter/js/shCore.js"></script> <script language="javascript" src="../common/syntaxHighlighter/js/shBrushPhp.js"></script> </head> <?php require_once '../api/mer2Plat.php'; $data1 = $_REQUEST['data1']; $map = new HashMap(); $map->put("data1", $data1); $data2 = ""; $data2_error = ""; if ($_REQUEST['data1'] != "") { $data2 = urlencode(RSACryptUtil::encrypt(iconv("UTF-8", "GBK", $data1))); $data_error = "方法自动进行加密及URLencode编码"; } else { $data2 = $data1; $data_error = "加密数据为空,无任何值"; } ?> <body> <div id="HEADA"><?php include "./head.php"; ?> </div> <div id="MAINA"> <div class="mindexa"> <div class="mleft">
/** * V4.0对商户提交的参数进行校验,最终返回一个提交给平台的HashMap * @param HashMap $param 商户提交的参数 * @param HashMap $fields1 必填的参数 * @param HashMap $fields2 非必填参数 */ public static function getData($param, $fields1, $fields2) { //需要进行日期校验的参数 $field_date = new HashMap(); $field_date->put("settle_date", "settle_date"); $field_date->put("mer_date", "mer_date"); $field_date->put("payDate", "payDate"); //需要进行RAS加密的参数 $field_ras = new HashMap(); $field_ras->put("card_id", "card_id"); $field_ras->put("valid_date", "valid_date"); $field_ras->put("cvv2", "cvv2"); $field_ras->put("pass_wd", "pass_wd"); $field_ras->put("identity_code", "identity_code"); $field_ras->put("card_holder", "card_holder"); //付款请求添加RAS加密的参数 $field_ras->put("recv_account", "recv_account"); $field_ras->put("recv_user_name", "recv_user_name"); $field_ras->put("identity_holder", "identity_holder"); $data = new HashMap(); if (!$fields1->isEmpty() && $fields1->size() > 0) { $keys = $fields1->keys(); foreach ($keys as $key) { $value = StringUtil::trim($param->get($key)); $length = StringUtil::trim($fields1->get($key)); $flag = $field_date->containsKey($key); $flag1 = $field_ras->containsKey($key); if ($flag1) { if ("" == $value) { die($key . "为空或者长度超过限制"); } else { $value = iconv("UTF-8", "GBK", $value); $value = RSACryptUtil::encrypt($value); $data->put($key, $value); } } elseif ($flag) { if (!DateUtil::checkData($value)) { die($key . "为空或者长度不符合要求"); } else { $data->put($key, $value); } } elseif ("split_data" == $key) { if ("" == $value) { die($key . "为空或者长度超过限制"); } else { $data->put($key, $value); } } else { if ("" == $value || strlen($value) > $length) { die($key . "为空或者长度超过限制"); } else { $data->put($key, $value); } } } $keys1 = $fields2->keys(); foreach ($keys1 as $key) { if (!is_null($param->get($key))) { $value = StringUtil::trim($param->get($key)); $length = StringUtil::trim($fields2->get($key)); $flag1 = $field_ras->containsKey($key); if ($flag1) { if ("" != $value) { if (strlen($value) > $length) { die($key . "为空或者长度超过限制"); } else { $value = iconv("UTF-8", "GBK", $value); $value = RSACryptUtil::encrypt($value); $data->put($key, $value); } } } elseif ($field_date->containsKey($key)) { if (!DateUtil::checkData($value)) { die($key . "为空或者长度不符合要求"); } else { $data->put($key, $value); } } elseif ("split_data" == $key) { if ("" != $value) { $data->put($key, $value); } } else { if ("" != $value) { if (strlen($value) > $length) { die($key . "为空或者长度超过限制"); } else { $data->put($key, $value); } } } } } } else { die("获取请求参数字符串失败:传入参数为空!"); } return $data; }
$map = new HashMap(); $map->put("tradeNo", $tradeNo); $map->put("identityType", $identityType); $map->put("identity_Code", $identity_Code); $map->put("card_Holder", $card_Holder); $map->put("merCustId", $merCustId); $map->put("payType", $payType); $map->put("gateId", $gateId); $map->put("mobileId", $mobileId); $map->put("canModifyFlag", $canModifyFlag); $identityCode = ""; $cardHolder = ""; if ($_REQUEST['identity_Code'] != "" && $_REQUEST['card_Holder'] != "") { //对身份证号和姓名进行加密。该方法需要引用到php加密相关方法。 $identityCode = urlencode(RSACryptUtil::encrypt(iconv("UTF-8", "GBK", $identity_Code))); $cardHolder = urlencode(RSACryptUtil::encrypt(iconv("UTF-8", "GBK", $card_Holder))); } else { $identityCode = $identity_Code; $cardHolder = $card_Holder; } $wap_url = "https://m.soopay.net/q/xhtml/index.do?tradeNo=" . $tradeNo . "&identityType=" . $identityType . "&identityCode=" . $identityCode . "&cardHolder=" . $cardHolder . "&merCustId" . $merCustId . "&payType=" . $payType . "&gateId=" . $gateId . "&canModifyFlag=" . $canModifyFlag . "&mobileId=" . $mobileId; $html5_url = "https://m.soopay.net/q/html5/index.do?tradeNo=" . $tradeNo . "&identityType=" . $identityType . "&identityCode=" . $identityCode . "&cardHolder=" . $cardHolder . "&merCustId" . $merCustId . "&payType=" . $payType . "&gateId=" . $gateId . "&mobileId=" . $mobileId; ?> <body> <div id="HEADA"><?php include "./head.php"; ?> </div> <div id="MAINA"> <div class="mindexa">