Chinaunix首页 | 论坛 | 博客
  • 博客访问: 53315
  • 博文数量: 48
  • 博客积分: 0
  • 博客等级: 民兵
  • 技术积分: 260
  • 用 户 组: 普通用户
  • 注册时间: 2016-07-12 11:48
文章分类
文章存档

2016年(48)

我的朋友

分类: PHP

2016-12-02 10:08:26

wemall-mobile是基于WeMall的 app商城,只需要在原商城目录下上传接口文件即可完成服务端的配置,客户端可定制修改。本文分享wemall app商城源码Android之 支付宝接口公用函数该类是请求、通知返回两个文件所调用的公用函数核心处理文件,供技术员参考学习。

以下代码只是为了方便商户测试而提供的样例代码,商户可以根据自己网站的需要,按照技术文档编写,并非一定要使用该代码,该代码仅供学习和研究支付宝接口使用,只是提供一个参考。

把数组所有元素,按照“参数=参数值”的模式用“&”字符拼接成字符串

 

点击(此处)折叠或打开

  1. <?php

  2. function createLinkstring($para) {
  3.     $arg = "";
  4.     while (list ($key, $val) = each ($para)) {
  5.         $arg.=$key."=".$val."&";
  6.     }
  7.     //去掉最后一个&字符
  8.     $arg = substr($arg,0,count($arg)-2);
  9.     
  10.     //如果存在转义字符,那么去掉转义
  11.     if(get_magic_quotes_gpc()){$arg = stripslashes($arg);}
  12.     
  13.     return $arg;
  14. }
  15. /**
  16.  * 把数组所有元素,按照“参数=参数值”的模式用“&”字符拼接成字符串,并对字符串做urlencode编码
  17.  * @param $para 需要拼接的数组
  18.  * return 拼接完成以后的字符串
  19.  */
  20. function createLinkstringUrlencode($para) {
  21.     $arg = "";
  22.     while (list ($key, $val) = each ($para)) {
  23.         $arg.=$key."=".urlencode($val)."&";
  24.     }
  25.     //去掉最后一个&字符
  26.     $arg = substr($arg,0,count($arg)-2);
  27.     
  28.     //如果存在转义字符,那么去掉转义
  29.     if(get_magic_quotes_gpc()){$arg = stripslashes($arg);}
  30.     
  31.     return $arg;
  32. }
  33. /**
  34.  * 除去数组中的空值和签名参数
  35.  * @param $para 签名参数组
  36.  * return 去掉空值与签名参数后的新签名参数组
  37.  */
  38. function paraFilter($para) {
  39.     $para_filter = array();
  40.     while (list ($key, $val) = each ($para)) {
  41.         if($key == "sign" || $key == "sign_type" || $val == "")continue;
  42.         else    $para_filter[$key] = $para[$key];
  43.     }
  44.     return $para_filter;
  45. }
  46. /**
  47.  * 对数组排序
  48.  * @param $para 排序前的数组
  49.  * return 排序后的数组
  50.  */
  51. function argSort($para) {
  52.     ksort($para);
  53.     reset($para);
  54.     return $para;
  55. }
  56. /**
  57.  * 写日志,方便测试(看网站需求,也可以改成把记录存入数据库)
  58.  * 注意:服务器需要开通fopen配置
  59.  * @param $word 要写入日志里的文本内容 默认值:空值
  60.  */
  61. function logResult($word='') {
  62.     $fp = fopen("log.txt","a");
  63.     flock($fp, LOCK_EX) ;
  64.     fwrite($fp,"执行日期:".strftime("%Y%m%d%H%M%S",time())."\n".$word."\n");
  65.     flock($fp, LOCK_UN);
  66.     fclose($fp);
  67. }

  68. /**
  69.  * 远程获取数据,POST模式
  70.  * 注意:
  71.  * 1.使用Crul需要修改服务器中php.ini文件的设置,找到php_curl.dll去掉前面的";"就行了
  72.  * 2.文件夹中cacert.pem是SSL证书请保证其路径有效,目前默认路径是:getcwd().'\\cacert.pem'
  73.  * @param $url 指定URL完整路径地址
  74.  * @param $cacert_url 指定当前工作目录绝对路径
  75.  * @param $para 请求的数据
  76.  * @param $input_charset 编码格式。默认值:空值
  77.  * return 远程输出的数据
  78.  */
  79. function getHttpResponsePOST($url, $cacert_url, $para, $input_charset = '') {

  80.     if (trim($input_charset) != '') {
  81.         $url = $url."_input_charset=".$input_charset;
  82.     }
  83.     $curl = curl_init($url);
  84.     curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, true);//SSL证书认证
  85.     curl_setopt($curl, CURLOPT_SSL_VERIFYHOST, 2);//严格认证
  86.     curl_setopt($curl, CURLOPT_CAINFO,$cacert_url);//证书地址
  87.     curl_setopt($curl, CURLOPT_HEADER, 0 ); // 过滤HTTP头
  88.     curl_setopt($curl,CURLOPT_RETURNTRANSFER, 1);// 显示输出结果
  89.     curl_setopt($curl,CURLOPT_POST,true); // post传输数据
  90.     curl_setopt($curl,CURLOPT_POSTFIELDS,$para);// post传输数据
  91.     $responseText = curl_exec($curl);
  92.     //var_dump( curl_error($curl) );//如果执行curl过程中出现异常,可打开此开关,以便查看异常内容
  93.     curl_close($curl);
  94.     
  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.     
  117.     return $responseText;
  118. }

  119. /**
  120.  * 实现多种字符编码方式
  121.  * @param $input 需要编码的字符串
  122.  * @param $_output_charset 输出的编码格式
  123.  * @param $_input_charset 输入的编码格式
  124.  * return 编码后的字符串
  125.  */
  126. function charsetEncode($input,$_output_charset ,$_input_charset) {
  127.     $output = "";
  128.     if(!isset($_output_charset) )$_output_charset = $_input_charset;
  129.     if($_input_charset == $_output_charset || $input ==null ) {
  130.         $output = $input;
  131.     } elseif (function_exists("mb_convert_encoding")) {
  132.         $output = mb_convert_encoding($input,$_output_charset,$_input_charset);
  133.     } elseif(function_exists("iconv")) {
  134.         $output = iconv($_input_charset,$_output_charset,$input);
  135.     } else die("sorry, you have no libs support for charset change.");
  136.     return $output;
  137. }
  138. /**
  139.  * 实现多种字符解码方式
  140.  * @param $input 需要解码的字符串
  141.  * @param $_output_charset 输出的解码格式
  142.  * @param $_input_charset 输入的解码格式
  143.  * return 解码后的字符串
  144.  */
  145. function charsetDecode($input,$_input_charset ,$_output_charset) {
  146.     $output = "";
  147.     if(!isset($_input_charset) )$_input_charset = $_input_charset ;
  148.     if($_input_charset == $_output_charset || $input ==null ) {
  149.         $output = $input;
  150.     } elseif (function_exists("mb_convert_encoding")) {
  151.         $output = mb_convert_encoding($input,$_output_charset,$_input_charset);
  152.     } elseif(function_exists("iconv")) {
  153.         $output = iconv($_input_charset,$_output_charset,$input);
  154.     } else die("sorry, you have no libs support for charset changes.");
  155.     return $output;
  156. }
  157. ?>

 wemall官网地址:

原文详情地址:

wemall doraemonAndroid app商城详情地址:

WeMall - 开源微商城 微信商城 商城源码 分销商城 b2b2c商城系统

wemall

 

 

阅读(653) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~