第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號(hào)安全,請(qǐng)及時(shí)綁定郵箱和手機(jī)立即綁定

【九月打卡】第2天 Java支付全家桶 企業(yè)級(jí)各類支付手段一站式解決方案(4-9)

標(biāo)簽:
活動(dòng)

课程名称:Java支付全家桶 企业级各类支付手段一站式解决方案

课程章节:4-9 封装主动查询订单支付结果

主讲老师:神思者

课程内容:

今天课程学习的主要知识点内容包括:
为什么需要主动查询、主动查询支付结果的触发时机、主动查询支付结果代码实现。

课程收获:

1、为什么需要主动查询?
因为商户系统不一定会接收到支付通知,原因可能会有多种,比如:
(1)由于网络不稳定或者故障,导致商户系统接收不到支付结果的通知;
(2)如果微信平台出现故障,有可能用户支付成功以后,没有发送支付通知给商户系统;

2、主动查询支付结果的触发时机
(1)应该在什么时机触发主动查询?
当小程序上面支付成功后,则可以向商户系统发出请求,通知商户系统去微信平台查询订单支付的结果。
(2)为了确认该笔支付是确实完成支付了,不能直接用前端传输的结果(因为有伪造的可能),需要后端自动向微信平台进行查询验证,以微信商户的信息为准。

3、主动查询支付结果代码实现
主要核心实现步骤和代码如下:
(1)定义接收类

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

(2)向微信商户平台发起验证的主要实现逻辑

@Login
@PostMapping("/updateOrderPayStatus")
@ApiOperation("更新商品支付订单状态")
private R updateOrderPayStatus(@RequestBody UpdateOrderStatusForm form, @RequestHeader Map header) {
    ValidatorUtils.validateEntity(form);
    String token = header.get("token").toString();
    int userId = Integer.parseInt(jwtUtils.getClaimByToken(token).getSubject());
    int orderId = form.getOrderId();
    OrderEntity order = orderService.getOne(
            Wrappers.<OrderEntity>lambdaQuery()
                    .eq(OrderEntity::getId, orderId)
                    .eq(OrderEntity::getUserId, userId)
                    .last("limit 1")
    );
    if (null == order) {
        return R.error("用户与订单不匹配");
    }
    try {
        Map map = new HashMap();
        map.put("out_trade_no", order.getCode());
        WXPay wxPay = new WXPay(myWXPayConfig);
        Map<String, String> result = wxPay.orderQuery(map);
        String returnCode = result.get("return_code");
        String resultCode = result.get("result_code");
        String tradeState = result.get("trade_state");
        if ("SUCCESS".equals(returnCode) && "SUCCESS".equals(resultCode) && "SUCCESS".equals(tradeState)) {
            order.setStatus(2);
            order.setPaymentType(1);
            orderService.updateById(order);
            return R.ok("订单状态已修改");
        }
    } catch (Exception e) {
        e.printStackTrace();
        return R.error("查询支付订单失败");
    }
    return R.error("订单状态未修改");
}

點(diǎn)擊查看更多內(nèi)容
TA 點(diǎn)贊

若覺得本文不錯(cuò),就分享一下吧!

評(píng)論

作者其他優(yōu)質(zhì)文章

正在加載中
  • 推薦
  • 評(píng)論
  • 收藏
  • 共同學(xué)習(xí),寫下你的評(píng)論
感謝您的支持,我會(huì)繼續(xù)努力的~
掃碼打賞,你說多少就多少
贊賞金額會(huì)直接到老師賬戶
支付方式
打開微信掃一掃,即可進(jìn)行掃碼打賞哦
今天注冊有機(jī)會(huì)得

100積分直接送

付費(fèi)專欄免費(fèi)學(xué)

大額優(yōu)惠券免費(fèi)領(lǐng)

立即參與 放棄機(jī)會(huì)
微信客服

購課補(bǔ)貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動(dòng)學(xué)習(xí)伙伴

公眾號(hào)

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號(hào)

舉報(bào)

0/150
提交
取消