新零售支付全家桶


主动查询支付结果

编写UpdateOrderStatusForm.java

@Data
@ApiModel(value = "更新订单状态的表单")
public class UpdateOrderStatusForm {
    @ApiModelProperty(value = "订单ID")
    @Min(1)
    private Integer orderId;
}

编写WxCtroller.java

@Login
@PostMapping("/updateOrderStatus")
@ApiOperation("更新商品订单状态")
public R updateOrderStatus(@RequestBody UpdateOrderStatusForm form, @RequestHeader HashMap header) {
    ValidatorUtils.validateEntity(form);
    String token = header.get("token").toString();
    int userId = Integer.parseInt(jwtUtils.getClaimByToken(token).getSubject());
    int orderId = form.getOrderId();
    OrderEntity orderEntity = new OrderEntity();
    orderEntity.setUserId(userId);
    orderEntity.setId(orderId);
    QueryWrapper wrapper = new QueryWrapper(orderEntity);
    int count = orderService.count(wrapper);
    if (count == 0) {
        return R.error("用户与订单不匹配");
    }
    orderEntity = orderService.getOne(wrapper);
    String code = orderEntity.getCode();
    HashMap map = new HashMap();
    map.put("appid", appId);
    map.put("mch_id", mchId);
    map.put("out_trade_no", code);
    map.put("nonce_str", WXPayUtil.generateNonceStr());
    try {
        String sign = WXPayUtil.generateSignature(map, key);
        map.put("sign", sign);
        WXPay wxPay = new WXPay(myWXPayConfig);
        Map<String, String> result = wxPay.orderQuery(map);
        String returnCode = result.get("return_code");
        String resultCode = result.get("result_code");
        if ("SUCCESS".equals(returnCode) && "SUCCESS".equals(resultCode)) {
            String tradeState = result.get("trade_state");
            if ("SUCCESS".equals(tradeState)) {
                UpdateWrapper updateWrapper = new UpdateWrapper();
                updateWrapper.eq("code", code);
                updateWrapper.set("status", 2);
                updateWrapper.set("payment_type",1);
                orderService.update(updateWrapper);
                return R.ok("订单状态已修改");
            } else {
                return R.ok("订单状态未修改");
            }
        }
        return R.ok("订单状态未修改");
    } catch (Exception e) {
        e.printStackTrace();
        return R.error("查询支付订单失败");
    }
}

编写order.vue

uni.request({
    url:that.url.wx.updateOrderStatus,
    method:"POST",
    header:{
        "token":uni.getStorageSync("token")
    },
    data:{
        "orderId":id
    },
    success:function(resp){
        let pages=getCurrentPages()
        let page=pages[pages.length-1]
        page.onShow()
    },
    fail:function(){
        console.log("更新订单状态失败")
    }
})

页面列表

ITEM_HTML