`
SIHAIloveYAN
  • 浏览: 119365 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
社区版块
存档分类

微信公众号支付开发全过程(java版)

    博客分类:
  • java
阅读更多

文章有不当之处,欢迎指正,如果喜欢微信阅读,你也可以关注我的微信公众号:好好学java,获取优质学习资源。

一、微信官方文档微信支付开发流程(公众号支付)

首先我们到微信支付的官方文档的开发步骤部分查看一下需要的设置。
[图片上传失败…(image-5eb825-1531014079742)]

因为微信支付需要较高的权限,只有认证了得服务号才有使用微信支付接口的权限,我们个人很难申请到,所以需要向其他朋友借用账号。

来到文档的业务流程部分,查看微信支付的流程(我觉得这个还是需要十分仔细的了解和查看的,这有助于你理解微信开发的流程)。

这里写图片描述这里写图片描述

然后,访问微信支付接口是要传递的参数很多,见统一下单
[图片上传失败…(image-df7051-1531014079742)]

通过查看上面的这些微信支付的官方文档之后,我相信你对这些应该有了一定的了解了,但是还是觉得微信支付的开发十分的麻烦,所以我们接下来使用第三方的sdk来开发。

二、微信支付第三方sdk开发(公众号支付)

这个是公众号支付,我们使用best-pay-sdk,这个SDK使用PayRequestPayResponse对请求接口和相应结果做了大量的封装,主要需要动态传入的参数是openid(用户唯一标识)和orderId。接下来我们看看如何开发。

1、配置

 //微信公众账号支付配置
    WxPayH5Config wxPayH5Config = new WxPayH5Config();
    wxPayH5Config.setAppId("xxxxx");
    wxPayH5Config.setAppSecret("xxxxxxxx");
    wxPayH5Config.setMchId("xxxxxx");
    wxPayH5Config.setMchKey("xxxxxxx");
    wxPayH5Config.setNotifyUrl("http://xxxxx");

    //支付类, 所有方法都在这个类里
    BestPayServiceImpl bestPayService = new BestPayServiceImpl();
    bestPayService.setWxPayH5Config(wxPayH5Config);

2、发起支付

  PayRequest payRequest = new PayRequest();
     payRequest.setPayTypeEnum(BestPayTypeEnum.WXPAY_H5);
     payRequest.setOrderId("123456");
     payRequest.setOrderName("微信公众账号支付订单");
     payRequest.setOrderAmount(0.01);
     payRequest.setOpenid("openid_xxxxxx");
     bestPayService.pay(payRequest);

3、异步回调

  bestPayService.asyncNotify();

这就是这个sdk所说的10行代码解决微信支付。

支付完成后,微信会返回给把支付结果以一段支付xml的数据返回给我们,我们需要将这段数据传递给异步通知url(notify_url),来完成支付结果的验证(验证签名,验证支付状态),这两步SDK都为我们做好了,只需这样调用bestPayService.asyncNotify(notifyData);,完成验证后,我们需要返回给微信这样一段数据:

<xml>

  <return_code><![CDATA[SUCCESS]]></return_code>
  <return_msg><![CDATA[OK]]></return_msg>
</xml>

告诉微信已完成验证,不要再给我们发送异步通知的请求。

是不是还是不太清楚如何集成到项目?没关系,这个还有示例demo,可以更加明了的清楚。

三、demo运行

demo网址为:https://github.com/Pay-Group/best-pay-demo

我们最主要的controller放在这里:

@Controller
@Slf4j
public class PayController {

    @Autowired
    private BestPayServiceImpl bestPayService;

    /**
     * 发起支付
     */
    @GetMapping(value = "/pay")
    public ModelAndView pay(@RequestParam("openid") String openid,
                            Map<String, Object> map) {
        PayRequest request = new PayRequest();
        Random random = new Random();

        //支付请求参数
        request.setPayTypeEnum(BestPayTypeEnum.WXPAY_H5);
        request.setOrderId(String.valueOf(random.nextInt(1000000000)));
        request.setOrderAmount(0.01);
        request.setOrderName("最好的支付sdk");
        request.setOpenid(openid);
        log.info("【发起支付】request={}", JsonUtil.toJson(request));

        PayResponse payResponse = bestPayService.pay(request);
        log.info("【发起支付】response={}", JsonUtil.toJson(payResponse));

        map.put("payResponse", payResponse);

        return new ModelAndView("pay/create", map);
    }

    /**
     * 异步回调
     */
    @PostMapping(value = "/notify")
    public ModelAndView notify(@RequestBody String notifyData) throws Exception {
        log.info("【异步回调】request={}", notifyData);
        PayResponse response = bestPayService.asyncNotify(notifyData);
        log.info("【异步回调】response={}", JsonUtil.toJson(response));

        return new ModelAndView("pay/success");
    }


}

这个可以自己去下载就可以,下面看一下一下如何运行

项目说明

需要在Jdk版本>1.8上运行
本项目采用SpringBoot1.5.1开发

项目结构

src/main/java/com/github/lly835
├── PayDemoApplication.java    
├── ServletInitializer.java
├── config
│   └── PayConfig.java       //支付密钥配置类
└── controller
    └── PayController.java   //支付调用

运行示例

运行前需要先配置好密钥, 见PayConfig.java
运行命令

git clone https://github.com/Pay-Group/best-pay-demo
cd best-pay-demo
mvn clean package
java -jar target/*.war

浏览器访问http://127.0.0.1:8080/pay

0
0
分享到:
评论

相关推荐

    开源商城商品管理介绍:若依Springboot+vue+uniapp支持微信小程序/H5/微信支付/订单管理/会员管理

    综上所述,这个开源商城商品管理系统利用了Spring Boot、Vue.js、UniApp等现代技术,构建了一个全方位的电商平台,支持多渠道的用户接入,如微信小程序、H5,同时提供微信支付等便捷的支付方式,确保了高效、稳定和...

    微信支付API

    这个API涵盖了从订单创建到支付确认的全过程,包括但不限于生成支付预订单、发起支付请求、查询支付状态以及处理退款等操作。 1. **生成扫描支付模式一URL**: 扫描支付模式一是微信支付的一种常见方式,用户可以...

    微信开发接口

    微信开发接口是微信官方提供的一系列API,允许开发者利用这些接口构建与微信相关的服务和功能。在微信支付和微信授权方面,开发者可以实现在线交易、用户身份验证等多种业务场景。 一、微信接口 微信接口主要分为...

    小猪CMS微信收银台系统全开源版源码

    小猪CMS微信收银台系统是一款专为商家打造的便捷支付解决方案,其全开源版源码的发布,意味着开发者和商家可以深入理解系统的内部运作机制,进行个性化定制和二次开发,提升店铺运营效率。这款系统集成了微信支付...

    前后端全部开源微信小程序商城(Java + uniapp)

    综上所述,这个开源项目为想要搭建微信小程序商城的开发者提供了一个全面的起点,涵盖了从服务器端到客户端的全部开发工作,通过Java和uniapp的结合,降低了开发难度,提高了开发效率,是电商类小程序开发的一个理想...

    .NET Core之微信支付之公众号、H5支付详解

    本篇主要记录微信支付中公众号及H5支付全过程。 准备篇 公众号或者服务号(并开通微信支付功能)、商户平台中开通JSAPI支付、H5支付。 配置篇 公众号或者服务号中 ——-开发——-开发者工具———web开发者工具——-...

    基于PHP的最新4合1小说系统源码 (音乐、漫画、视频自动采集).zip

    该压缩包文件“基于PHP的最新4合1小说系统源码 (音乐、漫画、视频自动采集).zip”是一个集成了小说、音乐、漫画和视频功能的...通过研究和修改这套源码,开发者可以深入理解PHP Web开发的全过程,并提升自己的技能。

    零基础玩转微信小程序视频教程

    手把手视频详细讲解项目开发全过程,需要的小伙伴自行百度网盘下载,链接见附件,永久有效。 简介 微信小程序是不需要下载安装即可使用的应用,它实现了应用“触手可及”的梦想,用户扫一扫或搜一下即可打开的应用...

    (2023最新)基于springboot鲜花商城系统的毕业设计

    微信公众号模块实现微信支付、微信登录等功能,实现移动端的销售。 本设计采用B/S模式,具有用户体验好、交互性强等优点。后端采用Springboot框架,简化了项目的搭建和开发。系统分为前台、后台、微信三个子系统,通过...

    (源码)基于Spring Boot和Spring Cloud的在线课堂管理系统.zip

    在线课堂管理系统是一个基于微信公众号B2C模式的在线学习平台,包含直播、教学与微信消息服务三大模块。平台定期推出直播课程,方便学员与名师之间的交流互动。学员可以购买教学视频在线学习,分享直播与教学视频...

    64843装修公司微信小程序源码(带装修预约系统).rar

    以上是对"64843装修公司微信小程序源码(带装修预约系统).rar"中涉及的关键知识点的详细解释,这些内容涵盖了从开发、设计到运维的全过程,对于理解如何构建一个装修预约类微信小程序至关重要。

    来客电商/微信电商小程序

    购物车功能允许用户合并购买多件商品,而订单管理则涵盖了从下单到售后的全过程。 2. **微信接口集成**:由于是微信小程序,来客电商深度整合了微信API,实现了用户一键登录、微信支付等功能。微信支付是微信生态...

    PHP话费充值通道网站完整运营源码(全解密无授权源码)

    2. **支付接口集成**:系统需要集成第三方支付接口,如支付宝、微信支付等,以便用户能够顺利完成充值过程。这涉及到API调用、签名验证、回调处理等技术。 3. **订单管理**:系统需记录每笔充值请求为订单,包括...

    2018最新Thinkphp最新版视频打赏平台源码带教程

    附带的教程是学习和部署这套源码的重要辅助资料,通常会涵盖从环境配置、代码结构解析、功能实现到问题排查的全过程。对于初学者来说,这是一份宝贵的实践指导,有助于快速上手ThinkPHP框架和视频打赏平台的开发。 ...

    微服务在微信后台的架构实践36页.pdf

    通过以上各点的详细阐述,我们可以看到微信后台在运用微服务架构时的实践过程,以及所面临的技术挑战和解决方案。从背景和概览到基础架构的设计,再到监控测试和跨业务服务的协同,微信后台微服务架构的实践不仅展示...

    平面设计广告设计室内设计

    综上所述,这个压缩包文件涉及的知识点涵盖了从设计概念到实际开发的全过程,包括设计工具的使用、广告策略、用户体验设计、编程技能以及针对特定应用场景的定制化开发。无论是设计师还是开发者,都需要不断学习和...

    SpringBoot高仿小米电子商城项目模板.rar

    订单系统负责跟踪从下单到支付、发货的全过程,包括订单状态的实时更新,以及库存管理。 9. **物流跟踪**: 项目可能集成第三方物流API,提供物流信息查询服务,以便用户追踪包裹的配送进度。 10. **用户系统**...

    【精品】天天饮食 供应链整体餐饮解决方案.pptx

    该解决方案的核心在于其“天天饮食”系统,这是一个针对大型餐饮企业设计的综合管理系统,涵盖了从供应链管理到在线订餐的全过程。系统亮点包括但不限于: 1. **智慧餐饮**:通过集成的餐饮软件,提供自助点餐、...

Global site tag (gtag.js) - Google Analytics