微信公众号支付 流程
1.支付参数准备(图就不上了)
公众号的APPID、商户号MchID、商户API支付秘钥(商户平台的账户中心下:需要用户自行下载证书及安装)。
2.平台配置
商户平台-->产品中心-->开发配置-->支付配置-->公众号支付:支付授权目录(该路径需要通过备案)
点击添加
公众号配置:参见官方支付文档
https://pay.weixin.qq.com/wiki/doc/api/jsapi.php?chapter=7_3
注意:以上的授权网址必须通过备案,最好开头都是统一的。比如:http://www.xxx.com/
3.参数配置
官方文档写的很详细了https://pay.weixin.qq.com/wiki/doc/api/jsapi.php?chapter=9_1
需要的参数
/** * 支付 * appid 应用ID 是 String(32) wxd678efh567hg6787 微信开放平台审核通过的应用APPID * mch_id 商户号 是 String(32) 1230000109 微信支付分配的商户号 * nonce_str 随机字符串 是 String(32) 5K8264ILTKCH16CQ2502SI8ZNMTM67VS 随机字符串,不长于32位。推荐随机数生成算法 * sign 签名 是 String(32) C380BEC2BFD727A4B6845133519F3AD6 签名,详见签名生成算法 * body 商品描述 是 String(128) 腾讯充值中心-QQ会员充值 商品描述交易字段格式根据不同的应用场景按照以下格式:APP——需传入应用市场上的APP名字-实际商品名称,天天爱消除-游戏充值。 * out_trade_no 商户订单号 是 String(32) 20150806125346 商户系统内部订单号,要求32个字符内,只能是数字、大小写字母_-|*@ ,且在同一个商户号下唯一。详见商户订单号 * total_fee 总金额 是 Int 888 订单总金额,单位为分,详见支付金额 * spbill_create_ip 终端IP 是 String(16) 123.12.12.123 用户端实际ip * notify_url 通知地址 是 String(256) http://www.weixin.qq.com/wxpay/pay.php 接收微信支付异步通知回调地址,通知url必须为直接可访问的url,不能携带参数。 * openid 用户标识String(128) 是 oUpF8uMuAJO_M2pxb1Q9zNjWeS6o * trade_type=JSAPI时(即公众号支付),此参数必传,此参数为微信用户在商户对应appid下的唯一标识。openid如何获取,可参考【获取openid】。企业号请使用【企业号OAuth2.0接口】获取企业号内成员userid,再调用【企业号userid转openid接口】进行转换 * @throws Exception */
获取openId的可以去我的另一篇博客:静默式获取 https://blog.csdn.net/qq_38423105/article/details/80632397
这边有个细节就是签名要最后签,把其余参数都带上,代码如下:
Map<String, String> data = new HashMap<String, String>();
data.put("appid", config.getAppID()); //公众号APPID
data.put("mch_id", config.getMchID()); //商户号
data.put("nonce_str", WXPayUtil.generateNonceStr()); //随机字符串
data.put("out_trade_no", outTradeNo); //订单号
data.put("body",body); //商品描述
data.put("total_fee", "1"); //支付金额,以分为单位
data.put("spbill_create_ip", getIpAddr(request)); //用户实际ip
data.put("notify_url", WXpayConfig.NOTIFY_URL); //支付回调地址,可以写你执行完支付想要执行的代码,比如做支付记录,交易记录
data.put("trade_type", "JSAPI"); //支付类型
data.put("openid", openId); //openId
data.put("sign", WXPayUtil.generateSignature(data,config.getKey())); //将上述信息和支付秘钥生成签名
4.统一下单
调用微信自带的工具类WXPay, 可以打印看看有没有成功
Map<String, String> resp = wxpay.unifiedOrder(data);
System.out.println("\n==========>统一下单resp:" + resp);
5.返回给前端调起微信公众号支付的参数
注意:需要二次签名,公众号支付的要求
Map<String, String> resultMap = new LinkedHashMap<String, String>();
resultMap.put("appid", config.getAppID()); // 应用ID
resultMap.put("partnerid", config.getMchID()); // 商户号
resultMap.put("prepayid", resp.get("prepay_id")); // 预支付交易会话ID
resultMap.put("package", "Sign=WXPay"); // 扩展字段
resultMap.put("noncestr", WXPayUtil.generateNonceStr()); // 随机字符串
resultMap.put("timestamp", String.valueOf(System.currentTimeMillis()/1000)); // 时间戳
resultMap.put("sign", WXPayUtil.generateSignature(resultMap, config.getKey())); // 签名
resultMap.put("mweb_url", resp.get("mweb_url")); //调用支付地址
System.out.println("\n==========>调起支付resp:" + resultMap);
6.前端页面调起支付
引入wx的JS-SDK的js文件
function onBridgeReady(){ WeixinJSBridge.invoke( 'getBrandWCPayRequest', { "appId":appId, //公众号名称,由商户传入 "timeStamp":timeStamp, //时间戳,自1970年以来的秒数 "nonceStr":nonceStr, //随机串 "package":package, "signType":signType, //微信签名方式: "paySign":paySign //微信签名 }, function(res){ if(res.err_msg == "get_brand_wcpay_request:ok" ) { console.log('支付成功'); //支付成功后跳转的页面 }else if(res.err_msg == "get_brand_wcpay_request:cancel"){ console.log('支付取消'); }else if(res.err_msg == "get_brand_wcpay_request:fail"){ console.log('支付失败'); WeixinJSBridge.call('closeWindow'); } //使用以上方式判断前端返回,微信团队郑重提示:res.err_msg将在用户支付成功后返回ok,但并不保证它绝对可靠。 });
}
结束!!!
还不会的可以去我的资源下载:https://download.csdn.net/download/qq_38423105/10496016
微信公众号支付 流程相关推荐
- php公众号支付后的微信通知,关于微信公众号支付细数我踩过的坑
微信公众号支付流程 项目背景: 1.前后端分离,前端是jquery 获取后端接口 (php) 开发流程: 1.配置 进入微信公众平台,申请开通微信支付,不开通就别进行下一步了.开通后,进入左侧的微信支 ...
- 微信公众号支付申请配置流程
微信公众号支付申请配置流程 公众号支付申请步骤 微信公众号支付配置 公众号支付:用户在微信内进入商家H5页面,在页面内完成支付. 公众号支付申请步骤 注册公众账号(政府或媒体订阅号.服务号才能接入支付 ...
- 微信公众号支付前端部分流程
上周公司安排了微信公众号支付开发任务,经过快一周的不断填坑,终于把支付搞定,现在把遇到的问题和开发步骤记录一下,方便遇到同样问题的老铁们节省一些时间,少入些坑,先说一下本文不包含的内容,因为这些并不难 ...
- php 公众号微信支付流程,微信公众号支付完整流程案例
简介 微信公众号支付,顾名思义就是必须在微信中实现支付,并且需要公众号配合. 教程 由于我们使用的是第三方封装好的接口,这里省去了我们自己配置公众号.为什么用第三方?因为个人没有申请权限. 交互细节: ...
- vue 调用共众url_vue单页面,在微信公众号支付中遇到的URL未注册BUG解决方法-Go语言中文社区...
今天在做微信公众号支付的时候,遇到一个bug,在当前支付页面点击支付,就会报错,提示当前页面的URL未注册.如下图: 但是,这个URL我们是在后台微信公众号配置了的,所以说不会出错. 但是我们刷新一次 ...
- 微信公众号支付调用chooseWXPay提示“errmsg choosewxpay fail”
微信公众号支付一直提示"errmsg choosewxpay fail",也没有提示具体错误信息,签名没有问题(签名验证地址:https://pay.weixin.qq.com/w ...
- js如何调用h5的日期控价_微信公众号支付H5调用支付解析
最近项目需要微信支付,然后看了下微信公众号支付,虽然不难,但是细节还是需要注意的,用了大半天时间写了个demo,并且完整的测试了一下支付流程,下面分享一下微信公众号支付的经验. 一.配置公众号微信支付 ...
- vue 微信公众号支付接口_基于vue的h5项目之支付宝支付与微信支付
本文仅记录基于vue开发h5项目过程中使用支付宝和微信支付过程中的重点与槽点,仅为前端部分,如有疏漏不正之处,请于文末评论探讨.注意:标红部分灰常重要,仔细阅读官方文档非常重要,耐心非常重要,细心非常 ...
- h5通过php微信支付宝支付,用H5调用支付微信公众号支付的解析
这篇文章主要为大家详细介绍了微信公众号支付H5调用支付,具有一定的参考价值,感兴趣的小伙伴们可以参考一下 最近项目需要微信支付,然后看了下微信公众号支付,虽然不难,但是细节还是需要注意的,用了大半天时 ...
最新文章
- 加权轮询算法PHP,PHP实现负载均衡的加权轮询方法分析
- idea Debug快捷键
- python1000个常用代码-30个Python常用极简代码,拿走就用
- mysql 存储过程 主键_存储过程生成主键
- SQL 脚本中的全角逗号引起【ORA-01756: 引号内的字符串没有正确结束】
- Httpclient发送json请求
- MySQL摘要_mysql摘要
- Web前端期末大作业--绿色自适应医疗健康医院网页设计(HTML+CSS+JavaScript+)实现
- (转)jquery基础教程八 load方法及小技巧
- 大鱼风控笔记 1:量化风控体系的风险板块
- android unity3d开发学习第一步
- Ubuntu下Tomcat连接MySql数据库
- 关于struct和class的知识
- html文件转为其他格式文件格式,HTML文件转Word文件格式
- 计量经济学计算机答案第一章,计量经济学计算机作业
- CentOS从零搭建SRS直播服务器
- direct 3d 渲染红蓝立体效果
- 梅特勒托利多xk3124电子秤说明书_托利多电子秤说明书
- 2021 考研英语题难度如何?英语一英语二有哪些亮点和槽点?
- 天津出差系列(一)----第一天
热门文章
- android 输入法 智能abc 风格,云风的 BLOG
- 辩驳一个默认的说法:IE6不支持!important
- 如何做好百度广告联盟
- python如何实现飞机上下移动_python项目实战 打飞机(二)
- java vs2010 难度_Java VS C++谁更胜一筹?
- 天大2021年秋学期考试《电工技术实验》离线作业考核试题
- 为什么没有幼年、青年、老年危机?
- Android 10 SDK 29 使用listFiles返回null空值的原因
- Caffeine 缓存
- 小程序源码:独家一比一精仿火萤动态壁纸全套微信小程序源码下载-支持动静态和头像