微信支付(小程序)-java实现与小程序实现
一:java配置
二:工具类:获取本地IP与Enum类 与订单支付返回数据
1: 2:订单 Enum类
package com.io.common.enums;
public enum OrderStatusEnum {
CANCEL(0,"已取消"),
NOT_YET_SHIPPED(1,"待支付"),
PART_OF_THE_SHIPMENT(2,"待发货"),
WAIT_RECEIVING(3,"待收货"),
ACHIEVE(4,"已完成"),
;
private Integer key;
private String desc;
OrderStatusEnum(Integer key, String desc){
this.key = key;
this.desc = desc;
}
public Integer getKey() {
return key;
}
public String getDesc() {
return desc;
}
}
3:支付方式Enum类
package com.io.order.form;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import java.math.BigDecimal;
/**
* @author ts
* @version 1.0
* @date 2022/08/05
*/
@Data
public class WxPayForm {
private Integer orderId;
@ApiModelProperty("订单号")
private String orderNo;
@ApiModelProperty("支付订单号")
private String orderPayNo;
@ApiModelProperty("实际支付金额")
private BigDecimal payAmount;
}
package com.io.order.vo;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
@Data
public class AfterPayVO {
@ApiModelProperty("timeStamp")
private String timeStamp;
@ApiModelProperty("nonceStr")
private String nonceStr;
@ApiModelProperty("packageValue")
private String packageValue;
@ApiModelProperty("signType")
private String signType;
@ApiModelProperty("paySign")
private String paySign;
}
三:service与controller
1:支付 service类
2:支付 service类实现
3: Controller类
package com.io.order.controller;
import com.io.base.BaseController;
import com.io.order.service.PayService;
import com.io.util.R;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;
import javax.servlet.http.HttpServletResponse;
@RestController
@RequestMapping("/pay")
@Api(tags = "支付接口")
@Slf4j
public class PayController{
@Autowired
private PayService payService;
@PostMapping("/payNotify/{appid}")
@ApiOperation("支付回调")
public R payNotify(@PathVariable String appid, @RequestBody String xmlData, HttpServletResponse response) throws Exception {
payService.payNotify(appid, xmlData, response);
return R.ok();
}
三:小程序调用 支付接口
注:res.data.purchase 是先走下单逻辑(去后台下单并且调用了 支付接口)
返回参数: AfterPayVO类;
小程序前端所用到的参数是 订单支付返回的参数
wx.requestPayment({
timeStamp: res.data.purchase.timeStamp,
nonceStr: res.data.purchase.nonceStr,
package: res.data.purchase.packageValue,
signType: MD5,
paySign: res.data.purchase.paySign,
success (res) {
支付成功
},
fail (res) {
支付取消或失败
}
})
2: 开发工具中测试支付接口 所展示的样子 3:正式环境样式
上一篇:
uniapp开发微信小程序-2.页面制作
下一篇:
第三方对接-微信登陆对接
