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 static function sign($params) { ksort($params); $sourceSignString = SignUtil::signString($params, SignUtil::$unSignKeyList); $sha256SourceSignString = hash("sha256", $sourceSignString); return RSAUtils::encryptByPrivateKey($sha256SourceSignString); }
/** *V4.0 获取商户结果通知平台请求商户数据 * @param $map 请求数据 * @return HashMap */ public static function getSplitMerRefundNotifyReqData($map) { $log = new Logger(); if ($map == null || $map->size() == 0) { die("获取通知数据失败:待解析的数据对象为空!"); } $plain = self::getSplitMerRefundNotifyPlain($map); $plain = iconv("UTF-8", "GBK", $plain); $log->logInfo("getSplitMerRefundNotifyReqData plain=[" . $plain . "]"); $sign = $map->get("sign"); $log->logInfo("getSplitMerRefundNotifyReqData sign=" . $sign); //进行请求数据验签 $checked = SignUtil::verify($plain, $sign); if (!$checked) { die("支付结果通知平台请求数据验签失败!"); } return $map; }
<?php require_once 'common.php'; SignUtil::verify("mer_date=20120110&mer_id=9995&order_id=10002417&ret_code=0000&version=4.0", "LZRUM0FfsqgcCiwHXghFGKfz0+xWFPGUGNXVaj7kcJPY2iOopiIQXwsc4kIeFIc0nttIx29KCvbuPxJJ0uHU5wJbRAzxH8H8cHGMVahTny4joll9zSXatep3jSAa4RE2BovMkIxYzif6tTCf7DMAlD+dDMZ6oRJDGW7rFxJh4G0="); ?>
/** * 4.0接口商户响应平台支付结果通知(商户到平台,直连网银)检查数据字段合法性并生成签名明文串 * @param $map * @return 商户响应平台数据 */ public static function notifySplitMerRefundResData($map) { $plain = NotifyResData::getSplitMerRefundNotifyResDataPlain($map); $sign = SignUtil::sign($plain); $plain = StringUtil::getSortParameter($map); return $plain . "&sign=" . $sign; }
/** * 4.0获取签名密文串 * @param $map * @param $funcode */ private function getSignData($map) { $log = new Logger(); $plain = $this->getSortPlain($map); $merId = $map->get('mer_id'); $log->logInfo("Participate in the signature parameters:[" . $plain . "],Merchant number is:[" . $merId . "]"); $sign = SignUtil::sign2($plain, $merId); return $sign; }
$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; } //单独对身份证号和姓名进行加密处理。 $retUrl = ""; $retUrl = urlencode($ret_url); //对前台返回url地址进行url编码。 $sign = urlencode(SignUtil::sign2("merId" . "=" . $merId . "&" . "merCustId" . "=" . $merCustId, $merId)); //注:需要签名的参数范例:merId=9995&merCustId=123456 //生成请求所需签名 $plain = "&merId=" . $merId . "&merCustId=" . $merCustId . "&retUrl=" . $retUrl . "&signType=" . $signType . "&identityType=" . $identityType . "&identityCode=" . $identityCode . "&cardHolder=" . $cardHolder . "&payType=" . $payType . "&gateId=" . $gateId . "&mobileId=" . $mobileId . "&canModifyFlag=" . $canModifyFlag; //生成请求的字符串。 $wap_url = "https://m.soopay.net/q/xhtml/protIndex.do?" . $plain . "&sign=" . $sign; $html5_url = "https://m.soopay.net/q/html5/protIndex.do?" . $plain . "&sign=" . $sign; ?> <body> <div id="HEADA"><?php include "./head.php"; ?> </div> <div id="MAINA"> <div class="mindexa">