结果:
分页查询订单
请求参数:PUT请求路径:/order/{id}/{status}请求参数:id:订单编号,String类型,不能为空status:订单状态,不能为空返回结果:null
测试:
请求方式:GET请求路径:/order/{id}请求参数:id,订单编号返回结果:Order,订单的json对象
未付款时查询,测试:
请求方式:Get请求路径:/state/{id}请求参数:id,订单编号返回结果:0,未查询到支付信息1,支付成功2,支付失败
请求方式:Get请求路径:/order/list请求参数:page:当前页,Integer类型,默认为1rows:每页大小,Integer类型,默认为5status:订单状态,String类型,默认查询全部状态订单返回结果:PageResult对象,包含下面属性:total:总条数items:当前页订单数组订单对象
测试:
测试:
查询支付状态
更新订单状态
测试:
缠论实现及通达信公式接口扩展,接口说明:
结果:
缠论实现及通达信公式接口扩展,接口说明:
结果:
缠论实现及通达信公式接口扩展,接口说明:
数据库中也发生了改变:
微信支付工具
@Component
public class PayHelper {
private WXPay wxPay;
private static final Logger logger = LoggerFactory.getLogger(PayHelper.class);
@Autowired
private StringRedisTemplate redisTemplate;
@Autowired
private OrderService orderService;
public PayHelper(PayConfig payConfig) {
// 真实开发时
wxPay = new WXPay(payConfig);
// 测试时
// wxPay = new WXPay(payConfig, WXPayConstants.SignType.MD5, true);
}
public String createPayUrl(Long orderId) {
String key = 'ly.pay.缠论实现及通达信公式缠论实现及通达信公式接口扩展,接口扩展,url.' + orderId;
try {
String 缠论实现及通达信公式缠论实现及通达信公式接口扩展,接口扩展,url = this.redisTemplate.opsForValue().get(key);
if (StringUtils.isNotBlank(缠论实现及通达信公式缠论实现及通达信公式接口扩展,接口扩展,url)) {
return 缠论实现及通达信公式缠论实现及通达信公式接口扩展,接口扩展,url;
}
} catch (Exception e) {
logger.error('查询缓存付款链接异常,订单编号:{}', orderId, e);
}
try {
Map data = new HashMap<>();
// 商品描述
data.put('body', '商城测试');
// 订单号
data.put('out_trade_no', orderId.toString());
//货币
data.put('fee_type', 'CNY');
//金额,单位是分
data.put('total_fee', '1');
//调用微信支付的终端IP(estore商城的IP)
data.put('spbill_create_ip', '127.0.0.1');
//回调地址
data.put('notify_缠论实现及通达信公式缠论实现及通达信公式接口扩展,接口扩展,url', 'http://test.learn.com/wxpay/notify');
// 交易类型为扫码支付
data.put('trade_type', 'NATIVE');
//商品id,使用假数据
data.put('product_id', '1234567');
Map result = this.wxPay.unifiedOrder(data);
if ('SUCCESS'.equals(result.get('return_code'))) {
String 缠论实现及通达信公式缠论实现及通达信公式接口扩展,接口扩展,url = result.get('code_缠论实现及通达信公式缠论实现及通达信公式接口扩展,接口扩展,url');
// 将付款地址缓存,时间为10分钟
try {
this.redisTemplate.opsForValue().set(key, 缠论实现及通达信公式缠论实现及通达信公式接口扩展,接口扩展,url, 10, TimeUnit.MINUTES);
} catch (Exception e) {
logger.error('缓存付款链接异常,订单编号:{}', orderId, e);
}
return 缠论实现及通达信公式缠论实现及通达信公式接口扩展,接口扩展,url;
} else {
logger.error('创建预交易订单失败,错误信息:{}', result.get('return_msg'));
return null;
}
} catch (Exception e) {
logger.error('创建预交易订单异常', e);
return null;
}
}
/**
* 查询订单状态
*
* @param orderId
* @return
*/
public PayState queryOrder(Long orderId) {
Map data = new HashMap<>();
// 订单号
data.put('out_trade_no', orderId.toString());
try {
Map result = this.wxPay.orderQuery(data);
if (result == null) {
// 未查询到结果,认为是未付款
return PayState.NOT_PAY;
}
String state = result.get('trade_state');
if ('SUCCESS'.equals(state)) {
// success,则认为付款成功
// 修改订单状态
this.orderService.updateStatus(orderId, 2);
return PayState.SUCCESS;
} else if (StringUtils.equals('USERPAYING', state)
|| StringUtils.equals('NOTPAY', state)) {
// 未付款或正在付款,都认为是未付款
return PayState.NOT_PAY;
} else {
// 其它状态认为是付款失败
return PayState.FAIL;
}
} catch (Exception e) {
logger.error('查询订单状态异常', e);
return PayState.NOT_PAY;
}
}
}
生成微信付款链接
缠论实现及通达信公式接口扩展,接口说明:
结果:
缠论实现及通达信公式接口扩展,接口说明:
请求方式:Get请求路径:/order/缠论实现及通达信公式缠论实现及通达信公式接口扩展,接口扩展,url/{id}请求参数:id,订单编号返回结果:String类型,生成的微信支付链接
文章为作者独立观点,不代表观点