微信公众号之调起h5支付(代码详解)

微信公众号支付

最近公司项目做了微信公众号支付,也在网上看了其他网友写的关于微信公众号支付的博客,首先很感谢他们把代码贡献出来,由于微信公众号支付API文档的变化,有些博客上的代码不能复用,近期贡献出来的代码,虽新但是代码不全,所以我把自己的代码整理一下,没有大神们封装的那么好,但是简单可用,供网友参考,如有疑惑或更好的方法请留言,后期会有微信其他的支付代码贡献给大家:
- 第一部分:引入pom文件,我们用的是springboot框架,只需要引这一个依赖就行了

    <dependency>
        <groupId>jdom</groupId>
        <artifactId>jdom</artifactId>
        <version>1.1</version>
    </dependency>
  • 第二部分:前端js页面
  • 第一次用markdown编辑器,不熟悉,前端js页面代码不全,仅供参考

    $(function(){
        var url='********';//路径
        var orderId;
        $.ajax({
            type:"post",
            url:url+'这里添具体路径',
            dataType:'json',
            async:false,
            xhrFields: {
                withCredentials:true
            },
            crossDomain: true,
            success:function(data){
                orderId=data.data.orderId;
                var content;
                content =  '<div class="outer">'+data.data.orderDesc+'</div><div class="inner">'+data.data.orderMoney+'</div>';
                $('#content').append(content)
            }
        })
        var appId;
        var timeStamp;
        var nonceStr;
        var package;
        var signType;
        var paySign;
        $.ajax({
            type:"post",
            url:url+'这里添具体路径',
            dataType:'json',
            async:false,
            data:{"orderId":orderId},
            xhrFields: {
                withCredentials:true
            },
            crossDomain: true,
            success:function(data){
                console.log(data)
                appId=data.data.appId
                timeStamp=data.data.timeStamp
                nonceStr=data.data.nonceStr
                package=data.data.package
                signType=data.data.signType
                paySign=data.data.paySign
            }
        })
        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"){  
                     window.location.replace("user_index.html")
                }else if(res.err_msg == "get_brand_wcpay_request:cancel"){  
                    alert("取消支付!");
                }else{  
                    alert("支付失败!");
                }  
            }); 
        }
        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();
            }       
        }
        $('#yajin').click(function(){
            pay()
        })
    })
    
  • 第三部分后端代码

  • 如果在用户登陆微信公众号时,就获取了openId,不用再用tookie获取了,拿来直接用就行了
    package yangxiaosong.yangweixin;
    import com.alibaba.fastjson.JSONObject;
    import yangxiaosong.controller.wxpayutils.WXConfig;
    import yangxiaosong.dataobject.user.User;
    import yangxiaosong.dataobject.wxpay.WXPayOrder;
    import yangxiaosong.enums.PayStatusEnum;
    import yangxiaosong.service.ReturnRecordService;
    import yangxiaosong.service.UserService;
    import yangxiaosong.service.WXPayOrderService;
    import yangxiaosong.utils.CookieUtil;
    import yangxiaosong.utils.RedisUtil;
    import yangxiaosong.utils.ResultVOUtil;
    import yangxiaosong.viewobject.ResultVO;
    import lombok.extern.slf4j.Slf4j;
    import org.jdom.JDOMException;
    import org.springframework.beans.factory.annotation.Autowired;
    import org.springframework.data.redis.core.StringRedisTemplate;
    import org.springframework.web.bind.annotation.*;

import javax.servlet.http.Cookie;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.*;
import java.math.BigDecimal;
import java.util.*;

@RestController
@RequestMapping(“/wxpay”)
@Slf4j

  • 2
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 6
    评论
管理系统,作为一种高效的企业运营管理工具,旨在通过集成化、系统化的手段,对组织内部的各类资源进行规划、协调、控制和优化,以实现企业战略目标,提升运营效率,增强核心竞争力。以下是对管理系统的详细介绍: 一、定义与构成 管理系统是指由硬件设备、软件应用、数据资源、人员以及相关管理制度共同构建的,用于处理、监控、分析和决策各类业务活动的综合信息系统。它通常包括以下几个核心组成部分: 数据采集模块:负责从各类业务环节中实时、准确地收集信息,形成企业的基础数据资源。 数据分析模块:运用统计学、人工智能等技术对数据进行深度挖掘和智能分析,提供决策支持。 业务流程管理模块:设计、执行、监控和优化业务流程,确保各项任务按照预定规则高效运转。 决策支持模块:基于数据分析结果,为管理者提供直观的可视化报告,辅助其进行科学决策。 用户界面与交互模块:提供友好的人机交互界面,方便用户操作使用。 二、主要类型与功能 管理系统根据所针对的管理对象和领域,可分为多种类型,如: 人力资源管理系统(HRM):涵盖招聘、培训、绩效考核、薪酬福利等人力资源全流程管理,提升人才效能。 客户关系管理系统(CRM):集中管理客户信息,优化销售、营销和服务流程,提升客户满意度和忠诚度。 供应链管理系统(SCM):整合供应商、制造商、分销商、零售商等供应链各环节,实现物流、资金流、信息流的协同运作。 企业资源计划系统(ERP):对企业内部财务、生产、采购、库存、销售等各项资源进行全面集成管理,提高整体运营效率。 项目管理系统(PM):对项目全生命周期进行规划、跟踪、控制,确保项目按时、按质、按预算完成。 三、价值与优势 提高效率:自动化工作流程、标准化业务操作,显著减少人工干预,提升工作效率。 优化决策:实时数据分析与预测,提供精准的决策依据,助力管理层做出明智选择。 资源整合:打破部门壁垒,实现信息共享,优化资源配置,降低运营成本。 合规风控:内置法规遵循机制,强化内部控制,降低经营风险。 持续改进:通过对系统数据的持续监控与分析,驱动业务流程持续优化,促进企业创新与发展。 总的来说,管理系统作为现代企业管理的重要工具,以其强大的数据处理能力、智能化的决策支持和高效的业务流程管理,有力推动了企业的数字化转型,助力企业在日益激烈的市场竞争中保持竞争优势。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值