Commit 25cb172d by xuzhenghua

微信分享

parent 8267a5da
...@@ -5,7 +5,7 @@ import { connect } from "react-redux"; ...@@ -5,7 +5,7 @@ import { connect } from "react-redux";
import { setCurrentUser, startFetchUser } from "@/store/userAction"; import { setCurrentUser, startFetchUser } from "@/store/userAction";
import { withRouter } from 'react-router-dom' import { withRouter } from 'react-router-dom'
import { compose } from 'redux' import { compose } from 'redux'
import { getParam, http } from "@/utils"; import { getParam, http, browser } from "@/utils";
import { Toast } from "antd-mobile"; import { Toast } from "antd-mobile";
import { addDays } from 'date-fns' import { addDays } from 'date-fns'
...@@ -41,6 +41,10 @@ class App extends Component { ...@@ -41,6 +41,10 @@ class App extends Component {
//平台信息 //平台信息
cookie.set('plat', '5', {domain: '.julyedu.com'}) cookie.set('plat', '5', {domain: '.julyedu.com'})
if (browser.isWeixin && browser.isIOS) {
sessionStorage.setItem('enter_url', window.location.href)
}
this.props.startFetchUser() this.props.startFetchUser()
http.get(`${API.home}/m/user_info`).then(res => { http.get(`${API.home}/m/user_info`).then(res => {
this.props.setCurrentUser(this.transformUser(res)) this.props.setCurrentUser(this.transformUser(res))
...@@ -51,7 +55,7 @@ class App extends Component { ...@@ -51,7 +55,7 @@ class App extends Component {
history.listen(location => { history.listen(location => {
const {pathname} = location const {pathname} = location
if (pathname.startsWith('/passport')) { if (pathname.startsWith('/passport')) {
if(routeMatchRule.test(pathname)){ if (routeMatchRule.test(pathname)) {
return return
} }
location.state = {from: this.previousLocation}; location.state = {from: this.previousLocation};
......
...@@ -2,7 +2,7 @@ import React, { Component } from 'react' ...@@ -2,7 +2,7 @@ import React, { Component } from 'react'
import './bargain-middle-page.scss' import './bargain-middle-page.scss'
import { HeaderBar, VList } from '@common' import { HeaderBar, VList } from '@common'
import { Course } from '@common' import { Course } from '@common'
import { api, getParam, http, browser } from "@/utils" import {api, getParam, http, browser, wxShare} from "@/utils"
import { Toast } from "antd-mobile" import { Toast } from "antd-mobile"
import { Link, withRouter } from "react-router-dom" import { Link, withRouter } from "react-router-dom"
import Ranking from './ranking' import Ranking from './ranking'
...@@ -43,7 +43,8 @@ class BargainMiddlePage extends Component { ...@@ -43,7 +43,8 @@ class BargainMiddlePage extends Component {
amount: '', amount: '',
firendBaigainPrice: true, firendBaigainPrice: true,
isshowYindao: false, isshowYindao: false,
isLoaidng: true isLoaidng: true,
imglink: 'https://julyedu-img-public.oss-cn-beijing.aliyuncs.com/Public/Image/',
} }
} }
...@@ -285,6 +286,14 @@ class BargainMiddlePage extends Component { ...@@ -285,6 +286,14 @@ class BargainMiddlePage extends Component {
status: 7, status: 7,
isshowYindao: browser.isWeixin ? true : false isshowYindao: browser.isWeixin ? true : false
}) })
wxShare({
title: `我发现一门好课,快来帮我砍价吧!`,
desc: `我已经砍了${this.state.bargainData.bargain_price}元,看看你能砍多少`,
link: encodeURI(location.href),
imgUrl: this.state.course.course_img,
});
} }
// 关闭弹窗 // 关闭弹窗
......
...@@ -2,7 +2,7 @@ import React, { Component } from 'react' ...@@ -2,7 +2,7 @@ import React, { Component } from 'react'
import './togroup.scss' import './togroup.scss'
import { HeaderBar, VList } from '../../../common' import { HeaderBar, VList } from '../../../common'
import { getParam, http, browser} from "@/utils"; import {getParam, http, browser, wxShare} from "@/utils";
import { connect } from "react-redux" import { connect } from "react-redux"
import { Link } from "react-router-dom" import { Link } from "react-router-dom"
import { WingBlank, WhiteSpace, Flex, Toast } from 'antd-mobile' import { WingBlank, WhiteSpace, Flex, Toast } from 'antd-mobile'
...@@ -27,53 +27,13 @@ class ToGroup extends Component { ...@@ -27,53 +27,13 @@ class ToGroup extends Component {
invitedFriends = () => { invitedFriends = () => {
const {pdd_price, number, data} = this.state; const {pdd_price, number, data} = this.state;
if(browser.isWeixin) { if(browser.isWeixin) {
let share = this.state.share; wxShare({
this.setState({
share: !share,
});
let shareData = {
title: `【仅剩${number}个名额】我${pdd_price}元拼了《${data.course_title}》`, title: `【仅剩${number}个名额】我${pdd_price}元拼了《${data.course_title}》`,
desc: data.course_title, // 分享描述 desc: data.course_title,
// 直接进入课程详情页,isIn: 1 link: location.href,
link: location.origin + `/detail?id=${data.course_id}`, // 分享链接,该链接域名或路径必须与当前页面对应的公众号JS安全域名一致 imgUrl: data.image_name,
imgUrl: data.image_name, // 分享图标
};
http.post(`${API['base-api']}/m/sale/signature`).then(res => {
const {nonce_str, signature, timestamp} = res.data;
wx.config({
"debug": false, // 开启调试模式,调用的所有api的返回值会在客户端alert出来,若要查看传入的参数,可以在pc端打开,参数信息会通过log打出,仅在pc端时才会打印。
"appId": 'wx23dac6775ac82877', // 必填,公众号的唯一标识
"timestamp": timestamp, // 必填,生成签名的时间戳
"nonceStr": nonce_str, // 必填,生成签名的随机串
"signature": signature, // 必填,签名
jsApiList: [
'hideMenuItems',
'showMenuItems',
'updateAppMessageShareData',
'updateTimelineShareData',
'onMenuShareWeibo',
'onMenuShareAppMessage',
], // 必填,需要使用的JS接口列表
});
});
wx.ready(function () { //需在用户可能点击分享按钮前就先调用
wx.hideAllNonBaseMenuItem();
wx.showMenuItems({
menuList: ['menuItem:share:appMessage' , 'menuItem:share:timeline'] // 要显示的菜单项,所有menu项见附录3
});
wx.updateAppMessageShareData({
...shareData,
success: function () {
// 设置成功
}
})
wx.updateTimelineShareData({
...shareData,
success: function () {
// 设置成功
}
})
}); });
}else{ }else{
Toast.info('请在微信中使用分享功能!', 2); Toast.info('请在微信中使用分享功能!', 2);
} }
......
...@@ -46,13 +46,6 @@ class Detail extends Component { ...@@ -46,13 +46,6 @@ class Detail extends Component {
} }
componentDidMount() { componentDidMount() {
wxShare({
title: `课程详情页`,
desc: `课程详情页`,
link: encodeURI(location.origin + '/detail?id=' + getParam('id')),
imgUrl: ''
});
this.fetchCourseInfo(); this.fetchCourseInfo();
const { location: { state = {} } } = this.props; const { location: { state = {} } } = this.props;
if(state.oid) { if(state.oid) {
...@@ -242,12 +235,7 @@ class Detail extends Component { ...@@ -242,12 +235,7 @@ class Detail extends Component {
} }
}) })
} }
// payCallback = () => {
//
// };
// weixinPay = (weixin_code) => {
//
// }
payCallBack = (singleType, nowPrice, laterPrice) => { payCallBack = (singleType, nowPrice, laterPrice) => {
// Toast.info(singleType, 2); // Toast.info(singleType, 2);
const _this = this; const _this = this;
...@@ -289,9 +277,14 @@ class Detail extends Component { ...@@ -289,9 +277,14 @@ class Detail extends Component {
}); });
}, 1000) }, 1000)
} }
wxShare({
title: course_info.course_title,
desc: course_info.index_description,
link: encodeURI(location.origin + '/detail?id=' + getParam('id')),
imgUrl:course_info.image_name
});
} }
} }
}); });
} }
...@@ -377,52 +370,11 @@ class Detail extends Component { ...@@ -377,52 +370,11 @@ class Detail extends Component {
invitedFriends = () => { invitedFriends = () => {
const {course_title, image_name, course_id, pdd_group_info, pdd_group_info: {groupon_member, groupon_member: {number}, price}} = this.state.course.course_info; const {course_title, image_name, course_id, pdd_group_info, pdd_group_info: {groupon_member, groupon_member: {number}, price}} = this.state.course.course_info;
if (browser.isWeixin) { if (browser.isWeixin) {
let share = this.state.share; wxShare({
this.setState({
share: !share,
});
let shareData = {
title: `【仅剩${number}个名额】我${price}元拼了《${course_title}》`, title: `【仅剩${number}个名额】我${price}元拼了《${course_title}》`,
desc: course_title, // 分享描述 desc: course_title,
link: location.origin + `/detail??id=${course_id}`, // 分享链接,该链接域名或路径必须与当前页面对应的公众号JS安全域名一致 link: location.href,
imgUrl: image_name, // 分享图标 imgUrl: image_name,
};
http.post(`${API['base-api']}/m/sale/signature`).then(res => {
const {nonce_str, signature, timestamp} = res.data;
wx.config({
"debug": false, // 开启调试模式,调用的所有api的返回值会在客户端alert出来,若要查看传入的参数,可以在pc端打开,参数信息会通过log打出,仅在pc端时才会打印。
"appId": 'wx23dac6775ac82877', // 必填,公众号的唯一标识
"timestamp": timestamp, // 必填,生成签名的时间戳
"nonceStr": nonce_str, // 必填,生成签名的随机串
"signature": signature, // 必填,签名
jsApiList: [
'hideMenuItems',
'showMenuItems',
'updateAppMessageShareData',
'updateTimelineShareData',
'onMenuShareWeibo',
'onMenuShareAppMessage',
], // 必填,需要使用的JS接口列表
});
});
wx.ready(function () { //需在用户可能点击分享按钮前就先调用
wx.hideAllNonBaseMenuItem();
wx.showMenuItems({
menuList: ['menuItem:share:appMessage', 'menuItem:share:timeline'] // 要显示的菜单项,所有menu项见附录3
});
wx.updateAppMessageShareData({
...shareData,
success: function () {
// 设置成功
}
})
wx.updateTimelineShareData({
...shareData,
success: function () {
// 设置成功
}
})
}); });
} else { } else {
Toast.info('请在微信中使用分享功能!', 2); Toast.info('请在微信中使用分享功能!', 2);
......
import { http } from "@/utils/index" import { http, browser } from "@/utils"
const url = `https://res.wx.qq.com/open/js/jweixin-1.4.0.js` const url = `https://res.wx.qq.com/open/js/jweixin-1.4.0.js`
...@@ -7,7 +7,7 @@ const jsApiList = ['updateAppMessageShareData','updateTimelineShareData','onMenu ...@@ -7,7 +7,7 @@ const jsApiList = ['updateAppMessageShareData','updateTimelineShareData','onMenu
export const getSignature = async (config = {}) => { export const getSignature = async (config = {}) => {
let res = await http.post(`${API['base-api']}/m/sale/signature`, { let res = await http.post(`${API['base-api']}/m/sale/signature`, {
url: window.location.href.split('#')[0] url: browser.isWeixin && browser.isIOS ? sessionStorage.getItem('enter_url') : window.location.href.split('#')[0],
}) })
return wx.config({ return wx.config({
debug: false, // 开启调试模式, debug: false, // 开启调试模式,
......
import { getWXObject, getSignature } from './base' import { getWXObject, getSignature } from './base'
const shareApiList = ['updateAppMessageShareData','updateTimelineShareData','onMenuShareAppMessage', 'onMenuShareTimeline'] const shareApiList = ['updateAppMessageShareData', 'updateTimelineShareData', 'onMenuShareAppMessage', 'onMenuShareTimeline']
export default async function (data = {title: '',desc: '', link: '', imgUrl: ''}) { export default async function (data = {title: '', desc: '', link: '', imgUrl: ''}, config = {}) {
await getWXObject() await getWXObject()
await getSignature() await getSignature(config)
wx.ready(function () { wx.ready(function () {
console.log('ready'); console.log('ready');
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment