`
cuiyadll
  • 浏览: 203965 次
文章分类
社区版块
存档分类
最新评论

微信JS SDK PHP Demo

php 
阅读更多

微信JS-SDK PHP Demo JS接口安全域名 自定义分享接口 jsapi_ticket 分享到朋友圈 分享给朋友 分享到QQ 
原文:http://www.cnblogs.com/txw1958/p/weixin-js-sdk-php-demo.html

 

一、JSSDK类定义

复制代码
<?php
class JSSDK {
  private $appId;
  private $appSecret;

  public function __construct($appId, $appSecret) {
    $this->appId = $appId;
    $this->appSecret = $appSecret;
  }

  public function getSignPackage() {
    $jsapiTicket = $this->getJsApiTicket();
    $url = "http://$_SERVER[HTTP_HOST]$_SERVER[REQUEST_URI]";
    $timestamp = time();
    $nonceStr = $this->createNonceStr();

    // 这里参数的顺序要按照 key 值 ASCII 码升序排序
    $string = "jsapi_ticket=$jsapiTicket&noncestr=$nonceStr&timestamp=$timestamp&url=$url";

    $signature = sha1($string);

    $signPackage = array(
      "appId"     => $this->appId,
      "nonceStr"  => $nonceStr,
      "timestamp" => $timestamp,
      "url"       => $url,
      "signature" => $signature,
      "rawString" => $string
    );
    return $signPackage; 
  }

  private function createNonceStr($length = 16) {
    $chars = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789";
    $str = "";
    for ($i = 0; $i < $length; $i++) {
      $str .= substr($chars, mt_rand(0, strlen($chars) - 1), 1);
    }
    return $str;
  }

  private function getJsApiTicket() {
    // jsapi_ticket 应该全局存储与更新,以下代码以写入到文件中做示例
    $data = json_decode(file_get_contents("jsapi_ticket.json"));
    if ($data->expire_time < time()) {
      $accessToken = $this->getAccessToken();
      $url = "https://api.weixin.qq.com/cgi-bin/ticket/getticket?type=jsapi&access_token=$accessToken";
      $res = json_decode($this->httpGet($url));
      $ticket = $res->ticket;
      if ($ticket) {
        $data->expire_time = time() + 7000;
        $data->jsapi_ticket = $ticket;
        $fp = fopen("jsapi_ticket.json", "w");
        fwrite($fp, json_encode($data));
        fclose($fp);
      }
    } else {
      $ticket = $data->jsapi_ticket;
    }

    return $ticket;
  }

  private function getAccessToken() {
    // access_token 应该全局存储与更新,以下代码以写入到文件中做示例
    $data = json_decode(file_get_contents("access_token.json"));
    if ($data->expire_time < time()) {
      $url = "https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential&appid=$this->appId&secret=$this->appSecret";
      $res = json_decode($this->httpGet($url));
      $access_token = $res->access_token;
      if ($access_token) {
        $data->expire_time = time() + 7000;
        $data->access_token = $access_token;
        $fp = fopen("access_token.json", "w");
        fwrite($fp, json_encode($data));
        fclose($fp);
      }
    } else {
      $access_token = $data->access_token;
    }
    return $access_token;
  }

  private function httpGet($url) {
    $curl = curl_init();
    curl_setopt($curl, CURLOPT_RETURNTRANSFER, true);
    curl_setopt($curl, CURLOPT_TIMEOUT, 500);
    curl_setopt($curl, CURLOPT_URL, $url);

    $res = curl_exec($curl);
    curl_close($curl);

    return $res;
  }
}
复制代码

 

二、类调用

复制代码
<?php
require_once "jssdk.php";
$jssdk = new JSSDK("yourAppID", "yourAppSecret");
$signPackage = $jssdk->GetSignPackage();
?>
<!DOCTYPE html>
<html lang="en">
<head>
  <meta charset="UTF-8">
  <title></title>
</head>
<body>
  
</body>
<script src="http://res.wx.qq.com/open/js/jweixin-1.0.0.js"></script>
<script>
  // 注意:所有的JS接口只能在公众号绑定的域名下调用,公众号开发者需要先登录微信公众平台进入“公众号设置”的“功能设置”里填写“JS接口安全域名”。 
  // 如果发现在 Android 不能分享自定义内容,请到官网下载最新的包覆盖安装,Android 自定义分享接口需升级至 6.0.2.58 版本及以上。
  // 完整 JS-SDK 文档地址:http://mp.weixin.qq.com/wiki/7/aaa137b55fb2e0456bf8dd9148dd613f.html
  wx.config({
    appId: '<?php echo $signPackage["appId"];?>',
    timestamp: <?php echo $signPackage["timestamp"];?>,
    nonceStr: '<?php echo $signPackage["nonceStr"];?>',
    signature: '<?php echo $signPackage["signature"];?>',
    jsApiList: [
      // 所有要调用的 API 都要加到这个列表中
    ]
  });
  wx.ready(function () {
    // 在这里调用 API
  });
</script>
</html>
复制代码

 

============================================

分享到:
评论

相关推荐

    Thinkphp3.2对接微信JSAPI支付的微信支付SDK和DEMO

    本文将详细解析如何使用Thinkphp3.2框架对接微信JSAPI支付,以及对应的微信支付SDK和DEMO。 首先,微信JSAPI(JavaScript API)支付是微信支付的一种模式,它允许开发者通过在网页中调用微信的JSAPI接口,实现用户...

    微信jssdk demo php

    微信jssdk demo,填入一些参数就可以使用

    微信H5支付DEMO 绝对可用

    首先,我们来看核心文件`Wxpay.php`,这是微信支付SDK的核心类库,它包含了调用微信支付接口的各种方法。例如,初始化支付参数、生成预支付交易会话标识(prepay_id)、签名生成、统一下单接口调用等。开发者需要...

    php微信分享带图标demo.zip

    1. PHP文件:这些文件通常负责后端逻辑,如生成微信所需的签名(signature)、设置微信JS-SDK的配置参数等。 2. HTML文件:演示如何在网页中引入微信JS-SDK,并调用相应的API实现分享功能。 3. 图标资源:用于自定义...

    微信开发之JS-SDK实现录音、语音识别

    1.JS安全域名配置:登陆微信公众平台:公众号设置 -&gt; 功能设置 -&gt; JS安全域名,域名写到根域名就行,把下载的txt文件放到域名对应的根目录下 2.配置ip白名单 二、微信接口 用到了'startRecord', 'stopRecord', '...

    微信JS-SDK调用扫一扫功能的DEMO

    如何在H5页面调用微信的扫一扫功能来识别二维码。简单实用,新手开发必备,开发微信网页应用,调用JS-SDK扫一扫二维码

    静态页面微信分享php语言demo

    用微信分享JS-SDK,php语言的demo

    tp微信自定义分享功能demo

    将后台获取的签名信息传递给前端,在HTML页面中引入微信JS-SDK的库文件(`wx.js`),然后使用这些信息初始化JS-SDK。接着,你可以调用`onMenuShareTimeline`和`onMenuShareAppMessage`等方法,设置分享的标题、描述...

    微信支付3.3.6demo(php版 + java版)

    - **JSAPI支付接口**:在网页端发起微信支付,通常配合微信JS-SDK使用。 5. **安全策略**: - **敏感信息加密**:如支付密钥不应明文存储,应进行加密处理。 - **防止重放攻击**:对请求进行时间戳验证,避免...

    PHP微信JSSDK标准调用DEMO160416

    配置这两个地方就可以了! //1.在index.php中第3行设置JSSDK参数.......企业号填权限管理中的CorpID和Secret 订阅号和服务号填...微信webApp调用JSSDK需要设置可以可信域名,然后将这个demo上传的可信域名就可以使用了!

    2022-php-服务商支付demo-jsapi-微信支付

    7. **demo样例**:项目中的demo文件夹可能包含了示例代码,这些代码演示了如何使用PHP和JSAPI进行实际的支付操作,比如生成预支付订单、调用微信支付SDK、处理支付回调等。开发者可以通过分析和运行这些示例来学习...

    企业微信-jssdk封装-第三方开发-获取当前页面会话信息

    自己对企业微信jssdk做的一个封装,集成了vConsole和weui,可以方便的获取当前页面的入口环境信息: isWechat //是否微信浏览器 isLoading //是否在loading状态 ... checkResult //微信js接口当前客户端的支持情况

    微信小程序支付demo

    微信小程序支付Demo是一个用于展示如何在微信小程序中实现支付功能的实例,涵盖了多种后端语言的实现,包括Java、PHP、Python和Node.js。这个Demo旨在帮助开发者理解并快速集成微信支付到自己的小程序中,提供了详尽...

    PHP微信JS、扫码支付官方DEMO修改带配置视频教程

    用的微信官方的支付PHP SDK DEMO,视频教程包括微信后台的配置与官方代码修复

    微信小程序----高德地图API实现的DEMO

    在微信小程序中,开发者需要在`app.js`或`index.js`等入口文件引入高德地图的SDK,然后在对应的页面中配置地图组件,调用相应的API方法。例如,初始化地图、设置中心点、添加标记、监听用户位置变化等。 5. **注意...

    微信支付完整demo

    微信支付完整Demo是一个包含了从头至尾实现微信支付功能的所有必要代码和配置的示例项目。这个Demo旨在帮助开发者在自己的应用中集成微信支付服务,避免在开发过程中遇到的种种困难。下面,我们将深入探讨微信支付的...

    微信支付 app demo

    - 在前端(如JavaScript)和后端(如PHP、Node.js)代码中调用微信支付SDK,发起支付请求。 - 处理微信支付返回的结果,如支付成功、失败或取消的回调。 5. **关键API**:在微信支付中,主要涉及以下API: - `...

    C#(asp.net)微信分享功能demo代码(JS-SDK)

    官方文档里只提供了php、java、node.js以及python的示例代码,唯独没有c#版的,为了弥补广大.net用户的需求,我把php版本的示例代码逻辑照搬成了.net版,并在网页前端中加入了分享功能,希望对大家有用.

    微信JSSDK-PHP版,分享朋友圈分享朋友DEMO,js-weixin-1.4.0版,有使用说明

    微信JSSDK(JavaScript SDK)是微信为开发者提供的一个强大工具集,主要用于在网页中集成微信的功能,如分享、支付、扫码等。PHP版的JSSDK则为PHP后端开发者提供了与微信服务器交互的接口,以便获取和验证微信用户的...

    微信公众平台JSSDK .net(C#)版,含demo

    微信公众平台JSSDK .net(C#)版,sdk是从php版翻译过来的,修改了一些使其符合.net平台的特性,含demo

Global site tag (gtag.js) - Google Analytics