如何用PHP编写支持支付宝和微信支付功能的二维码生成示例?

2026-04-06 06:571阅读0评论SEO资讯
  • 内容介绍
  • 文章标签
  • 相关推荐

本文共计989个文字,预计阅读时间需要4分钟。

如何用PHP编写支持支付宝和微信支付功能的二维码生成示例?

实现思路+生成一个二维码,加入要处理的URL链接+在用户扫描完二维码后,在对应的脚本中,判断扫描的二维码终端,调用相应的支付+若扫描二维码后能唤醒相应app,则使用支付宝需用手机网站支付方式

实现思路

  • 生成一个二维码,加入要处理的url连接
  • 在用户扫完码后,在对应的脚本中,判断扫码终端,调用相应的支付
  • 若能够扫码之后能唤起相应app,支付宝要用手机网站支付方式,微信要使用jsapi支付方式

效果展示


提示: 因为项目即将上线,所以上面的支付二维码连接被我替换了(注意在生成二维码时加入的连接,要带上' . $_SERVER['HTTP_HOST'] . $_SERVER['REQUEST_URI']; //这里授权后微信跳转的地址,要写在订单处理处,否则会造成因为程序跳转到微信授权页面,导致脚本逻辑终止 $redirect_uri = urlencode($redirect_uri); $url = $this->codeUrl . 'redirect_uri=' . $redirect_uri . '&appid=' . $this->appId . '&scope=snsapi_base&response_type=code&state=STATE#wechat_redirect'; //使用用户静默授权模式(因为我不需要获取用户信息所有就没采用用户手段授权模式) header("location:{$url}"); //跳转到微信授权页面 } else { $openidurl = $this->openidUrl . 'appid=' . $this->appId . '&secret=' . $this->appSecret . '&code=' . $this->request->get('code') . '&grant_type=authorization_code'; $data = Http::get($openidurl); $data = json_decode($data, true); if ($data['openid']) { $_SESSION['open_id'] = $data['openid']; //获取到的用户openID存储到session中 } else { $_SESSION['open_id'] = false; } return $_SESSION['open_id']; } }

前端轮询判断监听订单支付状态

$(function() { $("#code").qrcode({ //jQuery生成二维码 width: 165, //宽度 height: 167, //高度 text: $('input[name="url"]').val() }); var startTime = Date.parse(new Date())/1000; //设置定时器 var poll_request = setInterval( function() { $.ajax({ url: '/company/StoreSetting/checkStatus', data:{time:startTime}, dataType:'json', type:'get', success:function(res) { if (res.code == 400) { var result = clearTimer(poll_request, startTime); if (result) { var html = `<img src="/Static/images/paybg.png">`+ `<div class="notify" id="notify">`+ `<img src="/Static/images/pay_time_out.png" alt="">`+ `<span class="pay_tip">点击重新获取</span>`+ `</div>`; $('.qrcode-img').empty(); $('.qrcode-img').append(html); } } else if(res.code == 500) { var html = `<img src="/Static/images/paybg.png">`+ `<div class="notify">`+ `<img src="/Static/images/pay_error.png" alt="">`+ `<span class="pay_tip">已扫码<br>请在手机端操作</span>`+ `</div>`; $('.qrcode-img').empty(); $('.qrcode-img').append(html); clearTimer(poll_request, startTime); } else if(res.code == 200) { clearInterval(poll_request) layer.msg("支付成功", {icon:6}, function() { window.location.reload() }) // layer.msg("支付成功", {icon:6}, function() { // }) } } }) }, 2000); }) function clearTimer(index, startTime) { if (((Date.parse(new Date())/1000) - startTime) > 60) { clearInterval(index) return 'reload'; } return false; } //刷新二维码 $('.qrcode-img').on("click", '#notify', function() { $('.qrcode-img').empty() $("#code").qrcode({ width: 165, //宽度 height: 167, //高度 text: $('input[name="url"]').val() }); var startTime = Date.parse(new Date())/1000; var poll_request = setInterval( function() { $.ajax({ url: '/company/StoreSetting/checkStatus', data:{time:startTime}, dataType:'json', type:'get', success:function(res) { if (res.code == 400) { var result = clearTimer(poll_request, startTime); if (result) { var html = `<img src="/Static/images/paybg.png">`+ `<div class="notify" id="notify">`+ `<img src="/Static/images/pay_time_out.png" alt="">`+ `<span class="pay_tip">点击重新获取</span>`+ `</div>`; $('.qrcode-img').empty(); $('.qrcode-img').append(html); } } else if(res.code == 500) { var html = `<img src="/Static/images/paybg.png">`+ `<div class="notify">`+ `<img src="/Static/images/pay_error.png" alt="">`+ `<span class="pay_tip">已扫码<br>请在手机端操作</span>`+ `</div>`; $('.qrcode-img').empty(); $('.qrcode-img').append(html); clearTimer(poll_request, startTime); } else if(res.code == 200) { clearInterval(poll_request) layer.msg("支付成功", {icon:6}, function() { window.location.reload() }) // layer.msg("支付成功", {icon:6}, function() { // }) } } }) }, 2000); })

前端效果:

用户进入支付页面但是一直为扫码,超过一定时间

如何用PHP编写支持支付宝和微信支付功能的二维码生成示例?


用户扫码后一直未进行支付,超过一定时间

到此这篇关于PHP实现一个二维码同时支持支付宝和微信支付的示例的文章就介绍到这了,更多相关PHP 支付宝和微信支付内容请搜索自由互联以前的文章或继续浏览下面的相关文章希望大家以后多多支持自由互联!

本文共计989个文字,预计阅读时间需要4分钟。

如何用PHP编写支持支付宝和微信支付功能的二维码生成示例?

实现思路+生成一个二维码,加入要处理的URL链接+在用户扫描完二维码后,在对应的脚本中,判断扫描的二维码终端,调用相应的支付+若扫描二维码后能唤醒相应app,则使用支付宝需用手机网站支付方式

实现思路

  • 生成一个二维码,加入要处理的url连接
  • 在用户扫完码后,在对应的脚本中,判断扫码终端,调用相应的支付
  • 若能够扫码之后能唤起相应app,支付宝要用手机网站支付方式,微信要使用jsapi支付方式

效果展示


提示: 因为项目即将上线,所以上面的支付二维码连接被我替换了(注意在生成二维码时加入的连接,要带上' . $_SERVER['HTTP_HOST'] . $_SERVER['REQUEST_URI']; //这里授权后微信跳转的地址,要写在订单处理处,否则会造成因为程序跳转到微信授权页面,导致脚本逻辑终止 $redirect_uri = urlencode($redirect_uri); $url = $this->codeUrl . 'redirect_uri=' . $redirect_uri . '&appid=' . $this->appId . '&scope=snsapi_base&response_type=code&state=STATE#wechat_redirect'; //使用用户静默授权模式(因为我不需要获取用户信息所有就没采用用户手段授权模式) header("location:{$url}"); //跳转到微信授权页面 } else { $openidurl = $this->openidUrl . 'appid=' . $this->appId . '&secret=' . $this->appSecret . '&code=' . $this->request->get('code') . '&grant_type=authorization_code'; $data = Http::get($openidurl); $data = json_decode($data, true); if ($data['openid']) { $_SESSION['open_id'] = $data['openid']; //获取到的用户openID存储到session中 } else { $_SESSION['open_id'] = false; } return $_SESSION['open_id']; } }

前端轮询判断监听订单支付状态

$(function() { $("#code").qrcode({ //jQuery生成二维码 width: 165, //宽度 height: 167, //高度 text: $('input[name="url"]').val() }); var startTime = Date.parse(new Date())/1000; //设置定时器 var poll_request = setInterval( function() { $.ajax({ url: '/company/StoreSetting/checkStatus', data:{time:startTime}, dataType:'json', type:'get', success:function(res) { if (res.code == 400) { var result = clearTimer(poll_request, startTime); if (result) { var html = `<img src="/Static/images/paybg.png">`+ `<div class="notify" id="notify">`+ `<img src="/Static/images/pay_time_out.png" alt="">`+ `<span class="pay_tip">点击重新获取</span>`+ `</div>`; $('.qrcode-img').empty(); $('.qrcode-img').append(html); } } else if(res.code == 500) { var html = `<img src="/Static/images/paybg.png">`+ `<div class="notify">`+ `<img src="/Static/images/pay_error.png" alt="">`+ `<span class="pay_tip">已扫码<br>请在手机端操作</span>`+ `</div>`; $('.qrcode-img').empty(); $('.qrcode-img').append(html); clearTimer(poll_request, startTime); } else if(res.code == 200) { clearInterval(poll_request) layer.msg("支付成功", {icon:6}, function() { window.location.reload() }) // layer.msg("支付成功", {icon:6}, function() { // }) } } }) }, 2000); }) function clearTimer(index, startTime) { if (((Date.parse(new Date())/1000) - startTime) > 60) { clearInterval(index) return 'reload'; } return false; } //刷新二维码 $('.qrcode-img').on("click", '#notify', function() { $('.qrcode-img').empty() $("#code").qrcode({ width: 165, //宽度 height: 167, //高度 text: $('input[name="url"]').val() }); var startTime = Date.parse(new Date())/1000; var poll_request = setInterval( function() { $.ajax({ url: '/company/StoreSetting/checkStatus', data:{time:startTime}, dataType:'json', type:'get', success:function(res) { if (res.code == 400) { var result = clearTimer(poll_request, startTime); if (result) { var html = `<img src="/Static/images/paybg.png">`+ `<div class="notify" id="notify">`+ `<img src="/Static/images/pay_time_out.png" alt="">`+ `<span class="pay_tip">点击重新获取</span>`+ `</div>`; $('.qrcode-img').empty(); $('.qrcode-img').append(html); } } else if(res.code == 500) { var html = `<img src="/Static/images/paybg.png">`+ `<div class="notify">`+ `<img src="/Static/images/pay_error.png" alt="">`+ `<span class="pay_tip">已扫码<br>请在手机端操作</span>`+ `</div>`; $('.qrcode-img').empty(); $('.qrcode-img').append(html); clearTimer(poll_request, startTime); } else if(res.code == 200) { clearInterval(poll_request) layer.msg("支付成功", {icon:6}, function() { window.location.reload() }) // layer.msg("支付成功", {icon:6}, function() { // }) } } }) }, 2000); })

前端效果:

用户进入支付页面但是一直为扫码,超过一定时间

如何用PHP编写支持支付宝和微信支付功能的二维码生成示例?


用户扫码后一直未进行支付,超过一定时间

到此这篇关于PHP实现一个二维码同时支持支付宝和微信支付的示例的文章就介绍到这了,更多相关PHP 支付宝和微信支付内容请搜索自由互联以前的文章或继续浏览下面的相关文章希望大家以后多多支持自由互联!