微信公众平台JSSDK开发

原文:http://www.cnblogs.com/soundcode/p/5220737.html

根据微信开发文档步骤如下
1.先登录微信公众平台进入“公众号设置”的“功能设置”里填写“JS接口安全域名”。 JS接口安全域名设置 mi.com(前面不用带www/http,域名必须备案过)
2.引入JS文件 在需要调用JS接口的页面引入如下JS文件,(支持https):http://res.wx.qq.com/open/js/jweixin-1.0.0.js
3.通过config接口注入权限验证配置


1

2

3

4

5

6

7

8

wx.config({

    debug: true, // 开启调试模式,调用的所有api的返回值会在客户端alert出来,若要查看传入的参数,可以在pc端打开,参数信息会通过log打出,仅在pc端时才会打印。

    appId: ‘‘// 必填,公众号的唯一标识

    timestamp: , // 必填,生成签名的时间戳

    nonceStr: ‘‘// 必填,生成签名的随机串

    signature: ‘‘,// 必填,签名,见附录1

    jsApiList: [] // 必填,需要使用的JS接口列表,所有JS接口列表见附录2

});

4.通过ready接口处理成功验证


1

2

3

4

wx.ready(function(){

    // config信息验证后会执行ready方法,所有接口调用都必须在config接口获得结果之后,config是一个客户端的异步操作,所以如果需要在页面加载时就调用相关接口,则须把相关接口放在ready函数中调用来确保正确执行。对于用户触发时才调用的接口,则可以直接调用,不需要放在ready函数中。

});

5.通过error接口处理失败验证,测试时可以先不用这个


1

2

3

4

5

wx.error(function(res){

    // config信息验证失败会执行error函数,如签名过期导致验证失败,具体错误信息可以打开config的debug模式查看,也可以在返回的res参数中查看,对于SPA可以在这里更新签名。

});

JS-SDK网页所有接口代码如下:


1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

36

37

38

39

40

41

42

43

44

45

46

47

48

49

50

51

52

53

54

55

56

57

58

59

60

61

62

63

64

65

66

67

68

69

70

71

72

73

74

75

76

77

78

79

80

81

82

83

84

85

86

87

88

89

90

91

92

93

94

95

96

97

98

99

100

101

102

103

104

105

106

107

108

109

110

111

112

113

114

115

116

117

118

119

120

121

122

123

124

125

126

127

128

129

130

131

132

133

134

135

136

137

138

139

140

141

142

143

144

145

146

147

148

149

150

151

152

153

154

155

156

157

158

159

160

161

162

163

164

165

166

167

168

169

170

171

172

173

174

175

176

177

178

179

180

181

182

183

184

185

186

187

188

189

190

191

192

193

194

195

196

197

198

199

200

201

202

203

204

205

206

207

208

209

210

211

212

213

214

215

216

217

218

219

220

221

222

223

224

225

226

227

228

229

230

231

232

233

234

235

236

237

238

239

240

241

242

243

244

245

246

247

248

249

250

251

252

253

254

255

256

257

258

259

260

261

262

263

264

265

266

267

268

269

270

271

272

273

274

275

276

277

278

279

280

281

282

283

284

285

286

287

288

289

290

291

292

293

294

295

296

297

298

299

300

301

302

303

304

305

306

307

308

309

310

311

312

313

314

315

316

317

318

319

320

321

322

323

324

325

326

327

328

329

330

331

332

333

334

335

336

337

338

339

340

341

342

343

344

345

346

347

348

349

350

351

352

353

354

355

356

357

358

359

360

361

362

363

364

365

366

367

368

369

370

371

372

373

374

375

376

377

378

379

380

381

382

383

384

385

386

387

388

389

390

391

392

393

394

395

396

397

398

399

400

401

402

403

404

405

406

407

408

409

410

411

412

413

414

415

416

417

418

419

420

421

422

423

424

425

426

427

428

429

430

431

432

433

434

435

436

437

438

439

440

441

442

443

444

445

446

447

448

449

450

451

452

453

454

455

456

457

458

459

460

461

462

463

464

465

466

467

468

469

470

471

472

473

474

475

476

477

478

479

480

481

482

483

484

485

486

487

488

489

490

491

492

493

494

495

496

497

498

499

500

501

502

503

504

505

506

507

508

509

510

511

512

513

514

515

516

517

518

519

520

521

522

523

524

525

526

527

528

529

530

531

532

533

534

535

536

537

538

539

540

541

542

543

544

545

546

547

548

549

550

551

552

553

554

555

556

557

558

559

560

561

562

563

564

565

566

567

568

569

570

571

572

573

574

575

576

577

578

579

580

581

582

583

584

585

586

587

588

589

590

591

592

593

594

595

596

597

598

599

600

601

602

603

604

605

606

607

608

609

610

611

612

613

614

615

616

617

618

619

620

621

622

623

624

625

626

627

628

629

630

631

632

633

634

635

636

637

638

639

640

641

642

643

644

645

646

647

648

649

650

651

652

653

654

655

656

657

658

659

660

661

662

663

664

665

666

667

668

669

670

671

672

673

674

675

676

677

678

679

680

681

682

683

684

685

686

687

688

<?php

require_once "jssdk.php";

$jssdk new JSSDK("wx46c6ccb293dfsda5fd""e5e7ad8f4b068f118939f2cec0bc98394d");   //APPID和SECRET

$signPackage $jssdk->GetSignPackage();

?>

<!DOCTYPE html>

<html>

<head>

  <meta charset="utf-8">

  <title>微信JS-SDK Demo</title>

  <meta name="viewport" content="width=device-width, initial-scale=1, user-scalable=0">

   <link rel="stylesheet" href="http://demo.open.weixin.qq.com/jssdk/css/style.css?ts=1420774989">   

</head>

<body>

<div class="wxapi_container">

    <div class="wxapi_index_container">

      <ul class="label_box lbox_close wxapi_index_list">

        <li class="label_item wxapi_index_item"><a class="label_inner" href="#menu-basic">基础接口</a></li>

        <li class="label_item wxapi_index_item"><a class="label_inner" href="#menu-share">分享接口</a></li>

        <li class="label_item wxapi_index_item"><a class="label_inner" href="#menu-image">图像接口</a></li>

        <li class="label_item wxapi_index_item"><a class="label_inner" href="#menu-voice">音频接口</a></li>

        <li class="label_item wxapi_index_item"><a class="label_inner" href="#menu-smart">智能接口</a></li>

        <li class="label_item wxapi_index_item"><a class="label_inner" href="#menu-device">设备信息接口</a></li>

        <li class="label_item wxapi_index_item"><a class="label_inner" href="#menu-location">地理位置接口</a></li>

        <li class="label_item wxapi_index_item"><a class="label_inner" href="#menu-webview">界面操作接口</a></li>

        <li class="label_item wxapi_index_item"><a class="label_inner" href="#menu-scan">微信扫一扫接口</a></li>

        <li class="label_item wxapi_index_item"><a class="label_inner" href="#menu-shopping">微信小店接口</a></li>

        <li class="label_item wxapi_index_item"><a class="label_inner" href="#menu-card">微信卡券接口</a></li>

        <li class="label_item wxapi_index_item"><a class="label_inner" href="#menu-pay">微信支付接口</a></li>

      </ul>

    </div>

    <div class="lbox_close wxapi_form">

      <h3 id="menu-basic">基础接口</h3>

      判断当前客户端是否支持指定JS接口

      <button class="btn btn_primary" id="checkJsApi">checkJsApi</button>

      <h3 id="menu-share">分享接口</h3>

      获取“分享到朋友圈”按钮点击状态及自定义分享内容接口

      <button class="btn btn_primary" id="onMenuShareTimeline">onMenuShareTimeline</button>

      获取“分享给朋友”按钮点击状态及自定义分享内容接口

      <button class="btn btn_primary" id="onMenuShareAppMessage">onMenuShareAppMessage</button>

      获取“分享到QQ”按钮点击状态及自定义分享内容接口

      <button class="btn btn_primary" id="onMenuShareQQ">onMenuShareQQ</button>

      获取“分享到腾讯微博”按钮点击状态及自定义分享内容接口

      <button class="btn btn_primary" id="onMenuShareWeibo">onMenuShareWeibo</button>

      <h3 id="menu-image">图像接口</h3>

      拍照或从手机相册中选图接口

      <button class="btn btn_primary" id="chooseImage">chooseImage</button>

      预览图片接口

      <button class="btn btn_primary" id="previewImage">previewImage</button>

      上传图片接口

      <button class="btn btn_primary" id="uploadImage">uploadImage</button>

      下载图片接口

      <button class="btn btn_primary" id="downloadImage">downloadImage</button>

      <h3 id="menu-voice">音频接口</h3>

      开始录音接口

      <button class="btn btn_primary" id="startRecord">startRecord</button>

      停止录音接口

      <button class="btn btn_primary" id="stopRecord">stopRecord</button>

      播放语音接口

      <button class="btn btn_primary" id="playVoice">playVoice</button>

      暂停播放接口

      <button class="btn btn_primary" id="pauseVoice">pauseVoice</button>

      停止播放接口

      <button class="btn btn_primary" id="stopVoice">stopVoice</button>

      上传语音接口

      <button class="btn btn_primary" id="uploadVoice">uploadVoice</button>

      下载语音接口

      <button class="btn btn_primary" id="downloadVoice">downloadVoice</button>

      <h3 id="menu-smart">智能接口</h3>

      识别音频并返回识别结果接口

      <button class="btn btn_primary" id="translateVoice">translateVoice</button>

      <h3 id="menu-device">设备信息接口</h3>

      获取网络状态接口

      <button class="btn btn_primary" id="getNetworkType">getNetworkType</button>

      <h3 id="menu-location">地理位置接口</h3>

      使用微信内置地图查看位置接口

      <button class="btn btn_primary" id="openLocation">openLocation</button>

      获取地理位置接口

      <button class="btn btn_primary" id="getLocation">getLocation</button>

      <h3 id="menu-webview">界面操作接口</h3>

      隐藏右上角菜单接口

      <button class="btn btn_primary" id="hideOptionMenu">hideOptionMenu</button>

      显示右上角菜单接口

      <button class="btn btn_primary" id="showOptionMenu">showOptionMenu</button>

      关闭当前网页窗口接口

      <button class="btn btn_primary" id="closeWindow">closeWindow</button>

      批量隐藏功能按钮接口

      <button class="btn btn_primary" id="hideMenuItems">hideMenuItems</button>

      批量显示功能按钮接口

      <button class="btn btn_primary" id="showMenuItems">showMenuItems</button>

      隐藏所有非基础按钮接口

      <button class="btn btn_primary" id="hideAllNonBaseMenuItem">hideAllNonBaseMenuItem</button>

      显示所有功能按钮接口

      <button class="btn btn_primary" id="showAllNonBaseMenuItem">showAllNonBaseMenuItem</button>

      <h3 id="menu-scan">微信扫一扫</h3>

      调起微信扫一扫接口

      <button class="btn btn_primary" id="scanQRCode0">scanQRCode(微信处理结果)</button>

      <button class="btn btn_primary" id="scanQRCode1">scanQRCode(直接返回结果)</button>

      <h3 id="menu-shopping">微信小店接口</h3>

      跳转微信商品页接口

      <button class="btn btn_primary" id="openProductSpecificView">openProductSpecificView</button>

      <h3 id="menu-card">微信卡券接口</h3>

      批量添加卡券接口

      <button class="btn btn_primary" id="addCard">addCard</button>

      调起适用于门店的卡券列表并获取用户选择列表

      <button class="btn btn_primary" id="chooseCard">chooseCard</button>

      查看微信卡包中的卡券接口

      <button class="btn btn_primary" id="openCard">openCard</button>

      <h3 id="menu-pay">微信支付接口</h3>

      发起一个微信支付请求

      <button class="btn btn_primary" id="chooseWXPay">chooseWXPay</button>

    </div>

  </div>

</body>

<!--步骤二:引入JS文件  -->

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

<script>

 

    //步骤三:通过config接口注入权限验证配置

  wx.config({

      debug: false,

      appId: ‘<?php echo $signPackage["appId"];?>‘,

      timestamp: <?php echo $signPackage["timestamp"];?>,

      nonceStr: ‘<?php echo $signPackage["nonceStr"];?>‘,

      signature: ‘<?php echo $signPackage["signature"];?>‘,

      jsApiList: [

        ‘checkJsApi‘,

        ‘onMenuShareTimeline‘,

        ‘onMenuShareAppMessage‘,

        ‘onMenuShareQQ‘,

        ‘onMenuShareWeibo‘,

        ‘hideMenuItems‘,

        ‘showMenuItems‘,

        ‘hideAllNonBaseMenuItem‘,

        ‘showAllNonBaseMenuItem‘,

        ‘translateVoice‘,

        ‘startRecord‘,

        ‘stopRecord‘,

        ‘onRecordEnd‘,

        ‘playVoice‘,

        ‘pauseVoice‘,

        ‘stopVoice‘,

        ‘uploadVoice‘,

        ‘downloadVoice‘,

        ‘chooseImage‘,

        ‘previewImage‘,

        ‘uploadImage‘,

        ‘downloadImage‘,

        ‘getNetworkType‘,

        ‘openLocation‘,

        ‘getLocation‘,

        ‘hideOptionMenu‘,

        ‘showOptionMenu‘,

        ‘closeWindow‘,

        ‘scanQRCode‘,

        ‘chooseWXPay‘,

        ‘openProductSpecificView‘,

        ‘addCard‘,

        ‘chooseCard‘,

        ‘openCard‘

      ]

  });

</script>

<script>

//步骤四:通过ready接口处理成功验证

wx.ready(function () {

  // 1 判断当前版本是否支持指定 JS 接口,支持批量判断

  document.querySelector(‘#checkJsApi‘).onclick = function () {

    wx.checkJsApi({

      jsApiList: [

        ‘getNetworkType‘,

        ‘previewImage‘

      ],

      success: function (res) {

        alert(JSON.stringify(res));

      }

    });

  };

  // 2. 分享接口

  // 2.1 监听“分享给朋友”,按钮点击、自定义分享内容及分享结果接口

  document.querySelector(‘#onMenuShareAppMessage‘).onclick = function () {

    wx.onMenuShareAppMessage({

      title: ‘<a mcolored="true" href="http://www.it165.net/news/nhlw/" target="_blank" class="keylink">互联网</a>之子‘,

      desc: ‘在长大的过程中,我才慢慢发现,我身边的所有事,别人跟我说的所有事,那些所谓本来如此,注定如此的事,它们其实没有非得如此,事情是可以改变的。更重要的是,有些事既然错了,那就该做出改变。‘,

      link: http://movie.douban.com/subject/25785114/,

      imgUrl: http://demo.open.weixin.qq.com/jssdk/images/p2166127561.jpg,

      trigger: function (res) {

        // 不要尝试在trigger中使用ajax异步请求修改本次分享的内容,因为客户端分享操作是一个同步操作,这时候使用ajax的回包会还没有返回

        alert(‘用户点击发送给朋友‘);

      },

      success: function (res) {

        alert(‘已分享‘);

      },

      cancel: function (res) {

        alert(‘已取消‘);

      },

      fail: function (res) {

        alert(JSON.stringify(res));

      }

    });

    alert(‘已注册获取“发送给朋友”状态事件‘);

  };

  // 2.2 监听“分享到朋友圈”按钮点击、自定义分享内容及分享结果接口

  document.querySelector(‘#onMenuShareTimeline‘).onclick = function () {

    wx.onMenuShareTimeline({

      title: ‘<a mcolored="true" href="http://www.it165.net/news/nhlw/" target="_blank" class="keylink">互联网</a>之子‘,

      link: http://movie.douban.com/subject/25785114/,

      imgUrl: http://demo.open.weixin.<a mcolored="true" href="http://www.it165.net/qq/" target="_blank" class="keylink">qq</a>.com/jssdk/images/p2166127561.jpg‘,

      trigger: function (res) {

        // 不要尝试在trigger中使用ajax异步请求修改本次分享的内容,因为客户端分享操作是一个同步操作,这时候使用ajax的回包会还没有返回

        alert(‘用户点击分享到朋友圈‘);

      },

      success: function (res) {

        alert(‘已分享‘);

      },

      cancel: function (res) {

        alert(‘已取消‘);

      },

      fail: function (res) {

        alert(JSON.stringify(res));

      }

    });

    alert(‘已注册获取“分享到朋友圈”状态事件‘);

  };

  // 2.3 监听“分享到QQ”按钮点击、自定义分享内容及分享结果接口

  document.querySelector(‘#onMenuShareQQ‘).onclick = function () {

    wx.onMenuShareQQ({

      title: ‘互联网之子‘,

      desc: ‘在长大的过程中,我才慢慢发现,我身边的所有事,别人跟我说的所有事,那些所谓本来如此,注定如此的事,它们其实没有非得如此,事情是可以改变的。更重要的是,有些事既然错了,那就该做出改变。‘,

      link: http://movie.douban.com/subject/25785114/,

      imgUrl: http://img3.douban.com/view/movie_poster_cover/spst/public/p2166127561.jpg,

      trigger: function (res) {

        alert(‘用户点击分享到QQ‘);

      },

      complete: function (res) {

        alert(JSON.stringify(res));

      },

      success: function (res) {

        alert(‘已分享‘);

      },

      cancel: function (res) {

        alert(‘已取消‘);

      },

      fail: function (res) {

        alert(JSON.stringify(res));

      }

    });

    alert(‘已注册获取“分享到 QQ”状态事件‘);

  };

  

  // 2.4 监听“分享到微博”按钮点击、自定义分享内容及分享结果接口

  document.querySelector(‘#onMenuShareWeibo‘).onclick = function () {

    wx.onMenuShareWeibo({

      title: ‘互联网之子‘,

      desc: ‘在长大的过程中,我才慢慢发现,我身边的所有事,别人跟我说的所有事,那些所谓本来如此,注定如此的事,它们其实没有非得如此,事情是可以改变的。更重要的是,有些事既然错了,那就该做出改变。‘,

      link: http://movie.douban.com/subject/25785114/,

      imgUrl: http://img3.douban.com/view/movie_poster_cover/spst/public/p2166127561.jpg,

      trigger: function (res) {

        alert(‘用户点击分享到微博‘);

      },

      complete: function (res) {

        alert(JSON.stringify(res));

      },

      success: function (res) {

        alert(‘已分享‘);

      },

      cancel: function (res) {

        alert(‘已取消‘);

      },

      fail: function (res) {

        alert(JSON.stringify(res));

      }

    });

    alert(‘已注册获取“分享到微博”状态事件‘);

  };

  // 3 智能接口

  var voice = {

    localId: ‘‘,

    serverId: ‘‘

  };

  // 3.1 识别音频并返回识别结果

  document.querySelector(‘#translateVoice‘).onclick = function () {

    if (voice.localId == ‘‘) {

      alert(‘请先使用 startRecord 接口录制一段声音‘);

      return;

    }

    wx.translateVoice({

      localId: voice.localId,

      complete: function (res) {

        if (res.hasOwnProperty(‘translateResult‘)) {

          alert(‘识别结果:‘ + res.translateResult);

        else {

          alert(‘无法识别‘);

        }

      }

    });

  };

  // 4 音频接口

  // 4.2 开始录音

  document.querySelector(‘#startRecord‘).onclick = function () {

    wx.startRecord({

      cancel: function () {

        alert(‘用户拒绝授权录音‘);

      }

    });

  };

  // 4.3 停止录音

  document.querySelector(‘#stopRecord‘).onclick = function () {

    wx.stopRecord({

      success: function (res) {

        voice.localId = res.localId;

      },

      fail: function (res) {

        alert(JSON.stringify(res));

      }

    });

  };

  // 4.4 监听录音自动停止

  wx.onVoiceRecordEnd({

    complete: function (res) {

      voice.localId = res.localId;

      alert(‘录音时间已超过一分钟‘);

    }

  });

  // 4.5 播放音频

  document.querySelector(‘#playVoice‘).onclick = function () {

    if (voice.localId == ‘‘) {

      alert(‘请先使用 startRecord 接口录制一段声音‘);

      return;

    }

    wx.playVoice({

      localId: voice.localId

    });

  };

  // 4.6 暂停播放音频

  document.querySelector(‘#pauseVoice‘).onclick = function () {

    wx.pauseVoice({

      localId: voice.localId

    });

  };

  // 4.7 停止播放音频

  document.querySelector(‘#stopVoice‘).onclick = function () {

    wx.stopVoice({

      localId: voice.localId

    });

  };

  // 4.8 监听录音播放停止

  wx.onVoicePlayEnd({

    complete: function (res) {

      alert(‘录音(‘ + res.localId + ‘)播放结束‘);

    }

  });

  // 4.8 上传语音

  document.querySelector(‘#uploadVoice‘).onclick = function () {

    if (voice.localId == ‘‘) {

      alert(‘请先使用 startRecord 接口录制一段声音‘);

      return;

    }

    wx.uploadVoice({

      localId: voice.localId,

      success: function (res) {

        alert(‘上传语音成功,serverId 为‘ + res.serverId);

        voice.serverId = res.serverId;

      }

    });

  };

  // 4.9 下载语音

  document.querySelector(‘#downloadVoice‘).onclick = function () {

    if (voice.serverId == ‘‘) {

      alert(‘请先使用 uploadVoice 上传声音‘);

      return;

    }

    wx.downloadVoice({

      serverId: voice.serverId,

      success: function (res) {

        alert(‘下载语音成功,localId 为‘ + res.localId);

        voice.localId = res.localId;

      }

    });

  };

  // 5 图片接口

  // 5.1 拍照、本地选图

  var images = {

    localId: [],

    serverId: []

  };

  document.querySelector(‘#chooseImage‘).onclick = function () {

    wx.chooseImage({

      success: function (res) {

        images.localId = res.localIds;

        alert(‘已选择 ‘ + res.localIds.length + ‘ 张图片‘);

      }

    });

  };

  // 5.2 图片预览

  document.querySelector(‘#previewImage‘).onclick = function () {

    wx.previewImage({

      current: http://img5.douban.com/view/photo/photo/public/p1353993776.jpg,

      urls: [

        http://img3.douban.com/view/photo/photo/public/p2152117150.jpg,

        http://img5.douban.com/view/photo/photo/public/p1353993776.jpg,

        http://img3.douban.com/view/photo/photo/public/p2152134700.jpg

      ]

    });

  };

  // 5.3 上传图片

  document.querySelector(‘#uploadImage‘).onclick = function () {

    if (images.localId.length == 0) {

      alert(‘请先使用 chooseImage 接口选择图片‘);

      return;

    }

    var i = 0, length = images.localId.length;

    images.serverId = [];

    function upload() {

      wx.uploadImage({

        localId: images.localId[i],

        success: function (res) {

          i++;

          alert(‘已上传:‘ + i + ‘/‘ + length);

          images.serverId.push(res.serverId);

          if (i < length) {

            upload();

          }

        },

        fail: function (res) {

          alert(JSON.stringify(res));

        }

      });

    }

    upload();

  };

  // 5.4 下载图片

  document.querySelector(‘#downloadImage‘).onclick = function () {

    if (images.serverId.length === 0) {

      alert(‘请先使用 uploadImage 上传图片‘);

      return;

    }

    var i = 0, length = images.serverId.length;

    images.localId = [];

    function download() {

      wx.downloadImage({

        serverId: images.serverId[i],

        success: function (res) {

          i++;

          alert(‘已下载:‘ + i + ‘/‘ + length);

          images.localId.push(res.localId);

          if (i < length) {

            download();

          }

        }

      });

    }

    download();

  };

  // 6 设备信息接口

  // 6.1 获取当前网络状态

  document.querySelector(‘#getNetworkType‘).onclick = function () {

    wx.getNetworkType({

      success: function (res) {

        alert(res.networkType);

      },

      fail: function (res) {

        alert(JSON.stringify(res));

      }

    });

  };

  // 7 地理位置接口

  // 7.1 查看地理位置

  document.querySelector(‘#openLocation‘).onclick = function () {

    wx.openLocation({

      latitude: 23.099994,

      longitude: 113.324520,

      name: ‘TIT 创意园‘,

      address: ‘广州市海珠区新港中路 397 号‘,

      scale: 14,

      infoUrl: http://weixin.<a mcolored="true" href="http://www.it165.net/qq/" target="_blank" class="keylink">qq</a>.com‘

    });

  };

  // 7.2 获取当前地理位置

  document.querySelector(‘#getLocation‘).onclick = function () {

    wx.getLocation({

      success: function (res) {

        alert(JSON.stringify(res));

      },

      cancel: function (res) {

        alert(‘用户拒绝授权获取地理位置‘);

      },

      fail: function (res) {

          alert(JSON.stringify(res));

        }

    });

  };

  // 8 界面操作接口

  // 8.1 隐藏右上角菜单

  document.querySelector(‘#hideOptionMenu‘).onclick = function () {

    wx.hideOptionMenu();

  };

  // 8.2 显示右上角菜单

  document.querySelector(‘#showOptionMenu‘).onclick = function () {

    wx.showOptionMenu();

  };

  // 8.3 批量隐藏菜单项

  document.querySelector(‘#hideMenuItems‘).onclick = function () {

    wx.hideMenuItems({

      menuList: [

        ‘menuItem:readMode‘// 阅读模式

        ‘menuItem:share:timeline‘// 分享到朋友圈

        ‘menuItem:copyUrl‘ // 复制链接

      ],

      success: function (res) {

        alert(‘已隐藏“阅读模式”,“分享到朋友圈”,“复制链接”等按钮‘);

      },

      fail: function (res) {

        alert(JSON.stringify(res));

      }

    });

  };

  // 8.4 批量显示菜单项

  document.querySelector(‘#showMenuItems‘).onclick = function () {

    wx.showMenuItems({

      menuList: [

        ‘menuItem:readMode‘// 阅读模式

        ‘menuItem:share:timeline‘// 分享到朋友圈

        ‘menuItem:copyUrl‘ // 复制链接

      ],

      success: function (res) {

        alert(‘已显示“阅读模式”,“分享到朋友圈”,“复制链接”等按钮‘);

      },

      fail: function (res) {

        alert(JSON.stringify(res));

      }

    });

  };

  // 8.5 隐藏所有非基本菜单项

  document.querySelector(‘#hideAllNonBaseMenuItem‘).onclick = function () {

    wx.hideAllNonBaseMenuItem({

      success: function () {

        alert(‘已隐藏所有非基本菜单项‘);

      }

    });

  };

  // 8.6 显示所有被隐藏的非基本菜单项

  document.querySelector(‘#showAllNonBaseMenuItem‘).onclick = function () {

    wx.showAllNonBaseMenuItem({

      success: function () {

        alert(‘已显示所有非基本菜单项‘);

      }

    });

  };

  // 8.7 关闭当前窗口

  document.querySelector(‘#closeWindow‘).onclick = function () {

    wx.closeWindow();

  };

  // 9 微信原生接口

  // 9.1.1 扫描二维码并返回结果

  document.querySelector(‘#scanQRCode0‘).onclick = function () {

    wx.scanQRCode();

  };

  // 9.1.2 扫描二维码并返回结果

  document.querySelector(‘#scanQRCode1‘).onclick = function () {

    wx.scanQRCode({

      needResult: 1,

      desc: ‘scanQRCode desc‘,

      success: function (res) {

        alert(JSON.stringify(res));

      }

    });

  };

  // 10 微信支付接口

  // 10.1 发起一个支付请求

  document.querySelector(‘#chooseWXPay‘).onclick = function () {

    // 注意:此 Demo 使用 2.7 版本支付接口实现,建议使用此接口时参考微信支付相关最新文档。

    wx.chooseWXPay({

      timestamp: 1414723227,

      nonceStr: ‘noncestr‘,

      package: ‘addition=action_id%3dgaby1234%26limit_pay%3d&bank_type=WX&body=innertest&fee_type=1&input_charset=GBK?ify_url=http%3A%2F%2F120.204.206.246%2Fcgi-bin%2Fmmsupport-bin%2Fnotifypay&out_trade_no=1414723227818375338&partner=1900000109&spbill_create_ip=127.0.0.1&total_fee=1&sign=432B647FE95C7BF73BCD177CEECBEF8D‘,

      signType: ‘SHA1‘// 注意:新版支付接口使用 MD5 加密

      paySign: ‘bd5b1933cda6e9548862944836a9b52e8c9a2b69‘

    });

  };

  // 11.3  跳转微信商品页

  document.querySelector(‘#openProductSpecificView‘).onclick = function () {

    wx.openProductSpecificView({

      productId: ‘pDF3iY_m2M7EQ5EKKKWd95kAxfNw‘

    });

  };

  // 12 微信卡券接口

  // 12.1 添加卡券

  document.querySelector(‘#addCard‘).onclick = function () {

    wx.addCard({

      cardList: [

        {

          cardId: ‘pDF3iY9tv9zCGCj4jTXFOo1DxHdo‘,

          cardExt: ‘{"code": "", "openid": "", "timestamp": "1418301401", "signature":"64e6a7cc85c6e84b726f2d1cbef1b36e9b0f9750"}‘

        },

        {

          cardId: ‘pDF3iY9tv9zCGCj4jTXFOo1DxHdo‘,

          cardExt: ‘{"code": "", "openid": "", "timestamp": "1418301401", "signature":"64e6a7cc85c6e84b726f2d1cbef1b36e9b0f9750"}‘

        }

      ],

      success: function (res) {

        alert(‘已添加卡券:‘ + JSON.stringify(res.cardList));

      }

    });

  };

  // 12.2 选择卡券

  document.querySelector(‘#chooseCard‘).onclick = function () {

    wx.chooseCard({

      cardSign: ‘97e9c5e58aab3bdf6fd6150e599d7e5806e5cb91‘,

      timestamp: 1417504553,

      nonceStr: ‘k0hGdSXKZEj3Min5‘,

      success: function (res) {

        alert(‘已选择卡券:‘ + JSON.stringify(res.cardList));

      }

    });

  };

  // 12.3 查看卡券

  document.querySelector(‘#openCard‘).onclick = function () {

    alert(‘您没有该公众号的卡券无法打开卡券。‘);

    wx.openCard({

      cardList: [

      ]

    });

  };

  var shareData = {

    title: ‘微信JS-SDK Demo‘,

    desc: ‘微信JS-SDK,帮助第三方为用户提供更优质的移动web服务‘,

    link: http://demo.open.weixin.qq.com/jssdk/,

    imgUrl: http://mmbiz.qpic.cn/mmbiz/icTdbqWNOwNRt8Qia4lv7k3M9J1SKqKCImxJCt7j9rHYicKDI45jRPBxdzdyREWnk0ia0N5TMnMfth7SdxtzMvVgXg/0

  };

  wx.onMenuShareAppMessage(shareData);

  wx.onMenuShareTimeline(shareData);

});

wx.error(function (res) {

  alert(res.errMsg);

});

</script>

</html>

注:上面的url变量一定得在前面微信公众平台设置的mi.com下的网址,即这个有JS-SDK功能的网页要放在mi.com下,要不然会出错。

时间: 2024-10-18 03:26:43

微信公众平台JSSDK开发的相关文章

微信公众平台网页开发实战--3.利用JSSDK在网页中获取地理位置(HTML5+jQuery)

复制一份JSSDK环境,创建一份index.html文件,结构如图7.1所示. 图7.1  7.1节文件结构 在location.js中,封装“getLocation”接口,如下: 01 wxJSSDK.location = function(locationApi){ 02 if(wxJSSDK.isReady){ //wxJSSDK.isReady 查看微信JSSDK是否初始化完毕 03 if(locationApi){ 04 locationApi.getLocation && wx

微信公众平台网页开发实战--1.微信分享一个网页到朋友圈

对微信的JSSDK进行封装一下,创建一份类似的文件结构,增加index.html与shareApi.js文件,结构如图3.3所示. 图3.3  3.2节文件结构 另外,提醒读者一下,wxJSSDK.js文件的JSSDK环境配置中,需要更改一下配置参数,代码如下: 01 jsApiList: [ // 其他代码略 02 "onMenuShareTimeline", 03 "onMenuShareAppMessage", 04 "onMenuShareQQ&q

微信公众平台网页开发实战--2.从手机相册中选照片然后分享

通过对需求的了解,可以将其分解为: (1)微信端手机用户,可以使用微信的JSSDK. (2)选取图片,使用JSSDK的“chooseImage”,由于分享图片时本地地址无法分享,因此还需要JSSDK的“uploadImage”. (3)分享到朋友圈,需要JSSDK的“onMenuShareTimeline”. 综合起来,业务逻辑如图4.5所示. 图4.5  业务逻辑结构图 首先将JSSDK的环境复制一份到本节目录下,创建index.html文件.imageSharing.js文件,目录结构如图4

第三方平台正式支持接入微信公众平台JS-SDK

之前微信公众平台面向开发者开放微信内网页开发工具包,现在第三方平台也能正式支持接入微信公众平台JS-SDK了,第三方平台可以在获得公众号的授权后,通过JS-SDK帮助公众号开发和实现网页业务. 公众号第三方平台支持JS-SDK接入FAQ(常见问题)如下: 公众号第三方平台是什么? 针对各行各业公众号的行业共性需求,第三方开发团队可以在自身熟悉的行业和领域内搭建公众号第三方平台,为公众号提供行业解决方案或功能优化方案,如电商行业的公众号商城解决方案.客户管理的功能优化方案等. 如何成为公众号第三方

微信公众平台功能开发(生成带参数的二维码)

为了满足用户渠道推广分析的需要,公众平台提供了生成带参数二维码的接口.使用该接口可以获得多个带不同场景值的二维码,用户扫描后,公众号可以接收到事件推送. 目前有2种类型的二维码,分别是临时二维码和永久二维码,前者有过期时间,最大为1800秒,但能够生成较多数量,后者无过期时间,数量较少(目前参数只支持1--100000).两种二维码分别适用于帐号绑定.用户来源统计等场景. 用户扫描带场景值二维码时,可能推送以下两种事件: 如果用户还未关注公众号,则用户可以关注公众号,关注后微信会将带场景值关注事

【课程分享】深入浅出微信公众平台实战开发(微网站、LBS云、Api接口调用、服务号高级接口)

深入浅出微信公众平台实战开发(微网站.LBS云.Api接口调用.服务号高级接口) 课程下载地址:链接:http://pan.baidu.com/share/link?shareid=2214724072&uk=3611155194 密码:glvc 一.本课程是怎么样的一门课程(全面介绍) 1.1.课程的背景 微信公众平台的火热程度已经不用多言,无论是个人还是企业,政府还是商家,都已经开始搭建微信公众平台,微信的作用已经被各界人士认可.微信公众平台的技术需求市场缺口巨大. 1.2.课程内容简介 本

微名汇-微信公众平台功能开发(天气查询)

在这篇教程中,我们将介绍如何在微信公众平台上开发天气预报功能.我们将使用中国天气网的气象数据接口来获取天气信息 这篇教程将介绍以下内容: 获取中国天气网的气象数据 在微信公众平台中回复天气 微名汇:http://weixin.zgtuango.com 联系QQ:44653139 一.中国天气网 中国天气网提供了丰富的气象数据接口.下面我们介绍主要的几个: 国家根节点接口: http://flash.weather.com.cn/wmaps/xml/china.xml 该接口以XML格式列出所有的

微信公众平台深度开发JAVA版第二季视频教程

微信公众平台深度开发JAVA版第二季(九宝饭店微信点餐系统)视频教程下载密码:qa4a     联系QQ:1026270010 微信作为当前流行的通信社交软件有了上亿的用户量,几乎每一个只能手机都要安装微信.但是,市场上对于JAVA开发微信公众平台的资料却少之又少,多数的资料一般是其他语言的.因此,主讲老师经过潜心研究.认真准备,录制了这套针对JAVA开发语言的微信公众平台开发教程. 1.课程研发环境 开发语言:JAVA WEBServer:TOMAT DATABASE:MySQL 开发工具:m

【课程分享】ASP.NET MVC5&amp;amp;微信公众平台整合开发实战(响应式布局、JQuery Mobile,Windows Azure、微信核心开发)

对这个课程有兴趣的,能够联系我QQ2748165793 基础知识储备 ASP.NET MVC 5基础(6讲) 第一讲-初识ASP.NET MVC并搭建整合开发环境 第二讲-深入MVC开发模式 第三讲-C#核心语言特性 第四讲-C#核心语言特性(二) 第五讲-视图引擎Razor 第六讲-MVC核心工具 实战演练(11讲) 第七讲-体育商店(一):项目架构 第八讲-体育商店(二):数据库创建和訪问 第九讲-体育商店(三):分页和样式 第十讲-体育商店(四):布局和导航 第十一讲-体育商店(五):购物