微信支付jsapi(公众号支付)接口调用

差很少两个月前的一个项目要使用微信线下支付本人并无接触过这方面的知识,做为刚出道的小白,一个微信支付差点把我折磨的死去活来,查看了许多文章才把这个功能实现。现在跑到成都从新找工做,学习的时候也正好写点总结,把支付这一块的知识整理下。php

好了,接下来看微信支付jsapi接口是怎么调用的算法

步骤一:获取微信支付四大参数  api

首先要想支持微信支付,必须拥有两个帐号安全

微信公众平台:帐户微信

 公众APPID,APPSECEPT ,微信商户平台商户ID, API密钥app

步骤二:平台配置微信公众平台

1.配置支付目录:商户平台:工具

配置此目录是代码中“微信支付”所在页面的地址-须要ICP备案。学习

2.配置受权域名:微信公众平台:微信支付

支付过程须要获取用户openid,必须通过网页受权配置才能够,要否则获取不到openid。

官方解释:用户在网页受权页赞成受权给公众号后,微信会将受权数据传给一个回调页面,回调页面需在此域名下,以确保安全可靠。回调页面域名不支持IP地址。

第一步:用户赞成受权,获取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:重定向的url,就是受权后要跳转的页面

   scope:应用受权做用域

   snsapi_base:不弹出受权页面,直接跳转,只能获取用户openid

   snsapi_userinfo:弹出受权页面,可经过openid拿到昵称、性别、所在地

    state:重定向后带的参数

    用户赞成后会产生一个code,只有5分钟时间的有效期。

第二步:经过code换取网页受权access_token( 微信支付只须要openid,获取到access_token以后只须要里面openid参数)

获取code后,请求如下连接获取access_token: https://api.weixin.qq.com/sns/oauth2/access_token?appid=APPID&secret=SECRET&code=CODE&grant_type=authorization_code

{ "access_token":"ACCESS_TOKEN", 

"expires_in":7200, 

"refresh_token":"REFRESH_TOKEN",

 "openid":"OPENID",//微信j支付jsapi接口须要用到的参数

 "scope":"SCOPE" }

步骤三 调用接口统一下单

微信统一下单API是微信支付的一个“统一”处理入口,官方给出的地址是


须要的参数(此处使用服务商接口参数 因此会有子商户的id 普通商户不须要)https://api.mch.weixin.qq.com/pay/unifiedorder https://api2.mch.weixin.qq.com/pay/unifiedorder(备用域名)

 

 

 

 

 

按照 签名算法 计算签名

 

把全部要传递的参数键值对去掉值是空的,剩下的参数名ASCII码从小到大排序后,使用URL键值对格式(key1=value1&key2=value2...)拼接成StringA

把StringA后面多加一组键值&key=商户平台密钥得到StringB

把StringB按要求作"MD5"或"HMAC-SHA256"计算,并将结果字符转为大写

微信甚至还提供了一个在线校验工具帮助开发者检查生成的签名是否正确,跳到工具。使用方法是选择好签名类型,校验方式选择XML(不是必须只是为了省事儿),XML源串输入不带sign信息

发送前先用WXPayUtil工具类中的方法mapToXML(Map<String,String> date)方法 将参数的map转为XML格式发送后会返回String的返回值

获得以上参数就算是微信支付jsapi接口调用成功  接下来只须要完成支付业务流程

 

 

 

 

 

 

 

 

相关文章
相关标签/搜索