php 公众号微信支付流程,微信公众号支付完整流程案例
简介
微信公众号支付,顾名思义就是必须在微信中实现支付,并且需要公众号配合。
教程
由于我们使用的是第三方封装好的接口,这里省去了我们自己配置公众号。为什么用第三方?因为个人没有申请权限。
交互细节:
以下是支付场景的交互细节,请认真阅读,设计商户页面的逻辑:
用户打开商户网页选购商品,发起支付,在网页通过JavaScript调用getBrandWCPayRequest接口,发起微信支付请求,用户进入支付流程。
用户成功支付点击完成按钮后,商户的前端会收到JavaScript的返回值。商户可直接跳转到支付成功的静态页面进行展示。
商户后台收到来自微信开放平台的支付成功回调通知,标志该笔订单支付成功。
前端引入:
后台逻辑,基本上就这三步:
获取授权链接
根据 code 获取 openId
根据 openId 获取支付参数
/**
* 获取授权链接,首先调用此方法
* @return
*/
@GetMapping(value="getOauthUrl")
public void getOauthUrl(HttpServletResponse response) throws IOException {
String url="https://xxx.xxxx.vip/pay/weiXin.html?a=1";
String oauthUrl = WxPay.getWxOauthUrl(null, url);
response.sendRedirect(oauthUrl);
}
/**
* 根据 code 获取 openId
* @param code
* @return
*/
@PostMapping(value="getWxOauthInfo")
public Result getWxOauthInfo(String code) {
WxOauthInfo wxOauthInfo = WxPay.getWxOauthInfo(code);
return Result.ok(wxOauthInfo);
}
/**
* 下单并获取请求参数
* @return
*/
@PostMapping(value="jsApiPay")
public Result jsApiPay(Product product) {
return wxPayService.jsApiPay(product);
}
前台逻辑:
var order = {};
var openId;
$(function(){
var code = GetRequest()['code'];
$.ajax({
url:"/pay/getWxOauthInfo",
type: "POST",
data : {'code':code},
success: function (result) {
openId = result.msg.openId;
}
});
});
function callPay(){
$.ajax({
url:"/pay/jsApiPay",
data : {
productId:1,
body:"胡列娜精美手办",
totalFee:'1',
openId:openId
},
type: "POST",
success: function (result) {
if(result.code==0){
order = JSON.parse(result.msg);
order.openId = openId;
pay();
}
}
});
}
function pay(){
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();
}
}
function onBridgeReady(){
WeixinJSBridge.invoke('getBrandWCPayRequest',order,function(res){
//使用以上方式判断前端返回,微信团队郑重提示:res.err_msg将在用户支付成功后返回ok,但并不保证它绝对可靠。
if(res.err_msg == "get_brand_wcpay_request:ok"){
//微信 自带 支付成功效果
}else if(res.err_msg == "get_brand_wcpay_request:cancel"){
alert("用户取消支付!");
}else if(res.err_msg == "get_brand_wcpay_request:fail"){
alert("支付失败!");
}
})
}
function GetRequest() {
var url = location.search;
var theRequest = new Object();
if (url.indexOf("?") != -1) {
var str = url.substr(1);
strs = str.split("&");
for(var i = 0; i < strs.length; i ++) {
theRequest[strs[i].split("=")[0]]=unescape(strs[i].split("=")[1]);
}
}
return theRequest;
}
演示
网址:pay.cloudbed.vip/login.html
账号:pay 密码:123456
支付服务:支付宝,微信,银联详细 代码案例:
gitee.com/52itstyle/spring-boot-pay
php 公众号微信支付流程,微信公众号支付完整流程案例相关推荐
- iOS 拦截支付宝H5支付,完成掉起支付宝APP支付,回到自己APP,完整流程
先说一下这个想法的来源,然后有相关需求的朋友也可以这样来操作 公司产品用到了支付宝支付,但是避免上架审核问题(不能接入支付宝SDK,害怕检测),采用了支付宝的H5支付,作为产品的支付渠道:APP内部, ...
- 微信js-sdk图片上传下载——java完整流程
最近做的一个项目刚好用到微信js-sdk的图片上传接口,在这里做一下总结. 在这里能知道使用js api的基本配置https://mp.weixin.qq.com/wiki?t=resource/re ...
- 微信小程序使用腾讯地图完整流程
前言:开发小程序需要得到定位和位置的省市区文字信息,看了所有的文章都没有一个完整和像样的,全是copy来,copy去的文章 - _ -!,一怒之下,开始了自己的踩坑之路 第一步:申请腾讯地图账号 腾讯 ...
- 在HbuilderX中实现微信小程序下蓝牙连接打印机完整实战案例
1.基础开发环境,所用到的 Api 以及实现的思路. 应用场景: 商家打印小票,小票包含顾客消费的商品明细信息以及末尾附上二维码,二维码供顾客扫码开票. HbuilderX开发工具: HBuilder ...
- iOS APP发布---版本配置完整流程
app打包发布需要在Xcode上完成打包上传过程.Xcode端完成上传之后,再在App Store Connect端完成构建版本.上架审核.发布提交的流程. 其他相关文档如下,操作仅供参考. 苹果开发 ...
- HPB普及:BOE完整流程、高性能选举
HPB普及:BOE完整流程.高性能选举 BOE完整流程 在共识选举算法方面,当前主流区块链技术共识机制,主要分为两大类: 一类是以比特币.以太坊为代表的去中心化机制:治理者与有强大算力的节点对等,存在 ...
- DVWA靶场搭建完整流程
DVWA靶场搭建完整流程 @[TOC](DVWA靶场搭建完整流程) 欢迎来到期待nila博客 1.下载phpstudy 2.配置phpstudy 3.下载DVWA 4. 配置DWVA 欢迎来到期待ni ...
- 微信公众号支付完整流程
一.微信支付相关文档 jsapi支付下单:https://pay.weixin.qq.com/wiki/doc/apiv3/apis/chapter3_1_1.shtml jsapi支付场景:http ...
- php获取微信收款记录,微信公众号开发之微信支付代码记录的实现
需求说明 这个需求说明是完全没有必要的,但是还是写一下吧,但凡是做公众号的,一般都是需要了解这个微信支付的,不然基本的业务都没办法走,所以今天简单的记录一下微信支付的一些问题以及流程是怎么样的.记录的 ...
最新文章
- python从控制台读取数据
- python数据分析numpy_利用python进行数据分析-NumPy高级应用
- RPC调用框架比较分析--转载
- JavaCC首页、文档和下载 - 语法分析生成器 - 开源中国社区
- beetl 时间输出格式化
- Django登陆以后重定向到请求登陆的页面
- Setting up NUnit for C# Unit Testing with Visual Studio C# Express 2008
- C# 开发和使用中的32个技巧
- Vue音乐播放器入门Demo及Vue环境搭建运行
- 响铃:号牌上又领先了一步,小鹏汽车正在极速狂奔
- win10系统Windows 资源保护无法启动修复服务该如何解决?
- 截止失真放大电路_反馈/反馈电路/反馈类型的判别方法
- pinterest,图片网站的传奇
- Processing编写熊猫
- NYOJ 366 STL 全排列
- 关于怎么解决java.lang.NoClassDefFoundError错误
- 358. K 距离间隔重排字符串 排序
- 九段刀客 vue-router实现原理
- PID循迹机器人及整定
- java传感器_传感器 - javawebsoa - 博客园
热门文章
- Qt/C++编写自定义控件48-面板窗体控件
- hadoop2.x下Yarn详解
- 资本论 卡尔马克思 恩格斯
- strcpy函数(复制字符串)
- 字符串复制函数strcpy()
- 安卓和ios的ui设计区别_浅谈IOS和Android界面设计尺寸规范
- 俄罗斯计算机正博士,科学网—呃弱弱地说:俄罗斯正博士那算博士,咱们?嘿嘿都烂。 - 陈楷翰的博文...
- tcp_tw_recycle参数引发的故障
- 【C++】「一本通 1.1 例 5」智力大冲浪
- 运行openi_tracker 时遇到的问题