小言_互联网的博客

微信分享、极简微信分享、thinkphp微信分享、laravel微信分享、3分钟完成微信分享

382人阅读  评论(0)

目录

安装微信开发SDK - easywechat

 

准备测试公众号 (已有公众号appid secret 且公众号已配置jsapi安全域名的此步骤可以忽略)

 

后端代码

 

前端代码

可能会出现的问题


安装微信开发SDK - easywechat

根据php版本和安装中的因素 选择不同的easywechat版本 https://www.easywechat.com/docs/5.x/installation 文档地址,在这里我用5.0版本

composer require overtrue/wechat:~5.0 -vvv

分享具体参照文档地址 easywechat-jssdk

 

准备测试公众号 (已有公众号appid secret 且公众号已配置jsapi安全域名的此步骤可以忽略)

  1. 登录测试微信公众号
  2. 修改接口配置信息
  3. JS接口安全域名

注意:复制测试公众号的appid与secret 配置完测试公众号的必要参数,务必要将测试分享的微信关注第3步骤的测试公众号,否则分享无效果。

 

后端代码


  
  1. <?php
  2. namespace app\ wx\ controller;
  3. use EasyWeChat\ Factory;
  4. use think\ Controller;
  5. /**
  6. * Thinkphp 5.1
  7. * Class Index
  8. * @package app\wx\controller
  9. */
  10. class Index extends Controller
  11. {
  12. /**
  13. * Notes: 初始化加载分享页面
  14. * User: Jartin
  15. * Url: /index.php/wx/index/index
  16. */
  17. public function index()
  18. {
  19. if ( $this->request->isAjax()) {
  20. $jssdk = $this->getJsapi();
  21. return json([
  22. 'data' => $jssdk
  23. ]);
  24. }
  25. return view();
  26. }
  27. /**
  28. * Notes: 获取分享必要参数
  29. * User: Jartin
  30. */
  31. private function getJsapi()
  32. {
  33. $config = [
  34. 'app_id' => '公众号APPID',
  35. 'secret' => '公众号APPSECRET',
  36. 'token' => '公众号配置的参数token',
  37. // 指定 API 调用返回结果的类型:array(default)/collection/object/raw/自定义类名
  38. 'response_type' => 'array',
  39. 'log' => [
  40. 'level' => 'debug',
  41. 'file' => __DIR__ . '/../../wechat.log',
  42. ],
  43. ];
  44. $app = Factory::officialAccount($config);
  45. $menu = array(
  46. 'updateAppMessageShareData',
  47. 'updateTimelineShareData',
  48. 'onMenuShareTimeline',
  49. 'onMenuShareAppMessage');
  50. // 以下参数的具体释义参考文档 https://www.easywechat.com/docs/5.x/basic-services/jssdk
  51. $jssdk = $app->jssdk->buildConfig($menu, true, false, false);
  52. return $jssdk;
  53. }
  54. /**
  55. * Notes: 微信公众号配置开发域名token验证地址(已验证的忽略该方法)
  56. * User: Jartin
  57. */
  58. public function wx_check()
  59. {
  60. $config = [
  61. 'app_id' => '公众号APPID',
  62. 'secret' => '公众号APPSECRET',
  63. 'token' => '公众号配置的参数token',
  64. // 指定 API 调用返回结果的类型:array(default)/collection/object/raw/自定义类名
  65. 'response_type' => 'array',
  66. 'log' => [
  67. 'level' => 'debug',
  68. 'file' => __DIR__ . '/../../wechat.log',
  69. ],
  70. ];
  71. $app = Factory::officialAccount($config);
  72. $response = $app->server->serve();
  73. $response->send(); // Laravel 里请使用:return $response;
  74. }
  75. }

 

前端代码


  
  1. <!doctype html>
  2. <html lang="en">
  3. <head>
  4. <meta charset="UTF-8">
  5. <meta name="viewport"
  6. content= "width=device-width, user-scalable=no, initial-scale=1.0, maximum-scale=1.0, minimum-scale=1.0">
  7. <meta http-equiv="X-UA-Compatible" content="ie=edge">
  8. <script src="https://cdn.bootcdn.net/ajax/libs/jquery/3.5.1/jquery.js"> </script>
  9. !!!! ↓↓↓↓↓↓ 这个微信分享的js代码版本必须为 1.5.0 否则无效
  10. <script src="http://res.wx.qq.com/open/js/jweixin-1.5.0.js"> </script>
  11. <title>标题 </title>
  12. </head>
  13. <script>
  14. $( document).ready( function () {
  15. $.get( '/wx/index/index', '', function (res) {
  16. wx.config({
  17. debug: true, // 开启调试模式,调用的所有api的返回值会在客户端alert出来。
  18. appId: res.data.appId, // 必填,公众号的唯一标识
  19. timestamp: res.data.timestamp, // 必填,生成签名的时间戳
  20. nonceStr: res.data.nonceStr, // 必填,生成签名的随机串
  21. signature: res.data.signature,
  22. jsApiList:[ 'checkJsApi', 'updateAppMessageShareData', 'updateTimelineShareData']
  23. });
  24. })
  25. wx.ready( function () {
  26. wx.updateAppMessageShareData({
  27. title: '标题',
  28. desc: '描述文字' ,
  29. link: 'http://域名/wx/index/index',
  30. imgUrl: 'https://www.imooc.com/static/img/index/logo2020.png' ,
  31. success: function () {
  32. }
  33. });
  34. wx.updateTimelineShareData({
  35. title: '标题',
  36. desc: '描述文字' ,
  37. link: 'http://域名/wx/index/index',
  38. imgUrl: 'https://www.imooc.com/static/img/index/logo2020.png' ,
  39. type: 'link',
  40. dataUrl: '',
  41. success: function () {
  42. }
  43. });
  44. });
  45. wx.error( function (res) {
  46. console.log( "shareerror")
  47. alert(res.errMsg);
  48. });
  49. })
  50. </script>
  51. <body>
  52. </body>
  53. </html>
  54. No newline at end of file

成功!

 

可能会出现的问题

  1. 旧的前端微信分享sdkjs链接未替换为最新而导致的分享失败
  2. jsApiList列表中的行为不是微信最新分享的行为,要确保列表中有的 wx.方法都有
  3. js代码置后而导致的加载异常导致的分享失败

 

 

 


转载:https://blog.csdn.net/jartins/article/details/110918226
查看评论
* 以上用户言论只代表其个人观点,不代表本网站的观点或立场