xieruidong 2 年之前
父节点
当前提交
4413a21d5d

+ 28 - 12
application/common/library/upacp_demo_b2b/demo/api_02_b2b/Form_6_4_Query.php

@@ -22,7 +22,32 @@ include_once __DIR__ . '/../../sdk/acp_service.php';
  *        					         后台类资金类同步返03 04 05响应码及未得到银联响应(读超时)需发起查询交易,可查询N次(不超过6次),每次时间间隔2N秒发起,即间隔1,2,4,8,16,32S查询(查询到03,04,05继续查询,否则终止查询)。
  */
 
-$params = array(
+function uniCompanyQuery($orderNo,$tradeTime){
+    $params = array(
+        //以下信息非特殊情况不需要改动
+        'version' => com\unionpay\acp\sdk\SDKConfig::getSDKConfig()->version,		  //版本号
+        'encoding' => 'utf-8',		  //编码方式
+        'signMethod' => com\unionpay\acp\sdk\SDKConfig::getSDKConfig()->signMethod,		  //签名方法
+        'txnType' => '00',		      //交易类型
+        'txnSubType' => '00',		  //交易子类
+        'bizType' => '000000',		  //业务类型
+        'accessType' => '0',		  //接入类型
+        'channelType' => '07',		  //渠道类型
+
+        //TODO 以下信息需要填写
+        'orderId' => $orderNo,	//请修改被查询的交易的订单号,8-32位数字字母,不能含“-”或“_”,此处默认取demo演示页面传递的参数
+        'merId' => file_get_contents(__DIR__.'/../../assets/roots/mid.txt'),//商户代码,请改自己的测试商户号,此处默认取demo演示页面传递的参数
+        'txnTime' => date('YmdHis',$tradeTime),	//请修改被查询的交易的订单发送时间,格式为YYYYMMDDhhmmss,此处默认取demo演示页面传递的参数
+    );
+
+    com\unionpay\acp\sdk\AcpService::sign ( $params ); // 签名
+    $url = com\unionpay\acp\sdk\SDKConfig::getSDKConfig()->singleQueryUrl;
+
+    $result_arr = com\unionpay\acp\sdk\AcpService::post ( $params, $url);
+    return is_array($result_arr) && ($result_arr["origRespCode"]??null) === "00";
+}
+
+/*$params = array(
 		//以下信息非特殊情况不需要改动
 		'version' => com\unionpay\acp\sdk\SDKConfig::getSDKConfig()->version,		  //版本号
 		'encoding' => 'utf-8',		  //编码方式
@@ -84,16 +109,7 @@ if ($result_arr["respCode"] == "00"){
 	echo "失败:" . $result_arr["respMsg"] . "。<br>\n";
 }
 
-/**
- * 打印请求应答
- *
- * @param
- *        	$url
- * @param
- *        	$req
- * @param
- *        	$resp
- */
+
 function printResult($url, $req, $resp) {
 	echo "=============<br>\n";
 	echo "地址:" . $url . "<br>\n";
@@ -102,5 +118,5 @@ function printResult($url, $req, $resp) {
 	echo "=============<br>\n";
 }
 
-
+*/
 

+ 25 - 25
application/common/library/upacp_demo_b2c/sdk/acp_service.php

@@ -39,13 +39,13 @@ class AcpService {
 				}
 				$logger->LogInfo ('证书更新成功');
 				return 1;
-			} else {						
+			} else {
 				$logger->LogInfo ('证书无需更新');
 				return 0;
 			}
 		} else if($certType === "02"){
 			return 0;
-		} else {						
+		} else {
 			$logger->LogError ('unknown cerType: '. $certType);
 			return -1;
 		}
@@ -62,9 +62,9 @@ class AcpService {
 			return AcpService::signByCertInfo($params, SDKConfig::getSDKConfig()->signCertPath, SDKConfig::getSDKConfig()->signCertPwd);
 		} else {
 			return AcpService::signBySecureKey($params, SDKConfig::getSDKConfig()->secureKey);
-		} 
+		}
 	}
-	
+
 	static function signByCertInfo(&$params, $cert_path, $cert_pwd) {
 
 		$logger = LogUtil::getLogger();
@@ -72,9 +72,9 @@ class AcpService {
 		if(isset($params['signature'])){
 			unset($params['signature']);
 		}
-		
+
 		$result = false;
-		
+
 		if($params['signMethod']=='01') {
 			//证书ID
 			$params ['certId'] = CertUtil::getSignCertIdFromPfx($cert_path, $cert_pwd);
@@ -87,7 +87,7 @@ class AcpService {
 				$logger->LogInfo ( "摘要sha1x16 >" . $params_sha1x16 );
 				// 签名
 				$result = openssl_sign ( $params_sha1x16, $signature, $private_key, OPENSSL_ALGO_SHA1);
-		
+
 				if ($result) {
 					$signature_base64 = base64_encode ( $signature );
 					$logger->LogInfo ( "签名串为 >" . $signature_base64 );
@@ -119,18 +119,18 @@ class AcpService {
 		$logger->LogInfo ( '=====签名报文结束======' );
 		return $result;
 	}
-	
+
 	static function signBySecureKey(&$params, $secureKey) {
-		
+
 		$logger = LogUtil::getLogger();
-		
+
 		if($secureKey == null || trim($secureKey) == '') {
 			$logger->LogError ( "密钥没配,签名失败");
 			return false;
 		}
-		
+
 		$logger->LogInfo ( '=====签名报文开始======' );
-		
+
 		if($params['signMethod']=='11') {
 			// 转换成key=val&串
 			$params_str = createLinkString ( $params, true, false );
@@ -203,28 +203,28 @@ class AcpService {
 			}
 		} else {
 			$isSuccess = AcpService::validateBySecureKey($params, SDKConfig::getSDKConfig()->secureKey);
-		} 
+		}
 		return $isSuccess;
 	}
 
-	static function validateBySecureKey($params, $secureKey) { 
-		
+	static function validateBySecureKey($params, $secureKey) {
+
 		$logger = LogUtil::getLogger();
-		
+
 		if($secureKey == null || trim($secureKey) == '') {
 			$logger->LogError ( "密钥没配,验签失败");
 			return false;
 		}
 		$isSuccess = false;
-		
+
 		$signature_str = $params ['signature'];
 		unset ( $params ['signature'] );
 		$params_str = createLinkString ( $params, true, false );
 		$logger->LogInfo ( '报文去[signature] key=val&串>' . $params_str );
 		$logger->LogInfo ( '签名原文>' . $signature_str );
-		
+
 		if($params['signMethod']=='11') {
-			
+
 			$params_before_sha256 = hash('sha256', $secureKey);
 			$params_before_sha256 = $params_str.'&'.$params_before_sha256;
 			$params_after_sha256 = hash('sha256',$params_before_sha256);
@@ -240,9 +240,9 @@ class AcpService {
 		}
 
 		return $isSuccess;
-		
+
 	}
-	
+
 	/**
 	 * @deprecated 5.1.0开发包已删除此方法,请直接参考5.1.0开发包中的VerifyAppData.php验签。
 	 * 对控件支付成功返回的结果信息中data域进行验签
@@ -283,7 +283,7 @@ class AcpService {
 		curl_setopt ( $ch, CURLOPT_SSL_VERIFYHOST, false ); // 不验证HOST
 		curl_setopt ( $ch, CURLOPT_SSLVERSION, 1 ); // http://php.net/manual/en/function.curl-setopt.php页面搜CURL_SSLVERSION_TLSv1
 		curl_setopt ( $ch, CURLOPT_HTTPHEADER, array (
-				'Content-type:application/x-www-form-urlencoded;charset=UTF-8' 
+				'Content-type:application/x-www-form-urlencoded;charset=UTF-8'
 				) );
 				curl_setopt ( $ch, CURLOPT_POSTFIELDS, $opts );
 				curl_setopt ( $ch, CURLOPT_RETURNTRANSFER, true );
@@ -464,7 +464,7 @@ eot;
 			$cert_path = SDKConfig::getSDKConfig()->signCertPath;
 			$cert_pwd = SDKConfig::getSDKConfig()->signCertPwd;
 		}
-		
+
 		$data = base64_decode ( $data );
 		$private_key = CertUtil::getSignKeyFromPfx ( $cert_path, $cert_pwd);
 		openssl_private_decrypt ( $data, $crypted, $private_key );
@@ -605,6 +605,6 @@ class UnionQuery{
         $url = SDKConfig::getSDKConfig()->singleQueryUrl;
 
         $result_arr = AcpService::post ( $params, $url);
-        return is_array($result_arr) && $result_arr["origRespCode"] == "00";
+        return is_array($result_arr) && ($result_arr["origRespCode"]??null) === "00";
     }
-}
+}