小程序微信支付v3版java代码,支付与退款

支付功能

首先需要自己在微信平台申请账户,将openid与key放入配置文件中进行读取,在公众平台配置支付回调地址,还需要下载好加密的证书,对信息进行加密

编写代码按照微信提供的文档进行拼接自己的参数,进行加密处理后请求微信提供的地址,因为我写的是小程序,在登陆时候就保存用户的openid了,直接获取即可。同时配置的回调地址需要外网能够访问。

 

 @RequestMapping(value = "do", method = RequestMethod.POST)
    public R payVip(@RequestBody WxVo vo) throws Exception {
        User user = userService.getById(vo.getUserid());
        String userOpenid = user.getOpenid();
        if (StringUtils.isEmpty(userOpenid)){
            StringBuffer baseAccessTokenUrl = new StringBuffer()
                    .append("https://api.weixin.qq.com/sns/jscode2session")
                    .append("?appid=%s")
                    .append("&secret=%s")
                    .append("&js_code=%s")
                    .append("&grant_type=authorization_code");
            String accessTokenUrl = String.format(baseAccessTokenUrl.toString(),
                    ConstantPropertiesUtil.WX_OPEN_APP_ID,
                    ConstantPropertiesUtil.WX_OPEN_APP_SECRET,
                    vo.getCode());
            OkHttpClient client = new OkHttpClient();
            Request request = new Request.Builder().url(accessTokenUrl).build();
            Response response = client.newCall(request).execute();
            if (response.isSuccessful()) {
                String body = response.body().string();
                JSONObject jsonObject = JSONObject.parseObject(body);
                String session_key = jsonObject.getString("session_key");
                String openid = jsonObject.getString("openid");
                userOpenid=openid;
            }else {
                return R.error().message("微信授权失败");
            }
 
        }
       //判断自己的业务逻辑
        //开始支付,创建数据体
        JSONObject order = new JSONObject();
        order.put("appid", ConstantPropertiesUtil.WX_OPEN_APP_ID);
        order.put("mchid",ConstantPropertiesUtil.PARTNER);
        order.put("description","支付");
        String str_no = new DateTime().toString("yyyyMMddHHmmssSSS");
        order.put("out_trade_no",str_no);
        System.out.println(str_no);
        order.put("notify_url","https://www.dsxssd.com/api/dsxs/wx/payNotice");
        JSONObject amount =  new JSONObject();
        amount.put("total",(long)(companyClass.getMoney()*100));
        amount.put("currency","CNY");
        order.put(&#
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值