java springboot 如何实现小程序支付

今天给大家分享java小程序支付

首先我们学习任何东西要先看官网

下面是支付业务流程

我们具体用代码去实现上面的业务流程

功能截图

代码截图

复制代码
 pay(){
    //调用后台生成订单
    var orderNumber = "20210101123456";
    var amount = 0.01;


    WxPay.wxpay(app, amount, orderNumber, '支付测试', function(code) {
      // 下单成功,跳转到订单管理界面
      if (code == 0) {
        
      }
    });
  },

function wxpay(app, money, orderNum, goodsName, callback) {
  wx.request({
    header: {
      "token": app.globalData.token
    },
    url: app.globalData.domain + '/api/pay/wechat/unifiedOrder',
    data: {
      storeId: app.globalData.storeId,
      orderNum: orderNum,
      totalAmount: money,
      goodsName: goodsName
    },
    success: function (res) {
      if (res.data.code == 0) {
        // 发起支付
        wx.requestPayment({
          timeStamp: res.data.data.timeStamp,
          nonceStr: res.data.data.nonceStr,
          package: res.data.data.package,
          signType: 'MD5',
          paySign: res.data.data.paySign,
          fail: function (resp) {
            wx.showToast({
              title: '支付失败',
              icon: 'none'
            })
            callback(1);
          },
          success: function () {
            wx.showToast({
              title: '支付成功',
              icon: 'none'
            })
            callback(0);
          }
        })
      } else {
        wx.showToast({
          title: res.data.msg,
          icon: 'none'
        })
        callback(1);
      }
    }
  })
}

/**
     * 统一下单(详见https://pay.weixin.qq.com/wiki/doc/api/jsapi.php?chapter=9_1)
     * 在发起微信支付前,需要调用统一下单接口,获取"预支付交易会话标识"
     * 接口地址:https://api.mch.weixin.qq.com/pay/unifiedorder
     *
     * @param request 请求对象,注意一些参数如appid、mchid等不用设置,方法内会自动从配置对象中获取到(前提是对应配置中已经设置)
     */
    @GetMapping("/unifiedOrder")
    public R unifiedOrder(@RequestAttribute("userId") Long userId, String orderNum, BigDecimal totalAmount, String goodsName, HttpServletRequest req) throws WxPayException {
    	WxPayUnifiedOrderRequest request = new WxPayUnifiedOrderRequest();
    	request.setOutTradeNo(orderNum);
    	MemberEntity member = memberService.queryObject(userId);
    	request.setOpenid(member.getOpenid());
    	request.setBody(goodsName);
    	request.setNotifyUrl(notifyUrl);
    	request.setTotalFee(totalAmount.multiply(new BigDecimal(100)).intValue());
    	request.setSpbillCreateIp(IPUtils.getIpAddr(req));
    	request.setTradeType("JSAPI");
    	WxPayUnifiedOrderResult result = wxPayService.unifiedOrder(request);
    	
    	String timeStamp = String.valueOf(System.currentTimeMillis() / 1000);
        String nonceStr = String.valueOf(System.currentTimeMillis());
    			
    	//signKey 商户平台设置的密钥key
    	//签名字段:appId,timeStamp,nonceStr,package,signType
    			
    	Map params = new HashMap();
    	params.put("appId", wxPayService.getConfig().getAppId());
    	params.put("timeStamp", timeStamp);
    	params.put("nonceStr", nonceStr);
    	params.put("package", "prepay_id=" + result.getPrepayId());
    	params.put("signType", "MD5");
    	
    	String sign = SignUtils.createSign(params, "MD5",    wxPayService.getConfig().getMchKey(), new String[0]);
    	
    	params.put("paySign", sign);
    	
    	return R.ok().put("data", params);
    }
相关推荐
克里斯蒂亚诺更新10 分钟前
myeclipse的pojie
java·ide·myeclipse
迷藏49428 分钟前
**eBPF实战进阶:从零构建网络流量监控与过滤系统**在现代云原生架构中,**网络可观测性**和**安全隔离**已成为
java·网络·python·云原生·架构
迷藏49429 分钟前
**发散创新:基于Solid协议的Web3.0去中心化身份认证系统实战解析**在Web3.
java·python·web3·去中心化·区块链
qq_4335021832 分钟前
Codex cli 飞书文档创建进阶实用命令 + Skill 创建&使用 小白完整教程
java·前端·飞书
safestar20121 小时前
ES批量写入性能调优:BulkProcessor 参数详解与实战案例
java·大数据·运维·jenkins
还在忙碌的吴小二1 小时前
Harness 最佳实践:Java Spring Boot 项目落地 OpenSpec + Claude Code
java·开发语言·spring boot·后端·spring
风吹迎面入袖凉1 小时前
【Redis】Redis的五种核心数据类型详解
java·redis
夕除1 小时前
javaweb--02
java·tomcat
ailvyuanj1 小时前
2026年Java AI开发实战:Spring AI完全指南
java
张np1 小时前
java进阶-Dubbo
java·dubbo