java微信支付,企业微信号转账给个人

主要记录微信企业付款开发的过程

开发前准备:1.申请微信appid,2.微信secret,3.微信mchid商户名,4.微信key,5.下载证书,

6.商户平台设置扫码回调接口,即项目的外网可访问地址

微信企业付款官方文档:https://pay.weixin.qq.com/wiki/doc/api/tools/mch_pay.php?chapter=14_2

商户签名以及证书相关官方文档:https://pay.weixin.qq.com/wiki/doc/api/tools/mch_pay.php?chapter=4_3


一、业务单生成,推送消息至虚拟充值服务,采用队列,这一步可以省略,只是项目中需要

/**
     * 消费业务单传递过来的消息
     * 充值类,快充订单,回传状态至虚拟商品,然后生成转账二维码
     *
     * @param message
     * @author scott
     */
    @RabbitListener(queues = VirtualProductQueueConstants.VIRTUAL_RECHARGE_ORDER_QUEUE, containerFactory = "rabbitListenerContainerFactory")
    @RabbitHandler
    public void getWeChatQrCodeMessage(MessageDto<WeChatQrCodeMessage> message) {
        logger.info("RechargeOrderReceiver==>getWeChatQrCodeMessage(), message:{}", JSON.toJSONString(message));
        try {
            orderRechargeService.addOrderRecharge(message.getMessage().getOrderRecharge());
            createOrderRecharge(message.getMessage());
        } catch (Exception e) {
            logger.error("RechargeOrderReceiver==>getWeChatQrCodeMessage,消费失败", e);
        }
    }


二、请求生成对应的二维码

/**
     * 调用微信接口生成二维码,并添加二维码记录
     *
     * @param weChatQrCodeMessage
     * @author scott
     */
    private void createOrderRecharge(WeChatQrCodeMessage weChatQrCodeMessage) {
        OrderRecharge orderRecharge = weChatQrCodeMessage.getOrderRecharge();
        RechargeOrderQrCode qrCode = new RechargeOrderQrCode();

        qrCode.setOrderNo(orderRecharge.getOrderNo());
        qrCode.setItemNo(orderRecharge.getItemNo());
        qrCode.setBuyerId(orderRecharge.getBuyerId());
        qrCode.setOrderTime(orderRecharge.getOrderTime());

        int count = rechargeOrderQrCodeService.addRechargeOrderQrCode(qrCode);
        if (count == 0) {
            //当二维码失败且重试次数小于3次时,进行重试,这里用另外一个队列做重试队列并规定重试次数
            int retryCount = weChatQrCodeMessage.getRetryCount() != null ? weChatQrCodeMessage.getRetryCount() : 0;
            if (retryCount < Constants.WECHAT_RETRY_COUNT) {
                //重试次数+1
                weChatQrCodeMessage.setRetryCount(weChatQrCodeMessage.getRetryCount() + 1);
                mqDao.pushRetryCreateWeChatQrCode(weChatQrCodeMessage);
            }
        }
    }

获取微信token官方文档: https://mp.weixin.qq.com/wiki?t=resource/res_main&id=mp1421140183

生成二维码官方文档链接:https://mp.weixin.qq.com/wiki?t=resource/res_main&id=mp1443433542

/**
     * 添加充值类订单二维码生成
     *
     * @param orderQrCode
     * @return
     * @author scott
     */
    @Override
    public int addRechargeOrderQrCode(RechargeOrderQrCode orderQrCode) {
        int count = 0;
        try {
            //将token写到缓存中,每次请求的token最长时间为7200秒,缓存的最长时间比过期时间稍短即可
            String accessToken = valueOperations.get(Constants.WECHAT_ACCESS_TOKEN_REDIS_KEY);
            if (StringUtils.isBlank(accessToken)) {
                String accessTokenResultMsg = rfRechargeOrderService.getWeChatAccessToken();

                if (StringUtils.isNotBlank(accessTokenResultMsg)) {
                    String errorCode = JsonUtil.getNodeValueRemoveQuotes(accessTokenResultMsg, "errcode");
                    if (StringUtils.isNotBlank(errorCode) && !"0".equals(errorCode)) {
                        logger.error("OrderRechargeServiceImpl==>addOrderRechargeAndC
  • 1
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值