vue尚品汇商城项目-day06【43.微信支付业务】

在这里插入图片描述

43.微信支付业务

修改代码:

src/pages/Pay/index.vue

<a class="btn" @click="open">立即支付</a>

data() {
      return {
        payInfo: {},
        timer: null,
        //支付状态码
        code: "",
      };
    },

methods: {
//弹出框
      async open() {
        //生成二维(地址)
        let url = await QRCode.toDataURL(this.payInfo.codeUrl);

        //注意路径下面/之前一定要有空格,否则解析失败不展示图
        this.$alert(`<img src=${url} />`, "请你微信支付", {
          dangerouslyUseHTMLString: true,
          //中间布局
          center: true,
          //是否显示取消按钮
          showCancelButton: true,
          //取消按钮的文本内容
          cancelButtonText: "支付遇见问题",
          //确定按钮的文本
          confirmButtonText: "已支付成功",
          //右上角的叉子没了
          showClose: false,
          //关闭弹出框的配置值
          beforeClose: (type, instance, done) => {
            //type:区分取消|确定按钮
            //instance:当前组件实例
            //done:关闭弹出框的方法
            if (type == "cancel") {
              alert("请联系管理员中哥");
              //清除定时器
              clearInterval(this.timer);
              this.timer = null;
              //关闭弹出框
              done();
            } else {
              //判断是否真的支付了
              //开发人员:为了自己方便,这里判断先不要了
              // if (this.code == 200) {
              clearInterval(this.timer);
              this.timer = null;
              done();
              this.$router.push("/paysuccess");
              // }
            }
          },
        });
        //你需要知道支付成功|失败
        //支付成功,路由的跳转,如果支付失败,提示信息
        //定时器没有,开启一个新的定时器
        if (!this.timer) {
          this.timer = setInterval(async () => {
            //发请求获取用户支付状态
            let result = await this.$API.reqPayStatus(this.orderId);
            //如果code==200
            if (result.code == 200) {
              //第一步:清除定时器
              clearInterval(this.timer);
              this.timer = null;
              //保存支付成功返回的code
              this.code = result.code;
              //关闭弹出框
              this.$msgbox.close();
              //跳转到下一路由
              this.$router.push("/paysuccess");
            }
          }, 1000);
        }
      },
}

注意点1:

问题:一定要注意大括号和反斜杠之间要有空格,严格注意语法形式,如下代码,如果中间没有空格,错误展示如图1;如果有空格,正确展示如图2

this.$alert(`<img src=${url} />`, "请你微信支付", {

在这里插入图片描述

如图1

在这里插入图片描述

如图2

注意点2:作为项目要一直问,是否支付成功,可能调取接口返回微信码是只有一次调用,但是用户是否支付成功,是需要开启定时器不停的去询问是否支付成功的。

注意点3:

问题:报错如图

在这里插入图片描述

答案:因为“获取支付信息”接口返回为201,没有拿到payInfo.codeUrl的值,所以需要手动初始化赋值字符串即可。

注意点4:

问题:判断逻辑中为啥要判断code=200后在跳转支付成功页面?

答案:防止用户还未支付,直接点击按钮“已支付成功”,跳转到支付成功页面。

注意点5:

问题:为啥需要方法beforeClose()?

答案:当用户点击按钮【“支付遇到问题”|“已支付成功”】会直接关闭弹窗,但实际点击按钮后还应该执行一些逻辑,比如支付成功跳转,比如失败弹窗提示等等。所以不能让它直接关闭,需要通过beforeClose去控制弹窗框的方法。

注意点6:

弹窗框逻辑:

  • 使用插件QRCode,先生成支付二维码
  • 弹窗提示
    • 关闭弹出框的配置值
      • 如果用户点击“取消”按钮,则:
        • 清除定时器
        • 设置timer为空
        • 关闭弹出框
      • 如果用户点击“已支付成功”,则:
        • 先判断是否支付成功了,是的话:
          • 清除定时器
          • 设置timer为空
          • 关闭弹出框
          • 跳转到下一路由(“/paysuccess”)
  • 这一步用于知道支付【成功|失败】,判断定时器有没有,没有就创建一个
    • 定时器发请求一直轮询获取用户支付状态,如果成功:
      • 清除定时器
      • 设置timer为空
      • 保存支付成功返回的code
      • 关闭弹出框
      • 跳转到下一路由(“/paysuccess”)

本人其他相关文章链接

1.vue尚品汇商城项目-day06【37.获取交易数据+38.用户地址信息展示+39.交易信息展示及交易页面完成+40.提交订单+41.支付组件内获取订单号与展示支付信息】
2.vue尚品汇商城项目-day06【vue插件-42.支付页面中使用ElementUI以及按需引入】
3.vue尚品汇商城项目-day06【43.微信支付业务】

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
Ecmaill微信商城源码,功能非常不错的。电脑商城多用户,个人支付宝免签,无需在支付宝申请接口,直接填写支付就可以实现在线支付功能,另外再加上24套微信店铺模板一起打包,在这里完全免费分享,无任何限制,免金币,免RMB下载。在这里非常感谢粉丝分享了这么好的源码,请懂得珍惜好源码,也是源码贡献者花人民币购买过来的。 多用户(微信+手机+电脑)多平台商城微信商城与电脑商城数据同步 支持绑定个人免签支付宝接口 目前网上没有几家,我们是率先推出 更新记录: 1、新增微信商城会员绑定功能,实现用户登录一次后,以后可以自动登录 2、新增微信会员卡、微信会员管理系统 3、新增微信端店铺首页团购展示,团购详情页展示,以及团购功能 4、新增微信商城首页底部菜单 5、新增电脑端商城绿色模板 修复记录(盗版源码存在这些问题): 1、修复了个别电脑用户成功登陆后就退出的问题 2、修复了电脑端客服QQ无效问题 3、修复了电脑端底部帮助中心页面链接问题 4、修复了电脑端个别店铺模板显示团购商品错误问题 5、修复了微信端商品分类不能显示问题 6、修复了微信端商品分页存在错误问题 7、修复了微信端有些模板不能显示快捷菜单问题 8、修复了微信端进入店铺登录后跳转到商城首页问题 9、修复了微信端首次注册跳转到商城首页问题,新版首次注册跳转到来源店铺首页 10、修复了微信端商品评论不能显示问题 安装说明: 主机必须支持php+mysql,建议联系我们购买云服务器,更安全,更稳定,更好的选择 1、运行http://你的域名/install 注意:安装时,请不要修改数据库前缀ecm_ 2、进入后台http://你的域名/admin 3、在后台导航的“网站”>“数据库”>“恢复”>“导入数据”。因为浏览器的关系,有时可能导入数据时会出现错误,这时您得用另外一种方式导入数据:进入您购买的空间后台,进入“数据库管理”的“高级管理”,进入phpmyadmin,选择您所使用的数据库,先删除里面原本的ecm_前缀的全部数据,再点击“导入”,选择安装文件夹的 vmall.sql ,点击执行 数据导入后,后台的管理员自动变成用户名是admin 密码是admin888 卖家测试账号seller 123456 买家测试账号buyer 123456 4、导入数据后点击后台右上角的“更新缓存”。因为浏览器的关系,有时点击没反应,请点旁边的“刷新”再“更新缓存”,如果还是不行请通过FTP删除temp文件夹下的全部文件 5、网站名称在“设置”>“网站设置”>“基本信息”里修改 6、个人免签支付宝等支付方式在“设置”>“支付方式”里“启用”下,再在前台卖家后台配置下 7、微信店铺模板在“店铺”>“店铺等级”,设置可选WAP模板勾选 8、电脑首页导航菜单在“网站”>“页面导航”添加,添加时位置要选择“中部”。团购的页面链接地址是:http://www.haoid.cn/index.php?app=search&act=groupbuy 9、如需用短网址,在“扩展”>“插件管理”>“店铺地址简写插件”,点击启用。启用后,店铺的网址可以用短网址,如:http://www.haoid.cn?2 (后台的数字是店铺的ID) 10、在前台卖家管理平台,设置下支付方式,在免签支付宝直接填写你个人的支付宝就行 11、设置配送方式,如果需要开启货到付款,请在设置里选择“中国”,然后点击新增就行 12、店铺的QQ客服和旺旺在店铺设置里设置,如果QQ显示未启用,请登陆QQ在线状态官网http://shang.qq.com 选择“推广工具”的“QQ通讯组件”,登陆要启用的QQ就可以,不用复制代码 13、WAP快捷菜单设置:微信上的客服QQ链接网址格式为:http://wpa.qq.com/msgrd?v=3&uin=2052977199&site=qq&menu=yes (把361818525换成您的QQ) 14、绑定微信公众平台接口,步骤如下: (1)、点击微信接口配置,可以看到接口配置URL和TOKEN,把它填写到微信公众号开发模式里 (2)、先点店铺里的“提交”,再在微信公众号上也“提交” 15、设置关注回复、关键词回复、消息回复,选择图文,链接填写的微信店铺网址 店铺首页网址获取方法:点击“店铺设置”,有个“我的店铺首页”,点击进入后就是店铺的网址 16、版权信息修改(请下载dreamweaver软件,修改内容,然后用FTP上传覆盖) (1)、商城首页LOGO在data/system/logo.gif(用做图软件制作) (2)、电脑商城首页客服QQ和页面底部的版权在themes/mall相应模板footer.html修改 (3)、电脑商城首页底部的帮助中心在后台>“网站”>“文章管理”中修改相应的内容,如果需要修改链接文字,请themes/mall相应模板server.html修改,并修改相应的链接末尾的文章ID (4)、电脑商城首页底部的联系方式在themes/mall相应模板server.html修改 (5)、电脑店铺页面底部的版权在themes/store/default/footer.html和themes/store/moolau/footer.html修改 (6)、手机商城首页的图片需要自己替换在themes/wap/mall/default/index.html 可在看到图片的路径 (7)、手机商城首页的底部菜单需要自已在themes/wap/mall/default/footer.html 修改 (8)、手机商城首页底部的版权在themes/wap/mall/default/footer.html修改 以上说明非常详细了

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

刘大猫.

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值