登录微信公众平台,进入“公众号设置”-“功能设置”,然后填写“JS接口安全域名”。不用加http://只需要写域名即可
基本配置中查看AppID和AppSecret,注意这里一定要用管理员的手机
摄像头扫码
(长按扫码是没用的)
很多时候,你发现不生效,那么我们就可以打开debug模式,看哪里不生效
wx.config({
debug: true,
appId: resule.appId,
timestamp: resule.timestamp,
nonceStr: resule.nonceStr,
signature: resule.signature,
jsApiList: ['onMenuShareTimeline', 'onMenuShareAppMessage']
});
wx.error(function(res){
// config信息验证失败会执行error函数,如签名过期导致验证失败,具体错误信息可以打开config的debug模式查看,也可以在返回的res参数中查看,对于SPA可以在这里更新签名。
alert(res)
});
url必须是分享页面的url切#后面的都舍弃...
var url = document.location.href.split('#')[0];
由于用户在领取卡劵,微信回调服务器的时候是xml格式的
//laravel框架中获取xml并转为数组
$xmlData = request()->getContent();
$arrData = XMLHandle::parse($xmlData);
public static function parse($xml)
{
$data = simplexml_load_string($xml, 'SimpleXMLElement', LIBXML_NOCDATA | LIBXML_NOBLANKS);
if (is_object($data) && get_class($data) === 'SimpleXMLElement') {
$data = self::arrarval($data);
}
return $data;
}
将 api_ticket、timestamp、card_id、code、openid、nonce_str的value值进行字符串的字典序排序。
字典排序就是0-9 a-z
//在php中我们这样做就可以字典排序然后sha1
$args = [
"$timestamp"=>"$timestamp",$jsapiTicket=>$jsapiTicket,$nonceStr=>$nonceStr,$cardId=>$cardId
];
sort($args);
$string = implode('',$args);
$signature = sha1($string);
在设置了自定义菜单之后,接口返回正常.. 但是公众号缺没有变化.. 这时候需要重新关注公众号..这个缓存才会清除