微信开发配置

1 微信授权登陆

  1) 配置授权回调页面域名

    公众号开发平台->开发者中心->网页帐号->网页授权获取用户基本信息

  2) 用户授权并获取code

    https://open.weixin.qq.com/connect/oauth2/authorize?appid=APPID&redirect_uri=REDIRECT_URI&response_type=code&scope=SCOPE&state=STATE#wechat_redirect

参数必须说明
appid公众号的唯一标识
redirect_uri授权后重定向的回调链接地址
response_type返回类型,请填写code
scope应用授权作用域,snsapi_base (不弹出授权页面,直接跳转,只能获取用户openid),snsapi_userinfo (弹出授权页面,可通过openid拿到昵称、性别、所在地。并且,即使在未关注的情况下,只要用户授权,也能获取其信息)
state重定向后会带上state参数,开发者可以填写任意参数值
#wechat_redirect直接在微信打开链接,可以不填此参数。做页面302重定向时候,必须带此参数

    授权后重定向到 REDIRECT_URI?code=****

  3) 根据code获取access_token、openId等用户信息

    https://api.weixin.qq.com/sns/oauth2/access_token?appid=APPID&secret=SECRET&code=CODE&grant_type=authorization_code    

参数是否必须说明
appid公众号的唯一标识
secret公众号的appsecret
code填写第一步获取的code参数
grant_type填写为authorization_code
 

    返回:

参数描述
access_token网页授权接口调用凭证,注意:此access_token与基础支持的access_token不同
expires_inaccess_token接口调用凭证超时时间,单位(秒)
refresh_token用户刷新access_token
openid用户唯一标识,请注意,在未关注公众号时,用户访问公众号的网页,也会产生一个用户和公众号唯一的OpenID
scope用户授权的作用域,使用逗号(,)分隔
 

  4) 使用access_token、openId获取用户信息

    https://api.weixin.qq.com/sns/userinfo?access_token=ACCESS_TOKEN&openid=OPENID    

参数描述
access_token网页授权接口调用凭证,注意:此access_token与基础支持的access_token不同
openid用户的唯一标识

    返回:

参数描述
openid用户的唯一标识
nickname用户昵称
sex用户的性别,值为1时是男性,值为2时是女性,值为0时是未知
province用户个人资料填写的省份
city普通用户个人资料填写的城市
country国家,如中国为CN
headimgurl用户头像,最后一个数值代表正方形头像大小(有0、46、64、96、132数值可选,0代表640*640正方形头像),用户没有头像时该项为空
privilege用户特权信息,json 数组,如微信沃卡用户为(chinaunicom)

2 调用微信js接口

  微信开发文档说access_token的有效时间是7200秒(两小时);
但没有说过期后怎么办,这里的access_token容易和网页授权的access_token搞混;
后者有刷新地址,前者没有,需要过期后重新获取;
一般做网站开发,必须把access_token和jsapi_ticket存到服务器,并且根据过期时间定期更新,这个后期再说;

  1) 获取access_token

    https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential&appid=APPID&secret=SECRET

  2) 获取临时票据 jsapi_ticket

    https://api.weixin.qq.com/cgi-bin/ticket/getticket?access_token=ACCESS_TOKEN&type=jsapi

3 微信公众号支付

  1) 设置支付目录

    确保实际支付时的请求目录与此处配置的目录一致,否则将无法成功唤起微信支付。

    微信商户平台(pay.weixin.qq.com)-->产品中心-->开发配置

    

  2) 设置授权域名

    开发公众号支付时,在统一下单接口中要求必传用户openid,可在用户授权登陆时获取,需要配置网页授权域名(参:微信授权登陆)

  3) js调起支付

    getBrandWCPayRequest 接口

名称变量名必填类型示例值描述
公众号idappIdString(16)wx8888888888888888商户注册具有支付权限的公众号成功后即可获得
时间戳timeStampString(32)1414561699当前的时间,其他详见时间戳规则
随机字符串nonceStrString(32)5K8264ILTKCH16CQ2502SI8ZNMTM67VS随机字符串,不长于32位。推荐随机数生成算法
订单详情扩展字符串packageString(128)prepay_id=123456789统一下单接口返回的prepay_id参数值,提交格式如:prepay_id=***
签名方式signTypeString(32)MD5签名类型,默认为MD5,支持HMAC-SHA256和MD5。注意此处需与统一下单的签名类型一致
签名paySignString(64)C380BEC2BFD727A4B6845133519F3AD6签名,详见签名生成算法

    支付接口err_msg返回结果值:

返回值描述
get_brand_wcpay_request:ok支付成功
get_brand_wcpay_request:cancel支付过程中用户取消
get_brand_wcpay_request:fail支付失败

    由于前端交互复杂,取消和失败流程可以统一处理,不必细分。

    代码示例:

function onBridgeReady(){
   WeixinJSBridge.invoke(
       'getBrandWCPayRequest', {
           "appId":"wx2421b1c4370ec43b",     //公众号名称,由商户传入     
           "timeStamp":"1395712654",         //时间戳,自1970年以来的秒数     
           "nonceStr":"e61463f8efa94090b1f366cccfbbb444", //随机串     
           "package":"prepay_id=u802345jgfjsdfgsdg888",     
           "signType":"MD5",         //微信签名方式:     
           "paySign":"70EA570631E4BB79628FBCA90534C63FF7FADD89" //微信签名 
       },
       function(res){     
           if(res.err_msg == "get_brand_wcpay_request:ok" ) {}     // 使用以上方式判断前端返回,微信团队郑重提示:res.err_msg将在用户支付成功后返回    ok,但并不保证它绝对可靠。 
       }
   ); 
}
if (typeof WeixinJSBridge == "undefined"){
   if( document.addEventListener ){
       document.addEventListener('WeixinJSBridgeReady', onBridgeReady, false);
   }else if (document.attachEvent){
       document.attachEvent('WeixinJSBridgeReady', onBridgeReady); 
       document.attachEvent('onWeixinJSBridgeReady', onBridgeReady);
   }
}else{
   onBridgeReady();
}

4 获取access_token接口时,需要设置访问来源IP为白名单

微信分享时,发现报错

错误代码-40164,错误信息-invalid ip, not in whitelist hint: [59FKqA0797e514]]

登录公众平台,进入开发->基本配置页面->IP白名单配置

 

 

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值