精华内容
参与话题
问答
  • 微信支付开发——公众号支付

    万人学习 2016-10-27 14:33:09
    微信已经融入到人们的生活中,很多企业也...这是一部中课程,需要有学习的开发者拥有微信开发和PHP的相关基础:微信支付在项目中的位置、微信支付类型、微信支付涉及内容、微信公众号支付功能实现、微信支付安全建议。
  • 本文承接之前发布的博客《 微信支付V3微信公众号支付PHP教程/thinkPHP5公众号支付》必须阅读上篇文章后才可以阅读这篇文章。由于最近一段时间工作比较忙,博客更新比较慢。如果有任何问题大家可以关注以上公众号,...


    NS技术圈
    扫二维码关注,获取更多技术分享

    本文承接之前发布的博客《 微信支付V3微信公众号支付PHP教程/thinkPHP5公众号支付》必须阅读上篇文章后才可以阅读这篇文章。由于最近一段时间工作比较忙,博客更新比较慢。如果有任何问题大家可以关注以上公众号,在公众号中给我留言,一般我会在晚上统一查看所有邮件及留言逐一回复。我的邮箱地址weiyongqiang@weiyongqiang.com希望和大家一起交流,IT工作觉得不能闭门造车。

    JSSDK是什么

    JSSDK是微信对外提供的一些基于用户层面的功能代码的集合,只在微信浏览器中适用。该SDK给我们提供了例如,照片预览,上传照片,下载照片等功能。但是诸如上传照片的功能,jssdk只给我们提供了统一的上传方法,但是上传的数据流处理还需要我们自己在后台使用相关的业务代码来处理。

    如何引入JSSDK

    jssdk的引入是非常简单的,其本身也是一个需要加载的js文件。我们使用外部js文件加载的方法就可以。例如

    <script src="http://res.wx.qq.com/open/js/jweixin-1.2.0.js"></script>

    这个地址大家注意查看官方文档保证引入最新版的。
    关于微信jssdk的引入是非常简单的,这样就算引入了。对于jssdk大家也没有必要把他下载到本地,直接使用官方链接就行了。

    如何使用JSSDK

    JSSDK的初始化

    在使用jssdk之前需要使用相应的数据对jssdk进行初始化。一般情况下我们是调用wx.config()来进行初始化,具体的初始化代码结构如下:

        wx.config({
            debug: true, // 开启调试模式,调用的所有api的返回值会在客户端alert出来,若要查看传入的参数,可以在pc端打开,参数信息会通过log打出,仅在pc端时才会打印。
            appId: "{$appid}", // 必填,公众号的唯一标识
            timestamp: "{$params.timestamp}", // 必填,生成签名的时间戳
            nonceStr: "{$params.noncestr}", // 必填,生成签名的随机串
            signature: "{$signature}",// 必填,签名,见附录1
            jsApiList: [
                "chooseWXPay"
            ] // 必填,需要使用的JS接口列表, 所有JS接口列表见附录2
        });

    这个对于参数的注释也是非常明确的,大家可以看注释。
    那么大家可能会关心这些配置数据从哪儿来,在此我使用的是PHP作为后端处理的语言,那么在以上的配置中使用的是PHP中页面变量的方式传参数到页面。

    PHP处理初始化参数

    在这儿参数到底该怎么生成呢?我们逐一来说明:

    • appId:appId可以在我们的微信公众平台开发者后台看到,这个比较容易。
      这里写图片描述

    • timestamp: 生成签名时的时间戳,这个和后边的signature有联系,我们在生成signature签名的时候再一起来说明如何

    • nonceStr:此参数是生成签名时的随机字符串,当然这个是自己随机生成的,可以设置自己的随机规则,他也是和signature有关系的我们同样在signature中会说明
    • signature:不用说这个是签名的生成。那么其他参数都和签名有关系,我们就在新的段落来说说这个签名的生成

    signature签名的生成

    签名生成规则如下:
    参与签名的参数
    1. noncestr(随机字符串)
    2. 有效的jsapi_ticket
    3. 有效的jtimestamp(时间戳)
    4. url(当前网页的URL,不包含#及其后面部分)

    签名规则
    1. 对所有待签名参数按照字段名的ASCII 码从小到大排序(字典序)
    2. 使用URL键值对的格式(即key1=value1&key2=value2…)拼接成字符串string1(所有参数名均为小写字符,不要进行url转义)
    3. 对string1作sha1加密

    这样签名就算完成了。但是在准备签名参数的时候随机字符串可以自己生成,有效的时间戳可以直接获取例如time(),当前的url地址也可以获取。但是jsapi_ticket怎么样获取呢?

    jsapi_ticket的获取

    在了解jsapi_ticket的前我们必须知道,在微信开发中非常重要的一个东西,access_token我们知道有了access_token我们就可以直接干很多事了。那么对于jssdk的配置中如果直接使用access_token有access_token泄露的危险。所以我们就有一个其他的解决方案就是jsapi_ticket这个东西。jsapi_ticket是一个临时票据,他有效期只有2小时,2小时候需要重新获取。那么如何生成jsapi_ticket呢?

    thinkphp5中的代码示例

    获取ticket代码

    function get_jsapi_ticket()
    {
        $jsapiTicket = cache('JSAPI_TICKET');
        if (empty($jsapiTicket)) {
            $accessToken = get_access_token();
            $ticketUrl = "https://api.weixin.qq.com/cgi-bin/ticket/getticket?access_token={$accessToken}&type=jsapi";
            //http_reqest是我自己封装的curl请求的函数
            $ticketResult = http_reqest($ticketUrl);
            $ticketArr = json_decode($ticketResult, true);
            $jsapiTicket = $ticketArr['ticket'];
            cache('JSAPI_TICKET', $jsapiTicket, 7200);
        }
    
        return $jsapiTicket;
    }

    获取ticket后进行signature签名示例代码

    function make_signature($params)
    {
        //① 按照字段名进行排序
        $paramsKey = array_keys($params);
        sort($paramsKey, SORT_STRING);
    
        //② 拼凑参数成地址中参数的形式  key=v   key2=v2
        $sortParams = [];
        foreach ($paramsKey as $v)
        {
            $sortParams[] = $v."=".$params[$v];
        }
    
        $paramsStr = implode('&', $sortParams);
        $signature = sha1($paramsStr);
        return $signature;
    }

    处理数据在页面输出

    //1 获取jsapiticket
    $ticket = get_jsapi_ticket();
    
    //2 根据参数进行签名 | 签名算法
    $params = [
        'jsapi_ticket' => $ticket,
        'timestamp' => time(),
        'url' => \request()->url(true),
        'noncestr' => substr(md5(time().rand(1000, 999999)), 0 , 20)
    ];
    
    $signature = make_signature($params);
    
    return view('index', [
        'signature' => $signature,
        'params' => $params,
        'appid' => config('wechat.appId')
    ]);

    页面jssdk初始化部分

    wx.config({
         debug: true, // 开启调试模式,调用的所有api的返回值会在客户端alert出来,若要查看传入的参数,可以在pc端打开,参数信息会通过log打出,仅在pc端时才会打印。
         appId: "{$appid}", // 必填,公众号的唯一标识
         timestamp: "{$params.timestamp}", // 必填,生成签名的时间戳
         nonceStr: "{$params.noncestr}", // 必填,生成签名的随机串
         signature: "{$signature}",// 必填,签名,见附录1
         jsApiList: [
             "chooseWXPay"
         ] // 必填,需要使用的JS接口列表, 所有JS接口列表见附录2
     });
    要获取文章的代码请联系我,或者关注以上二维码根据相应的操作获取。同时这部分内容的视频在:https://edu.csdn.net/course/detail/5861

    展开全文
  • 公众号支付

    2018-04-09 10:32:00
    1.设置支付目录, 在微信商户平台(pay.weixin.qq.com)设置您的公众号支付支付目录,设置路径:商户平台-->产品中心-->开发配置(https://pay.weixin.qq.com/wiki/doc/api/jsapi.php?chapter=7_3...

    1. 设置支付目录,       在微信商户平台(pay.weixin.qq.com)设置您的公众号支付支付目录,设置路径:商户平台-->产品中心-->开发配置(https://pay.weixin.qq.com/wiki/doc/api/jsapi.php?chapter=7_3)

    2.设置公众号授权域名 用于获取open_id

    3.

    转载于:https://my.oschina.net/u/736174/blog/1791577

    展开全文
  • 微信公众号支付java版 微信公众号支付java版 微信公众号支付java版
  • 我们是一个微信开放平台的第三方开发者,目前绑定了多个公众号,都不是同一主体,现在要给所有公众号开通支付功能,但是我们想让所有公众号支付的的钱到我们的账户,这个怎么实现。
  • 本篇文章是微信支付最新接口V3版本的PHP...在本篇文章中我的主要目标是打更少的字让大家明白如何使用微信公众号支付。在系列教程中设计了两个非常流行的使用场景,一个场景是使用thinkPHP5实现的文章赞赏功能,一个场

    本篇文章是微信支付最新接口V3版本的PHP实践教程,在该教程中主要使用的框架是thinkPHP5框架,如果你对thinkPHP5框架下的开发还不是很熟悉可以查看相关的教程,当然在我的博客中也有thinkPHP5的教程大家可以查看。在本篇文章中我的主要目标是打更少的字让大家明白如何使用微信公众号支付。在系列教程中设计了两个非常流行的使用场景,一个场景是使用thinkPHP5实现的文章赞赏功能,一个场景是使用yii2实现的会员充值功能。这两个功能的使用频率非常高,也是非常具有代表性的场景。关于赞赏功能不必多说了,如果这个功能不流行那么苹果公司也不会在每一个有赞赏功能的APP中抽取30%的高额手续费,当然这个只是题外话。

    使用场景一|文章赞赏

    魏永强marswill

    开发前的配置

    微信公众号后台的网页授权域名和js接口安全域名

    这两个域名一般做微信公众号网页开发是必须配置的,那么他们的主要作用是什么呢?js接口安全域名是为了验证调用jssdk的是你自己的系统而不是别人调用你的接口。网页授权的域名是为了在网页授权获取用户信息时验证这个请求确实是你开发的系统发出的,毕竟获取用户信息不是一件简单的事情,万一别人伪造了来获取你的平台的用户信息呢。

    配置的地方在左侧的 [开发>接口权限>网页授权 网页授权获取用户基本信息] 点击右侧的修改

    在配置域名时如果你的页面的根域名是一级域名就配置一级域名,注意不能包含http://或https://如果是二级域名则配置二级域名。
    例如我的系统使用的域名是http://edu.sikukeji.com那么就配置edu.sikukeji.com

    这里写图片描述

    微信支付后台配置api密钥和公众号支付授权目录

    首先要登录微信支付商户后台系统。地址为http://pay.weixin.qq.com如果还没有开通微信支付的按照提示开通微信支付就可以了。一般是认证微信公众号后在微信公众号中申请开通。

    配置api密钥的地方在 账户中心>API安全>设置密钥

    因为调用api时需要验证调用方的真实性说白了还是为了验证是不是你本人调用的,以及调用的加密。这个密钥要是32位的,所以可以使用md5加密一个你常用的字符串,这样如果下次想不起来至少还能想起你的字符串再使用md5加密下就可以了。

    这里写图片描述

    还需要设置公众号支付JSAPI支付授权目录
    这个目录搞懵了很多人,其实有时候字面意思还是需要选择性理解的。首先来看在哪儿设置吧。

    产品中心>开发配置 点击后可以看到JSAPI支付授权目录的配置

    在这儿我要解释一下这个域名到底怎么样填写:

    首先我们要支付的话肯定是在我们自己开发的系统中请求api进行微信支付吧。请求的话一般是在某个方法中,当然这个前提是你使用mvc框架的oop编程。如果函数式编程则不同,我们只说mvc框架下的oop编程因为现在PHP面向过程很少使用。
    如果我请求支付的域名是http://edu.sikukeji.com/index/index/index.html这个是tp5中的域名解释下就是在index模块的index控制器中的index这个方法中发送支付请求。那么请求支付的详细页面地址是index.html如果抛开mvc的结构我们可以理解为index.html是在http://edu.sikukeji.com/index/index/目录下所以我们就配置这个域名。这样就好理解了,其实我们可以吧这个url理解为具体方法的上一级。

    这里写图片描述

    [第二部分jssdk的使用请点击链接跳转]http://blog.csdn.net/marswill/article/details/79237220(http://blog.csdn.net/marswill/article/details/79237220)


    如果想通过视频学习这部分内容可以点击进入视频学习


    展开全文
  • 微信公众号支付总结:做完了微信支付想趁着这把火没灭继续把公众号支付也做完,但是没想到中途出了呢么多意外,每次都是感觉解决了这个问题就可以支付了,但每次都是一个问题接另一个问题的出现,特此总结一下出现的...

    微信公众号支付总结:做完了微信支付想趁着这把火没灭继续把公众号支付也做完,但是没想到中途出了呢么多意外,每次都是感觉解决了这个问题就可以支付了,但每次都是一个问题接另一个问题的出现,特此总结一下出现的问题及原因。

    1.没仔细看文档(有人会一个字一个字的全看完么。。。还是只有我一目十行。。)。如果你仔细把官方文档看完,那你必定能减少至少一半的出错。

    ①但是我感觉有个参数说明挺坑的,就是那个openid!!!



    变量名 

    openid     

       

    必填 

     否 


    描述

     trade_type=JSAPI时(即公众号支付),此参数必传,此参数为微信用户在商户对应appid下的唯一标识。openid如何获取,可参考【获取openid】。企业号请使用【企业号OAuth2.0接口】获取企业号内成员userid,再调用【企业号userid转openid接口】进行转换


    一堆参数,这个用户标志是在最后一个,看到这里的时候早就没耐心了,一开始做想只用必须参数,然后再扩展,看到是否必填的选项为 否之后,我就连看没看,在网上看 demo的时候 大家都说openid必填,我还以为官方文档又更新了,openid都省了,后来每次做好像是提示签名错误还是没有权限啥的,记不清了,我又上网查,仔细对着文档一个个的找才发现了后面这个描述:trade_type=JSAPI时(即公众号支付),此参数必传。感觉很无语,那你写个不是必传干嘛,好歹这个也是公众号支付里的页面,你能在后面加个备注就不能顺手把前面也改掉。


    ②其实那个trade_type我也没注意,因为刚做完APP支付,所以这个字段我就直接写上了APP,其实他也是有具体的取值的,如:JSAPI,NATIVE,APP等,说明详见参数规定。一开始值为APP时,预支付标志直接生成成功,后来我拿这个预支付标识去支付的时候 总是提示我没权限。。尴尬,希望大家不要和我这么粗心。


    2.参数配置有问题

    微信公众号支付需要的配置有 :

    微信支付目录:app_id (和微信app支付不是一个id)

    商户key(key设置路径:微信商户平台(pay.weixin.qq.com)-->账户设置-->API安全-->密钥设置),加签的时候是用这个加签,不要和我似得傻乎乎的用 app_secret去加签。。为了获得这个secret还去重置了,中间又因为忘了公众号密码耽误了好久,,最后好像还没用到这个,无语问苍天。。

    微信支付目录:支付授权目录

    接口列表:网页授权获得用户资料,点修改,里面有域名相关的配置,我因为写乱七八糟的报错,所以把里面的一个js安全域名和回调域名都填写了,也不清楚到底起作用了没。


    3.加签出错

    如果提示验签失败那么别怀疑,就是你加签有问题,微信支付已经用了这么久,他的服务端代码有问题那几乎是不可能的,你愿意听我一言那么就立马进入这里:https://pay.weixin.qq.com/wiki/doc/api/jsapi.php?chapter=20_1  用官方提供的验签工具去检查你的签名是否和他的一样,如果不一样你就一步步照着他的步骤检查,看看是加签过程出了问题还是你的XML有问题,我曾遇见的问题有:中文乱码,排序,大小写。(是不是加签上文档说明的雷全被我踩了。。)

    如果你的加签结果和他的一样,那就说明是你的参数有问题了。再次确认一下配置的参数,我在网上看到一个说一直提示验签失败,然后对比的结果也没问题,最后重置了一下key就好了,我没遇到过,但是如果你真走投无路那你可以尝试一下,不尝试怎么知道 真的是不行呢哈哈哈哈。


    4.支付授权目录

    (这也是一个坑啊,一开始他还有个 测试授权目录的配置,然后我添加了一个公司ip的映射地址测试,结果第二天这个测试目录取消了,就是这么的快,然后我就添加不上公司ip了,我编辑正式的支付授权目录时候,我昨天添加的那个还在,我啥都没动保存的时候提示我昨天添加的呢个未认证,又让我删掉。。感觉好无语,怎么就偏偏被我碰上了,这里倒也不是说微信不好,就是吐槽下。。)

    如果支付授权目录没有设置正确,在请求JSAPI时,会提示“当前页面的url未注册”的错误。具体配置的话,我总结一下就是你调起支付的那个html,jsp,php页面的上一级目录 ,例如 http://www.baidu.com/a/a.html的授权目录就是http://www.baidu.com/a/ 。


    5.其他说明

    注意参数大小写

    注意加签时候区分大小写,看看是不是都转成小写了

    如果有中文注意有没有乱码

    注意时间戳长度及确认是时间戳还是日期字符串


    微信验签工具:https://pay.weixin.qq.com/wiki/doc/api/jsapi.php?chapter=20_1


    微信公众号相比微信APP支付要多很多乱七八糟的东西,除了错不要慌,一步步来,乱了套就从头检查,或者先注释掉非必须的代码,就像最小装机法那样,只装电脑启动的必须硬件。


    如有不当之处,还望指正。


    展开全文
  • 刚完成了一个和微信公众号支付相关的功能,整理了相关资源,按下面步骤使用: 1)公众号要求能够获取用户的openid权限 2)公众号开通了微信支付功能,下载了微信支付安全证书到本机,该文件地址需要在第5步进行设置 ...
  • 手把手教你--JAVA微信支付(公众号支付JSAPI)

    万次阅读 多人点赞 2018-03-07 17:38:53
    JAVA开发微信支付-公众号支付/微信浏览器支付(JSAPI) 写这篇文章的目的有2个,一是自己的项目刚开发完微信支付功能,趁热回个炉温习一下,二也是帮助像我这样对微信支付不熟悉,反复看了多天文档还是一知半解,原理都...
  • 公众号支付是指用户在微信中打开商户的H5页面,商户在H5页面通过调用微信支付提供的JSAPI接口调起微信支付模块来完成支付。 适用于在公众号、朋友圈、聊天窗口等微信内完成支付的场景。 APP支付是指商户通过在...
  • jsApi微信公众号支付

    2019-05-07 11:27:15
    jsApi微信公众号支付可用,已经调通,如有疑问请联系留言 jsApi微信公众号支付可用,已经调通,如有疑问请联系留言 jsApi微信公众号支付可用,已经调通,如有疑问请联系留言
  • 微信公众号支付是基于微信公众号而开发的支付接口,在已有的公众号里可以添加 ASP 的公众号支付,微信中生成订单后,直接调出微信钱包支付,非常方便,同样支持自动更新订单状态。 H5 支付是手机浏览器使用的接口,...
  • 微信公众号支付

    2018-03-29 20:39:44
    在微信浏览器里面打开H5网页中执行JS调起支付。接口输入输出数据格式为JSON。 注意:WeixinJSBridge内置对象在其他浏览器中无效。
  • 微信公众号支付源码

    2018-07-26 16:47:22
    微信公众号支付、可用参考,简单易懂,需要的朋友可用参考一下。附带工具类。不明白的地方可以随时咨询我,我会及时回复大家。
  • 公众号支付是用户在微信中打开商户的H5页面,商户在H5页面通过调用微信支付提供的JSAPI接口调起微信支付模块完成支付。应用场景有: ◆ 用户在微信公众账号内进入商家公众号,打开某个主页面,完成支付 ◆ 用户的...
  • 微信外浏览器h5支付,微信公众号支付,别人已经封装好的jar还不错,经过测试可以使用,需要注意的地方看我博客 微信外浏览器h5支付,微信公众号支付,别人已经封装好的jar还不错,经过测试可以使用,需要注意的地方...
  • 微信支付工具类,这是一个Jsp版的微信公众号支付接口及调用实例,微信网页授权获取用户基本信息,先获取 code,跳转 url 通过 code 获取 openId,URLEncoder.encode 后可以在backUri 的url里面获取传递的所有参数,...
  • 主要介绍了JSAPI公众号支付的方法,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧

空空如也

1 2 3 4 5 ... 20
收藏数 5,870
精华内容 2,348
关键字:

公众号支付