每天每天
越来越爱

java使用springboot发起微信支付后台 微信支付实现

1、 导入jar

<dependency>
    <groupId>cn.springboot</groupId>
    <artifactId>best-pay-sdk</artifactId>
    <version>1.3.0.BETA</version>
</dependency>

2、微信支付基本配置


@Component
public class PayConfig {

    @Bean
    public BestPayServiceImpl bestPayService(){
        BestPayServiceImpl bestPayService = new BestPayServiceImpl();
        bestPayService.setWxPayConfig(wxPayConfig());

        return bestPayService;
    }

    @Bean
    public WxPayConfig wxPayConfig(){
        WxPayConfig wxPayConfig = new WxPayConfig();
        wxPayConfig.setAppId(WeChatResources.APPID);
        wxPayConfig.setAppSecret(WeChatResources.APPSECRET);
        // 商户号
        wxPayConfig.setMchId(WeChatResources.PAYID);
        // 商户秘钥
        wxPayConfig.setMchKey(WeChatResources.APPPAYSECRET);
        // 证书位置
        wxPayConfig.setKeyPath(WeChatResources.CERPATH);
        // 微信返回url
        wxPayConfig.setNotifyUrl(WeChatResources.NOTIFYURL);
        return wxPayConfig;
    }
}

3、根据实际业务逻辑编写代码


// service代码
@Service
@Slf4j
public class PayServiceImpl implements PayService {

    @Autowired
    private BestPayServiceImpl bestPayService;

     /**
     * 
     * @param price 付款金额
     * @param openid 用户的openid
     * @param orderId 订单id
     * @param orderName 订单名称
     * @return
     */
    @Override
    public PayResponse create(Double price,String openid,String orderId,String orderName) {
        PayRequest payRequest = new PayRequest();
        payRequest.setOpenid(openid);
        payRequest.setOrderAmount(price);
        payRequest.setOrderId(orderId);
        payRequest.setOrderName(orderName);
        payRequest.setPayTypeEnum(BestPayTypeEnum.WXPAY_MP);
        PayResponse pay = bestPayService.pay(payRequest);
        return pay;
    }
}
// controller 代码
@GetMapping("create")
public ModelAndView create(HttpServletRequest request) {
    ModelAndView mv = new ModelAndView("pay");

    PayResponse payResponse = payService.create(Double.valueOf(payPrice), openid, "订单号码", "订单名称");
    request.setAttribute("res", payResponse);

    return mv;
}

// 支付成功后微信会访问设置的notifUrl,根据实际情况,判断用户支付是否成功返回对应的参数
@ResponseBody
@PostMapping("notify")
public String payResult(@RequestBody String notifyData) {
    PayResponse notify = payService.notify(notifyData);
   // 成功返回参数
    return  "<xml>" +
                        "<return_code><![CDATA[SUCCESS]]></return_code>"+
                        "<return_msg><![CDATA[OK]]></return_msg>"+
                    "</xml>";
}

// 前段代码

function onBridgeReady(){
    WeixinJSBridge.invoke(
        'getBrandWCPayRequest', {
            "appId":"[[${res.appId}]]",     //公众号名称,由商户传入
            "timeStamp":"[[${res.timeStamp}]]",         //时间戳,自1970年以来的秒数
            "nonceStr":"[[${res.nonceStr}]]", //随机串
            "package":"[[${res.packAge}]]",
            "signType":"MD5",         //微信签名方式:
            "paySign":"[[${res.paySign}]]" //微信签名
        },
        function(res){
            //成功后回调函数
        });
}
if (typeof WeixinJSBridge == "undefined"){
    if( document.addEventListener ){
        document.addEventListener('WeixinJSBridgeReady', onBridgeReady, false);
    }else if (document.attachEvent){
        document.attachEvent('WeixinJSBridgeReady', onBridgeReady);
        document.attachEvent('onWeixinJSBridgeReady', onBridgeReady);
    }
}else{
    onBridgeReady();
}
赞(0) 打赏

评论 抢沙发