课程支付功能(查询订单接口) | 学习笔记

简介: 简介:快速学习课程支付功能(查询订单接口)

开发者学堂课程【微服务+全栈在线教育实战项目演练(SpringCloud Alibaba+SpringBoot):课程支付功能(查询订单接口)】学习笔记,与课程紧密联系,让用户快速学习知识。

课程地址:https://developer.aliyun.com/learning/course/667/detail/11490


课程支付功能(查询订单接口)

 

内容介绍:

一、 需求分析:根据订单 id 查询订单信息

二、生成微信支付二维码

 

一、需求分析:根据订单 id 查询订单信息

代码示例:

//根据订单id查询订单信息

RGetMapping{"getOrderInfo/ {orderId}"}

public R getOrderInfo(@PathVariable String orderId){

QueryWrapper<Order> wrapper = new QueryWrapper<>() ;

wrapper.eq( column: " order_no" , orderId);

Order order = orderService. getOne(wrapper) ;

return R. ok() . data("item" , order) ;

}

其中 order_no 的 id,不是订单号。

 

二 、生成微信支付二维码

1、 编写 controller

代码示例:

@RestController

@RequestMapping("" / orderservice/log")

@CrossOrigin

public class PayLogController {

@Autawired

private PayLogService payService;

/**

*生成二维码

*@return*/

@GetMapping(" IcreateNative/{orderNo}”)

public R createNative(@PathVariable String orderNo) {

public R createNative (@PathVariable String orderNo){

Map map = payService.createNative (orderNo);

return R.ok ().data(map) ;

}

}

}

2.编写 service

@Service

public class PayLogServiceImpl extends ServiceImpl PayLogMlapper,PayLog) implements PayLogservice {

@Autavired

private TOrderService orderService;

@Override

public ap createNative (String orderNo){

try {

//根据订单id获取订单信息

Queryr apper<TOrder> wrapper=new Querywrapper<>();

wrapper.eq("" order_no" , orderNo);

TOrder order = orderService.getOne(wrapper );

Map m = new HashMap ();

根据订单参数把订单编号查出来

//1.设置支付参数

m.put (" appid" ,“wx74862e0dfcf69954”);m.put ("mch_id","1558950191"");

m.put ("nonce_str", wXPayUtil.generateNonceStr());

m.put ("body" , order.getCourseTitle());

m.put(" out_trade_no" ,orderNo);m.put("total_fee",order.getTotalFee().multiply(newBigDecimal("100" )).longValue()+"");

m.put("spbill_create_ip","127.0.0.1");m.put("notify_url"","http://guli.shop/api/order/weixinPay/seixinNotifyin");

m.put("trade_type",“NATIVE");

//2、HTTPClient来根据URL访问第三方接口并且传递参数

HttpClientclient=new HttpClient

("https://api.mch.weixin.qq.cam/pay/unifiedorder" );

/ /client设置参数

client.setXmlParam(viKPayUJtil.generateSignedXml(m,“T6m91K73b0kn9g5v426MNKfHQH7X8rKwub"));

client.setHttps(true);

client.post();

l//3、返回第三方的数据

String xml = client.getContent();

Mlap<String,String> resultMap = wXPayUtil.xmlToMlap(xml);

//4、封装返回结果集

Map map = new HashMap<>();

map.put ("out_trade_no" , orderNo);

map .put (" course_id", order. getCourseId());

map.put ("total_fee" , order.getTotalFee());

map.put (result_code" , resultMap.get("result_code" ));

map.put (" code_url",resultMap. get (" code_url"));

//信支付二维码2小时过期,可采取2小时未支付取消订单

//redisTemplate.opsForValue().set(orderNo,map,120,TimeUnit.MINUTES);

return map;

} catch (Exception e) {

e.printStackTrace();

return new HashMap<>();

}

}

}

相关文章
|
JSON 数据处理 数据格式
Python中JSON结构数据的高效增删改操作
Python中JSON结构数据的高效增删改操作
224 0
|
人工智能 前端开发 5G
探索移动应用开发的未来趋势与挑战
【8月更文挑战第65天】随着智能手机的普及和移动互联网的快速发展,移动应用已经成为人们日常生活中不可或缺的一部分。本文将深入探讨移动应用开发的新趋势、面临的挑战以及如何通过创新技术来克服这些挑战。我们将从用户体验设计、跨平台开发框架、人工智能集成等多个角度出发,分析移动应用开发的最新动态,并以代码示例具体说明如何在实际应用中实现这些技术和策略。无论你是开发者还是对移动应用感兴趣的读者,这篇文章都将为你提供有价值的信息和启示。
|
算法 调度
死锁原因及死锁检测组件的实现
死锁原因及死锁检测组件的实现
237 0
|
JavaScript 前端开发
javascript手写操作符
手写JavaScript中的操作符
246 0
|
3天前
|
数据采集 人工智能 安全
|
12天前
|
云安全 监控 安全
|
4天前
|
自然语言处理 API
万相 Wan2.6 全新升级发布!人人都能当导演的时代来了
通义万相2.6全新升级,支持文生图、图生视频、文生视频,打造电影级创作体验。智能分镜、角色扮演、音画同步,让创意一键成片,大众也能轻松制作高质量短视频。
1052 151
|
4天前
|
编解码 人工智能 机器人
通义万相2.6,模型使用指南
智能分镜 | 多镜头叙事 | 支持15秒视频生成 | 高品质声音生成 | 多人稳定对话