首页 > 编程技术 > php

微信支付接口开发新手常见问题解决

发布时间:2016-11-25 15:31

微信支付接口开发新手常见问题其实就是下载的实际下来一些常用的小问题了,下面我们来看看小编整理的一篇相关文章。
今天,我下载了官方文档,直接用官方demo(php版本)做了个简单支付页面。遇到了下面问题。
1、配置文件修改

找到配置文件WxPay.Config.php,只需要配置下面四项

微信支付接口开发遇到的小问题

2、redirect_uri参数错误

登陆公众管理后台-点击开发者中心-找到网页帐号点击修改,写自己域名,保存生效。

3、页面URL未注册

登陆公众微信后台-微信支付-开发配置,支付授权目录路径一直到最后一个斜杠

我设置的测试授权目录是:http://www.xxx.com.cn/m/test/wxpay/example/
我的JsApi支付页面是:http://www.xxx.com.cn/m/test/wxpay/example/money.php

4、样例页面

jsapi.php jsApi支付

micropay.php 刷卡支付
native.php 扫码支付
orderquery.php 订单查询
refund.php 订单退款
refundquery.php 退款查询
download.php 下载订单
session丢失很奇怪了经常会有碰到过小编碰到一个session丢失问题到现在还没有解决了,今天碰到了kindeditor多图上传session丢失问题了一起来看解决方案。

解决办法:

1.在创建文本编辑器时增加session_id的传递

<script>
var editor;
KindEditor.ready(function(K) {
    editor = K.create('textarea[name="content"]', {
        allowFileManager : true,
        extraFileUploadParams:{
            'PHPSESSID' : "<?=session_id()?>"
        }
    });
</script>

<textarea name="content" style="width:800px;height:400px;visibility:hidden;">KindEditor</textarea>

2.upload_json.php文件增加session初始化

$session=isset($_POST['PHPSESSID'])?$_POST['PHPSESSID']:'';

if($session){//重新设置cookie,解决使用Flash上传图片时cookie丢失的问题

    session_id($session);

    session_start();

}else{
    session_start();
}

header在php中的作用有很多跳转,及发送头部信息之类的,那么除了这两种功能还有其它功能吗,我们来看看php 常用header常用例子吧。

这里记录下常用header的信息

<?php
header('HTTP/1.1 200 OK');  // ok 正常访问
header('HTTP/1.1 404 Not Found'); //通知浏览器 页面不存在
header('HTTP/1.1 301 Moved Permanently'); //设置地址被永久的重定向 301
header('Location: http://www.ruonu.com/'); //跳转到一个新的地址
header('Refresh: 10; url=http://www.ruonu.com/'); //延迟转向 也就是隔几秒跳转
header('X-Powered-By: PHP/7.0.0'); //修改 X-Powered-By信息
header('Content-language: en'); //文档语言
header('Content-Length: 1234'); //设置内容长度
header('Last-Modified: '.gmdate('D, d M Y H:i:s', $time).' GMT'); //告诉浏览器最后一次修改时间
header('HTTP/1.1 304 Not Modified'); //告诉浏览器文档内容没有发生改变
 
###内容类型###
header('Content-Type: text/html; charset=utf-8'); //网页编码
header('Content-Type: text/plain'); //纯文本格式
header('Content-Type: image/jpeg'); //JPG、JPEG 
header('Content-Type: application/zip'); // ZIP文件
header('Content-Type: application/pdf'); // PDF文件
header('Content-Type: audio/mpeg'); // 音频文件 
header('Content-type: text/css'); //css文件
header('Content-type: text/javascript'); //js文件
header('Content-type: application/json');  //json
header('Content-type: application/pdf'); //pdf
header('Content-type: text/xml');  //xml
header('Content-Type: application/x-shockw**e-flash'); //Flash动画
 
######
 
###声明一个下载的文件###
header('Content-Type: application/octet-stream');
header('Content-Disposition: attachment; filename="ITblog.zip"');
header('Content-Transfer-Encoding: binary');
readfile('test.zip');
######
 
###对当前文档禁用缓存###
header('Cache-Control: no-cache, no-store, max-age=0, must-revalidate');
header('Expires: Mon, 26 Jul 1997 05:00:00 GMT');
######
 
###显示一个需要验证的登陆对话框### 
header('HTTP/1.1 401 Unauthorized'); 
header('WWW-Authenticate: Basic realm="Top Secret"'); 
######
 
 
###声明一个需要下载的xls文件###
header('Content-Disposition: attachment; filename=ithhc.xlsx');
header('Content-Type: application/vnd.openxmlformats-officedocument.spreadsheetml.sheet');
header('Content-Length: '.filesize('./test.xls')); 
header('Content-Transfer-Encoding: binary'); 
header('Cache-Control: must-revalidate'); 
header('Pragma: public'); 
readfile('./test.xls'); 
######
 
 
?>

php curl_multi 多线程的例子用到的不多时,但是在php使用到多线程的话我们会用到php curl_multi 了,下面来看一个例子。

PHP自身没有多线程的,可以借助扩展实现。但是curl_multi* 函数实现了多线程访问网站数据的功能。
步骤总结如下:

第一步:调用curl_multi_init
第二步:循环调用curl_multi_add_handle
这一步需要注意的是,curl_multi_add_handle的第二个参数是由curl_init而来的子handle。
第三步:持续调用curl_multi_exec
第四步:根据需要循环调用curl_multi_getcontent获取结果
第五步:调用curl_multi_remove_handle,并为每个字handle调用curl_close
第六步:调用curl_multi_close

 

 代码如下 复制代码

<?php
$t=getTime();
$total=10;
for($i=0;$i<$total;$i++){
 $url_arr[] = "http://www.111cn.net /test";
}
   
$mh = curl_multi_init();
foreach ($url_arr as $i => $url) {
 $conn[$i] = curl_init($url);
 curl_setopt($conn[$i],CURLOPT_RETURNTRANSFER,1); // 设置返回页面输出内容
 curl_multi_add_handle ($mh,$conn[$i]); // 添加线程
}
#----------------执行线程----------------
do {
 $mrc = curl_multi_exec($mh,$active);
}while ($mrc == CURLM_CALL_MULTI_PERFORM);

while ($active and $mrc == CURLM_OK) {
 if (curl_multi_select($mh) != -1) {
  do {
   $mrc = curl_multi_exec($mh, $active);
  } while ($mrc == CURLM_CALL_MULTI_PERFORM);
 }
}

foreach ($url_arr as $i => $url) {
 $res[$i]=curl_multi_getcontent($conn[$i]);//得到页面输入内容
 curl_multi_remove_handle($mh, $conn[$i]);
 curl_close($conn[$i]);
}
curl_multi_close($mh);

foreach($res as $k=>$v){
 $k=str_pad($k,2,0);
 echo "$k => $v <br>";
}

runTime($t);
#----------- calculate time function-------------
function getTime(){
 $TIME=explode(" ",microtime());
 $TIME=$TIME[1].substr($TIME[0],1);
 return $TIME;
}
function runTime($t,$l=3){
 $dif=getTime()-$t;
 echo ' '.number_format($dif,$l);
}
?>

记住密码功能我们在许多网站登录时都会看到有这个功能了,下面我们来看一篇基于php的记住密码功能的实现方法,具体的例子如下所示。

提供两个内置的方法,可以在项目中直接使用,很方便


/**
 * 记住密码/清空密码
 *
 * @param $phone
 * @param $pwd
 * @param $name
 */
public function SeTpassword($phone, $pwd , $name, $type){
    if($type == 1) {
        $data = array(
            'phone' => $phone,
            'pwd' => $pwd
        );
        $key = base64_encode(json_encode($data));
        setcookie($name, $key, time() + 3600 * 24 * 7, '/', '', '', true);
    }else{
        setcookie($name,'' , time() - 3600 * 24 * 30, '/', '', '', true);
    }
}
 
/**
 * 得到保存的密码
 * @param $name
 * @return mixed
 */
public function GetPassword($name){
    $info = array();
    if(!isset($_COOKIE[$name])){
        $data['errorCode'] = 1;
    }else{
        if($_COOKIE[$name] == ''){
            $data['errorCode'] = 1;
        }else{
            $key = json_decode(base64_decode($_COOKIE[$name], true),true);
            if(!is_array($key)){
                $data['errorCode'] = 1;
            }else{
                $data['errorCode'] = 0;
                $info['phone'] = $key['phone'];
                $info['pwd'] = $key['pwd'];
                $info['type'] = 1;
            }
        }
    }
    if($data['errorCode'] == 1){
        $info['phone'] = '';
        $info['pwd'] = '';
        $info['type'] = 0;
    }
    return $info;
}

标签:[!--infotagslink--]

您可能感兴趣的文章: