/** * Tests HashMap->put() */ public function testPut() { //组织请求参数 // $map = new HashMap(); // $map->put("merId","9996"); // $map->put("orderId",rand(100000,999999)); // $map->put("merDate",date("Ymd")); // $map->put("amount","1"); // $map->put("version","3.0"); //后台直连下订单 // $map = new HashMap(); // $map->put("merId", "9996"); // $map->put("goodsId", "1001"); // $map->put("mobileId", "13720040275"); // $map->put("orderId", "467242"); // $map->put("merDate", "20100402"); // $map->put("amount", "1"); // $map->put("amtType", "01"); // $map->put("bankType", "3"); // $map->put("notyfuUrl", "http://pay.test.umpay.com/pay/test/testNotify.jsp"); // $map->put("merPriv", ""); // $map->put("expand", ""); // $map->put("version", "3.0"); //订单查询 $map = new HashMap(); $map->put("merId", "9996"); $map->put("goodsId", "100"); $map->put("orderId", "236798"); $map->put("merDate", "20100302"); $map->put("mobileId", "13910173623"); $map->put("version", "3.0"); //获取请求数据对象 // $reqData = MerToPlat::cancelByGet($map);//商户撤销 // $reqData = MerToPlat::directPayByGet($map);//后台直连下单 $reqData = MerToPlat::queryTransByGet($map); //订单 //获取请求URL $url = $reqData->getUrl(); // echo "\n" . $url; //请求平台取得平台响应结果 $html = file_get_contents($url); // echo "\n".$html; //解析平台响应数据 // $resData = PlatToMer::getCancelByHtml($html);//商户撤销职务 // $resData = PlatToMer::getDirectPayByHtml($html);//后台直连下单 $resData = PlatToMer::getQueryTransByHtml($html); $retCode = $resData->get("retCode"); //判断退费结果,retCode=0000为成功,其他为失败, if ($retCode == "0000") { echo "\n商户退费成功"; } else { echo "\n商户退失败,响应码:" . $retCode; } }
$gate_id = $data->get("gate_id"); $identity_type = $data->get("identity_type"); $identity_code = $data->get("identity_code"); $card_holder = $data->get("card_holder"); $last_four_cardid = $data->get("last_four_cardid"); $usr_busi_agreement_id = $data->get("usr_busi_agreement_id"); $usr_pay_agreement_id = $data->get("usr_pay_agreement_id"); $version = $data->get("version"); $sign = $data->get("sign"); //获取UMPAY平台请求商户的支付结果通知数据,并对请求数据进行验签,此时商户接收到的支付结果通知会存放在这里,商户可以根据此处的trade_state订单状态来更新订单 $resData = new HashMap(); try { //获取UMPAY平台请求商户的支付结果通知数据,并对请求数据进行验签 //如验证平台签名正确,即应响应UMPAY平台返回码为0000。【响应返回码代表通知是否成功,和通知的交易结果(支付失败、支付成功)无关】 //验签支付结果通知 如验签成功,则返回ret_code=0000 $reqData = PlatToMer::getNotifyRequestData($data); $resData->put("ret_code", "0000"); } catch (Exception $e) { //如果验签失败,则抛出异常,返回ret_code=1111 System . out . printf("验证签名发生异常" + $e); $resData->put("ret_code", "1111"); } //验签后的数据都组织在resData中。 //生成平台响应UMPAY平台数据,将该串放入META标签,以下几个参数为结果通知必备参数 //生成平台响应UMPAY平台数据,将该串放入META标签 $resData->put("mer_id", $data->get("mer_id")); $resData->put("sign_type", $data->get("sign_type")); $resData->put("mer_date", $data->get("mer_date")); $resData->put("order_id", $data->get("order_id")); $resData->put("version", $data->get("version")); $resData->put("ret_msg", "success");
<div class="mright"> <h3>后台直连响应解析结果</h3> <div class="mrmain"> <table> <tbody> <?php require_once '../api/plat2Mer.php'; $html = $_REQUEST['html']; $html = is_null($html) ? "" : trim($html); $dataType = $_REQUEST['dataType']; $data = new HashMap(); try { if ($dataType == "0") { $data = PlatToMer::getResDataByHtml($html); } else { $data = PlatToMer::getResDataByMeta($html); } } catch (Exception $e) { die("解析响应数据出错"); } if (!is_null($data) && $data->size() > 0) { $keys = $data->keys(); for ($i = 0; $i < count($keys); $i++) { echo "<tr>\n"; if ($keys[$i] == "sign") { echo '<th valign="top" nowrap>【sign】:</th>'; echo "\n"; echo '<td valign="top" nowrap><textarea cols="60" rows="3" name="html">' . $data->get($keys[$i]) . '</textarea></td>'; echo "\n"; } else { echo '<th valign="top" nowrap>【' . $keys[$i] . '】:</th>';
<html> <?php require_once "../api/plat2Mer.php"; require_once "../api/mer2Plat.php"; //获取联动平台支付结果通知数据(商户应采取循环遍历方式获取平台通知数据,不应采取固定编码的方式获取固定字段, //否则当平台通知数据发生变化时,容易出现接收数据验签不通过情况) $map = new HashMap(); foreach ($_REQUEST as $key => $value) { $map->put($key, $value); } //获取UMPAY平台请求商户的支付结果通知数据,并对请求数据进行验签,此时商户接收到的支付结果通知会存放在这里,商户可以根据此处的trade_state订单状态来更新订单。 $resData = new HashMap(); try { //如验证平台签名正确,即应响应UMPAY平台返回码为0000。【响应返回码代表通知是否成功,和通知的交易结果(支付失败、支付成功)无关】 //验签支付结果通知 如验签成功,则返回ret_code=0000 $reqData = PlatToMer::getNotifyRequestData($map); $resData->put("ret_code", "0000"); } catch (Exception $e) { //如果验签失败,则抛出异常,返回ret_code=1111 System . out . printf("验证签名发生异常" + $e); $resData->put("ret_code", "1111"); } //验签后的数据都组织在resData中。 //生成平台响应UMPAY平台数据,将该串放入META标签,以下几个参数为结果通知必备参数,实际响应参数请参照接口规范填写。 $resData->put("mer_id", $map->get("mer_id")); $resData->put("sign_type", $map->get("sign_type")); $resData->put("version", $map->get("version")); $resData->put("ret_msg", "success"); $data = MerToPlat::notifyResponseData($resData); ?>