alipay_core.function.php 5.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167
  1. <?php
  2. /**
  3. * 把数组所有元素,按照“参数=参数值”的模式用“&”字符拼接成字符串
  4. * @param $para 需要拼接的数组
  5. * return 拼接完成以后的字符串
  6. */
  7. function createLinkstring($para) {
  8. $arg = "";
  9. while (list ($key, $val) = each ($para)) {
  10. $arg.=$key."=".$val."&";
  11. }
  12. //去掉最后一个&字符
  13. $arg = substr($arg,0,count($arg)-2);
  14. //如果存在转义字符,那么去掉转义
  15. if(get_magic_quotes_gpc()){$arg = stripslashes($arg);}
  16. return $arg;
  17. }
  18. /**
  19. * 把数组所有元素,按照“参数=参数值”的模式用“&”字符拼接成字符串,并对字符串做urlencode编码
  20. * @param $para 需要拼接的数组
  21. * return 拼接完成以后的字符串
  22. */
  23. function createLinkstringUrlencode($para) {
  24. $arg = "";
  25. while (list ($key, $val) = each ($para)) {
  26. $arg.=$key."=".urlencode($val)."&";
  27. }
  28. //去掉最后一个&字符
  29. $arg = substr($arg,0,count($arg)-2);
  30. //如果存在转义字符,那么去掉转义
  31. if(get_magic_quotes_gpc()){$arg = stripslashes($arg);}
  32. return $arg;
  33. }
  34. /**
  35. * 除去数组中的空值和签名参数
  36. * @param $para 签名参数组
  37. * return 去掉空值与签名参数后的新签名参数组
  38. */
  39. function paraFilter($para) {
  40. $para_filter = array();
  41. while (list ($key, $val) = each ($para)) {
  42. if($key == "sign" || $key == "sign_type" || $val == "")continue;
  43. else $para_filter[$key] = $para[$key];
  44. }
  45. return $para_filter;
  46. }
  47. /**
  48. * 对数组排序
  49. * @param $para 排序前的数组
  50. * return 排序后的数组
  51. */
  52. function argSort($para) {
  53. ksort($para);
  54. reset($para);
  55. return $para;
  56. }
  57. /**
  58. * 写日志,方便测试(看网站需求,也可以改成把记录存入数据库)
  59. * 注意:服务器需要开通fopen配置
  60. * @param $word 要写入日志里的文本内容 默认值:空值
  61. */
  62. function logResult($word='') {
  63. $fp = fopen("log.txt","a");
  64. flock($fp, LOCK_EX) ;
  65. fwrite($fp,"执行日期:".strftime("%Y%m%d%H%M%S",time())."\n".$word."\n");
  66. flock($fp, LOCK_UN);
  67. fclose($fp);
  68. }
  69. /**
  70. * 远程获取数据,POST模式
  71. * 注意:
  72. * 1.使用Crul需要修改服务器中php.ini文件的设置,找到php_curl.dll去掉前面的";"就行了
  73. * 2.文件夹中cacert.pem是SSL证书请保证其路径有效,目前默认路径是:getcwd().'\\cacert.pem'
  74. * @param $url 指定URL完整路径地址
  75. * @param $cacert_url 指定当前工作目录绝对路径
  76. * @param $para 请求的数据
  77. * @param $input_charset 编码格式。默认值:空值
  78. * return 远程输出的数据
  79. */
  80. function getHttpResponsePOST($url, $cacert_url, $para, $input_charset = '') {
  81. if (trim($input_charset) != '') {
  82. $url = $url."_input_charset=".$input_charset;
  83. }
  84. $curl = curl_init($url);
  85. curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, true);//SSL证书认证
  86. curl_setopt($curl, CURLOPT_SSL_VERIFYHOST, 2);//严格认证
  87. curl_setopt($curl, CURLOPT_CAINFO,$cacert_url);//证书地址
  88. curl_setopt($curl, CURLOPT_HEADER, 0 ); // 过滤HTTP头
  89. curl_setopt($curl,CURLOPT_RETURNTRANSFER, 1);// 显示输出结果
  90. curl_setopt($curl,CURLOPT_POST,true); // post传输数据
  91. curl_setopt($curl,CURLOPT_POSTFIELDS,$para);// post传输数据
  92. $responseText = curl_exec($curl);
  93. //var_dump( curl_error($curl) );//如果执行curl过程中出现异常,可打开此开关,以便查看异常内容
  94. curl_close($curl);
  95. return $responseText;
  96. }
  97. /**
  98. * 远程获取数据,GET模式
  99. * 注意:
  100. * 1.使用Crul需要修改服务器中php.ini文件的设置,找到php_curl.dll去掉前面的";"就行了
  101. * 2.文件夹中cacert.pem是SSL证书请保证其路径有效,目前默认路径是:getcwd().'\\cacert.pem'
  102. * @param $url 指定URL完整路径地址
  103. * @param $cacert_url 指定当前工作目录绝对路径
  104. * return 远程输出的数据
  105. */
  106. function getHttpResponseGET($url,$cacert_url) {
  107. $curl = curl_init($url);
  108. curl_setopt($curl, CURLOPT_HEADER, 0 ); // 过滤HTTP头
  109. curl_setopt($curl,CURLOPT_RETURNTRANSFER, 1);// 显示输出结果
  110. curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, true);//SSL证书认证
  111. curl_setopt($curl, CURLOPT_SSL_VERIFYHOST, 2);//严格认证
  112. curl_setopt($curl, CURLOPT_CAINFO,$cacert_url);//证书地址
  113. $responseText = curl_exec($curl);
  114. //var_dump( curl_error($curl) );//如果执行curl过程中出现异常,可打开此开关,以便查看异常内容
  115. curl_close($curl);
  116. return $responseText;
  117. }
  118. /**
  119. * 实现多种字符编码方式
  120. * @param $input 需要编码的字符串
  121. * @param $_output_charset 输出的编码格式
  122. * @param $_input_charset 输入的编码格式
  123. * return 编码后的字符串
  124. */
  125. function charsetEncode($input,$_output_charset ,$_input_charset) {
  126. $output = "";
  127. if(!isset($_output_charset) )$_output_charset = $_input_charset;
  128. if($_input_charset == $_output_charset || $input ==null ) {
  129. $output = $input;
  130. } elseif (function_exists("mb_convert_encoding")) {
  131. $output = mb_convert_encoding($input,$_output_charset,$_input_charset);
  132. } elseif(function_exists("iconv")) {
  133. $output = iconv($_input_charset,$_output_charset,$input);
  134. } else die("sorry, you have no libs support for charset change.");
  135. return $output;
  136. }
  137. /**
  138. * 实现多种字符解码方式
  139. * @param $input 需要解码的字符串
  140. * @param $_output_charset 输出的解码格式
  141. * @param $_input_charset 输入的解码格式
  142. * return 解码后的字符串
  143. */
  144. function charsetDecode($input,$_input_charset ,$_output_charset) {
  145. $output = "";
  146. if(!isset($_input_charset) )$_input_charset = $_input_charset ;
  147. if($_input_charset == $_output_charset || $input ==null ) {
  148. $output = $input;
  149. } elseif (function_exists("mb_convert_encoding")) {
  150. $output = mb_convert_encoding($input,$_output_charset,$_input_charset);
  151. } elseif(function_exists("iconv")) {
  152. $output = iconv($_input_charset,$_output_charset,$input);
  153. } else die("sorry, you have no libs support for charset changes.");
  154. return $output;
  155. }
  156. ?>