当前位置: 首页 > news >正文

ps怎样做网站大图wordpress固定链接精简

ps怎样做网站大图,wordpress固定链接精简,网盟推广平台,陕西建设厅官网证件查询网前言 微信支付-微信H5外部浏览器支付微信支付-微信H5内部浏览器支付微信支付-PC端扫码支付「本文」 本篇是微信支付系列的第三篇#xff0c;PC端扫码支付。 开发环境#xff1a;Java SpringBoot Vue WxJava(开源SDK) 流程补充#xff1a;关于微信PC端扫码支付#xff0c;… 前言 微信支付-微信H5外部浏览器支付微信支付-微信H5内部浏览器支付微信支付-PC端扫码支付「本文」 本篇是微信支付系列的第三篇PC端扫码支付。 开发环境Java SpringBoot Vue WxJava(开源SDK) 流程补充关于微信PC端扫码支付首先前端传递商品金额给后端生成支付二维码内容「本案例二维码由前端生成」获得后端返回的内容后前端根据内容生成二维码然后展示给用户用户扫码支付成功后微信官方推送给后端接口用户支付信结果再根据结果更新数据库订单信息。 如下是正文部分。 1、获取二维码内容 需要后端创建二维码接口具体代码如下 /** * 创建二维码 */RequestMapping(value  createQRCode, method  {RequestMethod.POST})ApiOperation(value  创建二维码)public ResultObject createQRCode(RequestBody WechatOrderRequest obj) {    Orders orders  null;    if (StringUtils.isNotBlank(obj.getOrderId())) {        orders  ordersService.searchOrder(obj.getUserId, obj.getOrderId());    } else {        orders  ordersService.createOrder(obj.getUserId, obj.getTotal_fee(), new);    }    WechatOrderResponse wechatOrderResponse  new WechatOrderResponse();    wechatOrderResponse.setCodeUrl(wechatService.createOrderInfo(orders);    wechatOrderResponse.setOrderId(orders.getOrderId());    return ResultUtil.success(wechatOrderResponse);} 关于上方方法WechatOrderRequest实体包含前端商品金额以及用户信息、创建订单方式「是新建订单还是未支付订单再次支付」等总之主要作用就是创建订单实体之所以判断一下 OrderId是因为未支付订单再次支付调用的接口共用了。 关于 createOrder() 创建订单的方法大致如下 public Orders createOrder(String userId,String total_fee){    String  orderIdToolUtils.makeUUID();    Orders ordersnew Orders();    orders.setOrderId(orderId);    orders.setOrderStatus(0);    orders.setAmount(new BigDecimal(total_fee));    orders.setCreateTime(new Date());    orders.setUserId(userId);    orders.setInvoice(0);    orders.setAppType(appType);    orders.setNonceStr(ToolUtils.makeUUID().toUpperCase());    ordersDao.insertOrders(orders);    return  orders;} searchOrder() 订单实体查询的接口就不贴出来了就是简单的查询数据库。 我们接着来看主要的方法wechatService.createOrderInfo() Transactionalpublic String createOrderInfo(Orders orders) {    WxPayMwebOrderResult result  null;    try {        WxPayUnifiedOrderRequest orderRequest  new WxPayUnifiedOrderRequest();        orderRequest.setOutTradeNo(orders.getOrderId());        orderRequest.setBody(我是商品描述);        orderRequest.setTotalFee(orders.getAmount().multiply(new BigDecimal(100)).intValue());        orderRequest.setSpbillCreateIp(DispatchParams.getInstance().getWechatSpbillCreateIp());        orderRequest.setProductId(orders.getOrderId());        orderRequest.setTradeType(WxPayConstants.TradeType.NATIVE);        result  wxPayService.createOrder(orderRequest);        return result.getCodeUrl();    } catch (WxPayException e) {        logger.error([微信支付异常] 异常, e);        throw 自定义异常;    }} 补充由于使用了 WxJava所以接口相对是非常简洁的赋予 WxPayUnifiedOrderRequest 对象必须的参数比如支付金额商品描述ip支付类型等然后调动 createOrder() 方法就能得到二维码内容了具体请求过程可以自己进入源码查看。 返回的内容格式weixin://wxpay/bizpayurl?pr1RhYbXa ok我们再回到最开始的方法我们将获得的二维码内容、订单id返回给前端二维码内容供前端生成二维码而订单id的作用则是在当前支付界面前端根据订单id不停地请求后端订单查询接口如果后端返回结果给出响应的提示比如支付成功支付失败等。 2、前端生成二维码 前端生成二维码有许多方式本文采用 qrcodejs2 生成package.json 加入以下依赖 dependencies: {    qrcodejs2: 0.0.2} 代码中使用如下代码精简过了就两个主要方法看个热闹就行哈具体的自行实现 template    div        div idqrcode classwechat_code/div    /div/templatescript    import QRCode from qrcodejs2    export default {        methods:{            qrCode(){                if( this.codeUrl   this.codeUrl!){                    if(this.qrcode ! null){                        this.qrcode.clear();                        this.qrcode.makeCode(this.codeUrl);                    }else{                        this.qrcode  new QRCode(qrcode, {                            width: 200,                            height: 200, // 高度                            text: this.codeUrl // 二维码内容                        })                    }                    this.setTimeoutsetTimeout(this.queryOrder,3000)                }            },            queryOrder(){                if(this.orderId ! null   this.orderId ! ){                    定时查询后端,请自行修改接口                    this.getRequest(请求路径, this.orderId).then(res  {                      this.loading  false;                      if (res.success) {                         clearTimeout(this.setTimeout);                         this.visible  false;                         this.$Modal.success({                            title: this.$t(global.prompt),                            content: this.$t(recharge.paySuccess,{ amount:this.money })                         });                         this.$emit(search-orders);                      }else{                         this.setTimeoutsetTimeout(this.queryOrder,1500)                      }                    });                }            }       },/script 简单说一下这两个方法qrCode() 用于根据后端返回的内容 codeUrl 创建二维码queryOrder() 方法永不不停地请求后端接口查询订单信息如果返回数据就不再继续调用自身这块这样做就是为了给用户有好的提示比如下方是一个支付二维码的弹窗用户支付成功了不但没有提示窗口还一直打开着想想用户体验是多么的不好。 3、微信推送支付结果 用户扫码支付后微信会自动回调后端 notify 接口具体如下「代码仅供参考」 RequestMapping(value  /notify)ResponseBodypublic String notify(RequestBody String body) throws Exception {        WxPayOrderNotifyResult result  null;        try {            result  wxPayService.parseOrderNotifyResult(body);        } catch (WxPayException e) {            logger.error([微信解析回调请求] 异常, e);            return WxPayNotifyResponse.fail(e.getMessage());        }        logger.info(处理微信支付平台的订单支付);        logger.info(JSONObject.toJSONString(result));        String appid  result.getAppid();//应用ID        String attach  result.getAttach();//商家数据包        String bank_type result.getBankType();//付款银行        Integer cash_fee  result.getCashFee();//现金支付金额        String fee_type  result.getFeeType();//货币种类        String is_subscribe  result.getIsSubscribe();//是否关注公众账号        String mch_id  result.getMchId();//商户号        String nonce_str  result.getNonceStr();//随机字符串        String openid  result.getOpenid();//用户标识        String out_trade_no  result.getOutTradeNo();// 获取商户订单号        String result_code  result.getResultCode();// 业务结果        String return_code  result.getReturnCode();// SUCCESS/FAIL        String sign  result.getSign();// 获取签名        String time_end  result.getTimeEnd();//支付完成时间        Integer total_fee  result.getTotalFee();// 获取订单金额        String trade_type  result.getTradeType();//交易类型        String transaction_id  result.getTransactionId();//微信支付订单号        //如果成功写入数据库        if(SUCCESS.equals(return_code)) {// 如果微信返回的结果是success则修改订单状态            Orders orders  ordersDao.selectByOrderId(out_trade_no);            // 验证签名            if(orders ! null){                if(!1.equals(orders.getOrderStatus())){//判断是否订单已经完成了                    // 判断金额是否跟数据库订单金额一致放置人为修改                    if(orders.getAmount().multiply(new BigDecimal(100)).compareTo(new BigDecimal(total_fee))  0){                        //更新订单状态                        业务逻辑处理部分...                        return WxPayNotifyResponse.success(订单已经处理成功!);                    }else{                        logger.error(微信金额不一致);                        return WxPayNotifyResponse.fail(订单金额不一致);                    }                }else {                    return WxPayNotifyResponse.success(订单已经处理成功!);                }            }else{                return WxPayNotifyResponse.fail(商户订单号不匹配);            }        }        System.out.println(回调成功);        System.out.println(----返回给微信的xml  result);        return WxPayNotifyResponse.success(支付成功!);} 最后 博客地址https://www.cgblog.com/niceyoo 如果觉得这篇文章有丶东西不放关注一下我关注是对我最大的鼓励~ 18年专科毕业后期间一度迷茫最近我创建了一个公众号用来记录自己的成长。
http://www.pierceye.com/news/944646/

相关文章:

  • 学校网站推广方案商城系统app
  • 图书馆管理系统产品介绍网站如何做seo
  • 威县企业做网站做网站游戏的网站有哪些
  • 如何做网站二维码广州营销型网站建设
  • 网站网页转小程序教程网站建设公司 枫子伽叩
  • 做民宿哪家网站最好网站推广技巧有哪些?
  • 北京做网站推广兼职wordpress 分段循环
  • 大气学校网站模板直播网站建设书籍
  • 榆林市住房和城市建设局网站网络系统管理比赛
  • 学校网站建设论文哪里网站备案最快
  • 上海公交建设公司官网seo排名优化工具
  • 网站设计与网站制作什么是网络营销中最容易出问题的步骤
  • 网站做自适应好不好网站开发结构图
  • wordpress sky主题东莞整站优化排名
  • 黑龙江 建设监理协会网站开发公司资质查询
  • 中标建设集团有限公司 网站怀化主要网站
  • 国外网站seo国外企业网站建设
  • 很简单的做设计的网站网站建设会议讲话
  • 泉港区建设局网站廉政配置wordpress环境
  • 公众号开发培训网站谷歌优化怎么做
  • 网站设计合理汕头市潮南区紧急提醒
  • 国外网站流量查询企业网站报价单
  • 聊城高唐网站建设公司wordpress设置域名
  • 有帮忙做儿童房设计的网站吗东莞横沥网站制作
  • 国外网站模板欣赏WordPress 编辑器修改默认字号
  • 厦门同安网站建设视频购物网站开发方案
  • 什么是建设网站的主题兼职做问卷调查的网站
  • 装饰网站建设软件下载公司旅游视频网站模板免费下载
  • aws网站建设个体户做网站去哪里做
  • 用四字成语做网站域名好吗宁波网站推广专业服务