2019-04-27 12:38:10 qq_34792528 阅读数 294
  • 微信支付开发-微信公众号开发12-微信开发php

    微信公众平台开发之微信支付开发是子恒老师《微信公众平台开发》视频教程的第12部。详细讲解了用php进行微信支付的开发。内容包含获取支付密钥,微信公众号支付开发,扫码支付,微信刷卡支付,异步处理支付结果等等。欢迎反馈,微信/QQ:68183131

    27836 人正在学习 去看看 秦子恒

微信开发遇到的坑 在tp5使用session失效

问题描述:在不同控制器定义个session ,在另一个控制器却访问不到这个session

原因:tp5中的session只支持浏览器的访问,又或者是微信小程序是经过微信的中继服务器链接我们的服务器(确定),因为每次的cookie会变,所以cookie所携带的sessionid也会变,其结果就是不能访问到设置的session

解决办法:使用Cache代替session (推荐),因为这种办法还能很方便的设置过期时间,防止session一直存在,影响用户操作。

//设置缓存(有效期7200秒)

Cache::set(‘name’,$value,7200);

//获取缓存数据可以使用:

Cache::get(‘name’);

但是,Cache有一个严重的问题,就是不同的用户可以相互访问Cache
在这里插入图片描述
在这里插入图片描述
得到的cache储存在runtime文件夹下,在uc浏览器访问index/index/index3设置cache和session得到以下内容

![在这里插入图片描述](https://img-blog.csdnimg.cn/20190822104414940.)
在谷歌浏览器访问index/index/index2得到以下内容
在这里插入图片描述
如此可见,cache是共享的,存放在服务器的,而session是每个用户创建的不同进程创建的cookie存储在客户端,客户端每次请求的时候,在cookie带上session才能得到自己的session内容。
一个用户对应一个sessionid 这个文件存放本用户所有的session

2019-10-16 16:00:36 qq_45722923 阅读数 5
  • 微信支付开发-微信公众号开发12-微信开发php

    微信公众平台开发之微信支付开发是子恒老师《微信公众平台开发》视频教程的第12部。详细讲解了用php进行微信支付的开发。内容包含获取支付密钥,微信公众号支付开发,扫码支付,微信刷卡支付,异步处理支付结果等等。欢迎反馈,微信/QQ:68183131

    27836 人正在学习 去看看 秦子恒

公众号

微信公众号被动回复消息 需要加密返回 echo

小程序的授权和公众号的授权是一样的

第三方服务商

微信第三方平台传输的参数需要json_encode 微信接收的是 json格式

测试时 component_access_vriky 需要写入数据库

xml格式的数据 需要 file_get_contents(‘php://input’) 获取

微信第三方平台刷新公众refresh_token 的api接口 url地址 有空格 要过滤掉空格

服务器配置token验证

<?php
    //1.将timestamp once token按字典序排序
    $timestamp = $_GET['timestamp'];
    $nonce      = $_GET['nonce'];
    $token     = '';
    $signature = $_GET['signature'];
    $echostr   = $_GET['echostr'];

    $array=array($token,$timestamp,$nonce);
    sort($array);
    //排序后加密
    $tmpstr=sha1(implode( $array ));

    //将加密后的字符串与signature进行比较,判读该请求是否来着微信
    if($tmpstr == $signature){
        echo $echostr;
        exit();
    }
2016-03-17 11:31:50 shenshibaoma 阅读数 1571
  • 微信支付开发-微信公众号开发12-微信开发php

    微信公众平台开发之微信支付开发是子恒老师《微信公众平台开发》视频教程的第12部。详细讲解了用php进行微信支付的开发。内容包含获取支付密钥,微信公众号支付开发,扫码支付,微信刷卡支付,异步处理支付结果等等。欢迎反馈,微信/QQ:68183131

    27836 人正在学习 去看看 秦子恒

前言


最近项目要加上微信支付,就去看了下微信相关的流程,以下总结下便于我以后回来看 同时和大家探讨交流.


微信支付过程及遇到的问题


 1、首先感谢ID“一叶飘舟”,最后看到微信的流程需要后台查询订单状态(服务器和我以为需要客户端在支付成功后去调用服务器接口,实则不是,这个需要服务器和微信去做同步,客户端只管提示支付成功就行)。

 2、微信支付主要的是签名和包名问题最多,签名必须是正式的签名(发包的签名),debug.keystore,我试了下,调用不起来微信的客户端支付,必须打包后去测试微信支付,这点和微信分享一样,有点坑啊,为啥不能像高德或者百度,有release key 和debug key,现在新版高德一个key就搞定了。

 3、按照微信的流程是需要客户端调用服务器的接口创建订单------>获取订单ID---》再调用服务器接口获取预支付订单(这个要注意,要根据微信的规范,服务器在调用统一下单接口后将微信返回给的参数进行再签名,然后通过接口返回给客户端,客户端再调用微信支付,否则,一般是sign的值的问题,如果没有进行再签名,客户端调用不起来微信支付)。

 4、回调问题:要在你包名下比如com.xxx.加上微信的包名和回调类 com.xxx.wxapi+WXPayEntryActivity,然后再其回调方法中onResp中进行处理,一般来说支付成功,微信会跳转到它自己的支付成功界面,这个时候,点击完成或用户点击返回键都会触发微信的回调以执行你后续的操作(亲测会回调,所以不用担心用户点击返回键不会触发回调)。

 5、开发过程就简单了多,按照微信的代码,根据自己的业务来做就是,不懂看微信的流程图和时序图,讲的的很明白了,API设计的也挺合理的,不懂就看图,微信的坑一直比较多,分享,支付,二维码扫描等,欢迎大家交流。

2017-09-26 11:20:11 lxcao 阅读数 704
  • 微信支付开发-微信公众号开发12-微信开发php

    微信公众平台开发之微信支付开发是子恒老师《微信公众平台开发》视频教程的第12部。详细讲解了用php进行微信支付的开发。内容包含获取支付密钥,微信公众号支付开发,扫码支付,微信刷卡支付,异步处理支付结果等等。欢迎反馈,微信/QQ:68183131

    27836 人正在学习 去看看 秦子恒

智学无忧的教学系统打算开发微信版本,目的是利用微信的方便,为智学无忧的同学提供更加的遍历服务。开发第一步遇到坑了,拿出来和大家分享,希望对网友有帮助


1. 微信公众号要认证,我们的已经是认证的了


2.进入服务器配置(这个地方有坑)


       

    查了各种资料,才知道,这个地方是随意填的,核心的目的就是验证这个网站或服务器是有效的而已。微信根据上面提供的地址,发送一个get请求。请求的信息为

   echoStr  、signature、timestamp、nonce

 其实就是返回echoStr  即可,其它的参数不用理会。主要目的就是验证这个服务器是否有效。

我的后台语言是C#的,所以贴上我的代码 

    public partial class Default : System.Web.UI.Page
    {
        protected void Page_Load(object sender, EventArgs e)
        {
            string token = "zxwyit";
            if (string.IsNullOrEmpty(token))
            {
                return;
            }
            string echoString = HttpContext.Current.Request.QueryString["echoStr"];
            string signature = HttpContext.Current.Request.QueryString["signature"];
            string timestamp = HttpContext.Current.Request.QueryString["timestamp"];
            string nonce = HttpContext.Current.Request.QueryString["nonce"];

            if (!string.IsNullOrEmpty(echoString))
            {
                HttpContext.Current.Response.Write(echoString);
                HttpContext.Current.Response.End();
            }  
        }
    }

验证通过后,进入网站的首页就可以换掉了。

最简洁的代码

public partial class Default : System.Web.UI.Page
{
        protected void Page_Load(object sender, EventArgs e)
        {
            string echoString = HttpContext.Current.Request.QueryString["echoStr"];
            Response.Write(echoString);              
        }
}



2019-04-27 13:08:26 qq_34792528 阅读数 199
  • 微信支付开发-微信公众号开发12-微信开发php

    微信公众平台开发之微信支付开发是子恒老师《微信公众平台开发》视频教程的第12部。详细讲解了用php进行微信支付的开发。内容包含获取支付密钥,微信公众号支付开发,扫码支付,微信刷卡支付,异步处理支付结果等等。欢迎反馈,微信/QQ:68183131

    27836 人正在学习 去看看 秦子恒

PHP 在前端传回一组json数据格式时json_decode解析不出来

问题描述:前端传回一个json格式,后端接受后json_decode为空白

代码如下:

$search=  htmlspecialchars($_GET['$json']);
$json=json_decode($search);

原因:htmlspecialchars()函数把json格式的引号都一起转义了,所以json_decode报错。
解决办法:参考官方htmlspecialchars函数提供的参数,如下:

常量名称

描述

ENT_COMPAT

会转换双引号,不转换单引号。

ENT_QUOTES

既转换双引号也转换单引号。

ENT_NOQUOTES

单/双引号都不转换

ENT_IGNORE

静默丢弃无效的代码单元序列,而不是返回空字符串。 不建议使用此标记, 因为它» 可能有安全影响。

ENT_SUBSTITUTE

替换无效的代码单元序列为 Unicode 代替符(Replacement Character), U+FFFD (UTF-8) 或者 � (其他),而不是返回空字符串。

ENT_DISALLOWED

为文档的无效代码点替换为 Unicode 代替符(Replacement Character): U+FFFD (UTF-8),或 �(其他),而不是把它们留在原处。 比如以下情况下就很有用:要保证 XML 文档嵌入额外内容时格式合法。

ENT_HTML401

以 HTML 4.01 处理代码。

ENT_XML1

以 XML 1 处理代码。

ENT_XHTML

以 XHTML 处理代码。

ENT_HTML5

以 HTML 5 处理代码。

综上,我们可以这样写:

$search=  htmlspecialchars($_GET['$json'],ENT_NOQUOTES);
$json=json_decode($search);

微信开发中的坑

阅读数 41

没有更多推荐了,返回首页