package com.caimei.controller.pay; import com.alibaba.fastjson.JSONObject; import com.caimei.model.ResponseJson; import com.caimei.model.dto.PayVipDto; import com.caimei.utils.RequestUtil; import io.swagger.annotations.Api; import io.swagger.annotations.ApiImplicitParam; import io.swagger.annotations.ApiImplicitParams; import io.swagger.annotations.ApiOperation; import lombok.RequiredArgsConstructor; import org.springframework.beans.factory.annotation.Value; import org.springframework.web.bind.annotation.*; import java.util.HashMap; import java.util.Map; /** * 二手发布支付,升级超级会员支付 * * @author : Charles * @date : 2021/9/27 */ @Api(tags="支付API") @RestController @RequiredArgsConstructor @RequestMapping("/pay") public class PayApi { @Value("${caimei.core}") private String core; /** * 获取线上支付全局开关状态 */ @ApiOperation("获取线上支付全局开关状态") @GetMapping("/online/switch") public ResponseJson getPayOnLineSwitch() throws Exception { String url = core + "/order/pay/online/switch"; String result = RequestUtil.sendGet(url); return getResponseJson(result); } @ApiOperation("银行通道码获取") @GetMapping("/bankcode") public ResponseJson bankcode() throws Exception { String url = core + "/order/pay/bankcode"; String result = RequestUtil.sendGet(url); return getResponseJson(result); } /** * 开通认证通会员-微信线上支付 * @param param { * vipRecordId 会员购买记录Id * returnUrl 页面回调地址 * code 微信小程序code * state 微信公众号state参数 * } */ @ApiOperation("开通认证通会员-微信线上支付") @PostMapping("/auth/vip/wechat") public ResponseJson payAuthVipByWeChat(@RequestBody Map param) throws Exception { String url = core + "/order/pay/auth/vip/wechat"; String result = RequestUtil.sendPost(url, param); return getResponseJson(result); } /** * 开通认证通会员-支付宝线上支付 * @param param { * vipRecordId 会员购买记录Id * returnUrl 页面回调地址 * } */ @ApiOperation("开通认证通会员-支付宝线上支付") @PostMapping("/auth/vip/alipay") public ResponseJson payAuthVipByAlipay(@RequestBody Map param) throws Exception { String url = core + "/order/pay/auth/vip/scan"; String result = RequestUtil.sendPost(url, param); return getResponseJson(result); } /** * 开通认证通会员-银联线上支付 * @param param { * vipRecordId 会员购买记录Id * returnUrl 页面回调地址 * bankCode 银行编码(银联支付使用) * userType 用户类型(银联支付使用)企业:ENTERPRISE,个人:USER * } */ @ApiOperation("开通认证通会员-银联线上支付") @PostMapping("/auth/vip/union") public ResponseJson payAuthVipByUnionPay(@RequestBody Map param) throws Exception { String url = core + "/order/pay/auth/vip/union"; String result = RequestUtil.sendPost(url, param); return getResponseJson(result); } /** * 开通认证通会员-支付回调 */ @ApiOperation("开通认证通会员-支付回调") @ApiImplicitParam(required = false, name = "data", value = "回调数据") @GetMapping("/auth/vip/callback") public String paymentAuthVipCallback(String data) throws Exception { String url = core + "/order/pay/auth/vip/callback?data=" + data; return RequestUtil.sendGet(url); } @ApiOperation("购买认证通会员-查询是否购买成功") @ApiImplicitParam(required = false, name = "vipRecordId", value = "会员购买记录id") @GetMapping("/auth/vip/check") public ResponseJson authVipCheck(Integer vipRecordId) throws Exception { String url = core + "/order/pay/auth/vip/check?vipRecordId=" + vipRecordId; String result = RequestUtil.sendGet(url); return getResponseJson(result); } @ApiOperation("查询本次支付订单结果") @ApiImplicitParams({ @ApiImplicitParam(required = false, name = "mbOrderId", value = "平台唯一流水号"), @ApiImplicitParam(required = false, name = "orderFlag", value = "订单标识:0非订单,1订单") }) @GetMapping("/result/json") public ResponseJson getPayOrderResult(String mbOrderId,Integer orderFlag) throws Exception { String url = core + "/order/pay/result/json?mbOrderId=" + mbOrderId + "&orderFlag=" + orderFlag; String result = RequestUtil.sendGet(url); return getResponseJson(result); } @ApiOperation("生成网银支付链接") @ApiImplicitParam(required = false, name = "param", value = "参数") @PostMapping("/link") public ResponseJson getPayLink(@RequestBody Map param) throws Exception { String url = core + "/order/pay/link"; String result = RequestUtil.sendPost(url, param); return getResponseJson(result); } @ApiOperation("重定向页面的支付数据") @ApiImplicitParam(required = false, name = "linkLogo", value = "参数") @GetMapping("/link/data") public ResponseJson getPayLinkData(String linkLogo) throws Exception { String url = core + "/order/pay/link/data?linkLogo=" + linkLogo; String result = RequestUtil.sendGet(url); return getResponseJson(result); } private ResponseJson getResponseJson(String parameters) { JSONObject object = JSONObject.parseObject(parameters); Integer code = object.getInteger("code"); String msg = object.getString("msg"); String data = object.getString("data"); return ResponseJson.success(code, msg, data); } }