public function execute() { $param = array(); $param["currency"] = $_POST["currency"]; $param["ip"] = $_POST["ip"]; $param["merchantNum"] = $_POST["merchantNum"]; $param["merchantRemark"] = $_POST["merchantRemark"]; $param["notifyUrl"] = $_POST["notifyUrl"]; $param["successCallbackUrl"] = $_POST["successCallbackUrl"]; $param["tradeAmount"] = $_POST["tradeAmount"]; $param["tradeDescription"] = $_POST["tradeDescription"]; $param["tradeName"] = $_POST["tradeName"]; $param["tradeNum"] = $_POST["tradeNum"]; $param["tradeTime"] = $_POST["tradeTime"]; $param["version"] = $_POST["version"]; $param["token"] = $_POST["token"]; $sign = "asdf"; //zhangbo //$sign = SignUtil::signWithoutToHex($param); $param["merchantSign"] = $sign; $_SESSION['tradeAmount'] = $_POST["tradeAmount"]; $_SESSION['tradeName'] = $_POST["tradeName"]; $_SESSION['tradeInfo'] = $param; $serverUrl = ConfigUtil::get_val_by_key("serverPayUrl"); $url = $serverUrl . "?version=" . urlencode($param["version"]) . "&token=" . urlencode($param["token"]) . "&merchantNum=" . urlencode($param["merchantNum"]) . "&merchantRemark=" . urlencode($param["merchantRemark"]) . "&tradeNum=" . urlencode($param["tradeNum"]) . "&tradeName=" . urlencode($param["tradeName"]) . "&tradeDescription=" . urlencode($param["tradeDescription"]) . "&tradeTime=" . urlencode($param["tradeTime"]) . "&tradeAmount=" . urlencode($param["tradeAmount"]) . "¤cy=" . urlencode($param["currency"]) . "¬ifyUrl=" . urlencode($param["notifyUrl"]) . "&successCallbackUrl=" . urlencode($param["successCallbackUrl"]) . "&forPayLayerUrl=" . urlencode($_POST["forPayLayerUrl"]) . "&ip=" . urlencode($_POST["ip"]) . "&merchantSign=" . urlencode($sign); header("location:" . $url); }
public function prepareParms() { $tradeJsonData = "{\"tradeNum\": \"" . $_POST["tradeNum"] . "\",\"oTradeNum\": \"" . $_POST["oTradeNum"] . "\",\"tradeAmount\":\"" . $_POST["tradeAmount"] . "\",\"tradeCurrency\": \"" . $_POST["tradeCurrency"] . "\",\"tradeDate\": \"" . $_POST["tradeDate"] . "\",\"tradeTime\": \"" . $_POST["tradeTime"] . "\",\"tradeNotice\": \"" . $_POST["tradeNotice"] . "\",\"tradeNote\": \"" . $_POST["tradeNote"] . "\"}"; $tradeData = TDESUtil::encrypt2HexStr(base64_decode(ConfigUtil::get_val_by_key("desKey")), $tradeJsonData); $sha256SourceSignString = hash("sha256", $tradeData); $sign = RSAUtils::encryptByPrivateKey($sha256SourceSignString); $params = array(); $params["version"] = $_POST["version"]; $params["merchantNum"] = $_POST["merchantNum"]; $params["merchantSign"] = $sign; $params["data"] = $tradeData; return $params; }
public function prepareParms() { $tradeJsonData = "{\"tradeNum\": \"" . $_POST["tradeNum"] . "\"}"; // 1.对交易信息进行3DES加密 $tradeData = TDESUtil::encrypt2HexStr(base64_decode(ConfigUtil::get_val_by_key("desKey")), $tradeJsonData); // 2.对3DES加密的数据进行签名 $sha256SourceSignString = hash("sha256", $tradeData); $sign = RSAUtils::encryptByPrivateKey($sha256SourceSignString); $params = array(); $params["version"] = $_POST["version"]; $params["merchantNum"] = $_POST["merchantNum"]; $params["merchantSign"] = $sign; $params["data"] = $tradeData; return $params; }
<li class="form-item form-item-border clearfix"> <label>接口版本</label> <div class="form-field"> <input type="text" class="" name="version" value="1.0" autocomplete="off" minlength="15" maxlength="18" data-callback="input.status"/> <span class="clear-btn J-clear-btn">×</span> </div> </li> <li class="form-item form-item-border clearfix"> <label>商户号</label> <div class="form-field"> <input type="text" class="" name="merchantNum" value="<?php echo ConfigUtil::get_val_by_key('merchantNum'); ?> " autocomplete="off" placeholder="请输入商户号" minlength="15" maxlength="50" data-callback="input.status"/> <span class="clear-btn J-clear-btn">×</span> </div> </li> <li class="form-item form-item-border clearfix"> <label>交易号</label> <div class="form-field"> <input type="text" class="" name="tradeNum" value="" autocomplete="off" placeholder="请输入交易号" minlength="15" maxlength="50" data-callback="input.status"/> <span class="clear-btn J-clear-btn">×</span> </div>
} // 验签成功,业务处理 // 对Data数据进行解密 $des = new DesUtils(); // (秘钥向量,混淆向量) $decryptArr = $des->decrypt($params['DATA'][0], $desKey); // 加密字符串 echo "对<DATA>进行解密得到的数据:" . $decryptArr . "\n"; $params['data'] = $decryptArr; echo "最终数据:" . json_encode($params) . '\\n'; echo "**********接收异步通知结束。**********"; return; } } $MD5_KEY = ConfigUtil::get_val_by_key("md5Key"); $DES_KEY = ConfigUtil::get_val_by_key("desKey"); $w = new WebAsynNotificationCtrl(); $w->execute($MD5_KEY, $DES_KEY, $_POST("resp")); ?>
<meta name="viewport" content="width=device-width,initial-scale=1.0, user-scalable=no"/> <link rel="stylesheet" href="../static/css/base.css"/> </head> <body> <div class="nav"> <span class="arrow goback"><em></em></span> <h1>交易信息</h1> </div> <div class="nav-wrap"></div> <div class="grid"> <form method="post" action="<?php echo ConfigUtil::get_val_by_key('serverPayUrl'); ?> " id="payForm"> <!--交易信息 start--> <?php if ($_SESSION['tradeInfo'] != null) { ?> <input type="hidden" name="version" value="<?php echo $_SESSION['tradeInfo']['version']; ?> "/> <input type="hidden" name="token" value="<?php echo $_SESSION['tradeInfo']['token']; ?> "/> <input type="hidden" name="merchantSign" value="<?php
<input type="text" class="" name="successCallbackUrl" value="<?php echo ConfigUtil::get_val_by_key('successCallbackUrl'); ?> " autocomplete="off" placeholder="请输入交易成功通知地址" minlength="15" maxlength="200" data-callback="input.status"/> <span class="clear-btn J-clear-btn">×</span> </div> </li> <li class="form-item form-item-border clearfix"> <label>代理页面</label> <div class="form-field"> <input type="text" class="" name="forPayLayerUrl" value="<?php echo ConfigUtil::get_val_by_key('forPayLayerUrl'); ?> " autocomplete="off" placeholder="请输入交易成功通知地址" minlength="15" maxlength="200" data-callback="input.status"/> <span class="clear-btn J-clear-btn">×</span> </div> </li> <li class="form-item form-item-border clearfix"> <label>用户IP</label> <div class="form-field"> <input type="text" class="" name="ip" value="10.45.251.153" autocomplete="off" placeholder="用户IP地址" minlength="15" maxlength="200" data-callback="input.status"/>