微信支付之-扫码支付-模式2(模式1)


微信商户申请开通:https://pay.weixin.qq.com/service_provider/index.shtml
注意:开通公众账号之后,然后根据流程开通相对应的商户平台


开发文档之场景介绍文档:https://pay.weixin.qq.com/wiki/doc/api/native.php?chapter=6_1
开发文档之模式1的流程图:https://pay.weixin.qq.com/wiki/doc/api/native.php?chapter=6_4
开发文档之模式2的流程图:https://pay.weixin.qq.com/wiki/doc/api/native.php?chapter=6_5

开发之前所需要的参数:
1、APP ID ,应用ID(在公众平台--基本配置模块中)
2、APP Sercret ,应用秘钥(在公众平台--基本配置模块中)
3、API Key,API的秘钥(在商户平台--API安全中设置)
4、mchID , 商户号(在公众平台---微信支付---商户信息)
5、order_api , 统一下单API的接口

6、notify_url    交易成功回调的接口的URL


开发模式1的配置:




模式1开发流程:
1、生成二维码(https://pay.weixin.qq.com/wiki/doc/api/native.php?chapter=6_4),给买家扫码
2、回调到上图设置的回调的URL当中,得到必要的参数,调用统一下单API,生成参数,提交到微信接口,并把这些参数保存到数据库(最重要的是 商户订单号,此订单号再微信支付成功异步回调中,会返回这个订单号,也就是说,订单号是此条数据的唯一标识
3、步骤2中统一下单会返回一个 code_url(二维码连接),生成二维码,给买家扫码
4、买家打开微信扫码,支付完成。
5、微信进入回调的url (该回调的URL在下单的API的参数中)
6、在回调的接口中获取微信传过来的参数。根据商户订单号--修改数据库的数据。 推送到APP成功的状态



模式2开发流程:
1、调用统一下单API,生成参数,提交到微信接口,并把这些参数保存到数据库(最重要的是 商户订单号,此订单号再微信支付成功异步回调中,会返回这个订单号,也就是说,订单号是此条数据的唯一标识
2、步骤2中统一下单会返回一个 code_url(二维码连接),生成二维码,给买家扫码
3、买家打开微信扫码,支付完成。
4、微信进入回调的url (该回调的URL在下单的API的参数中)
5、在回调的接口中获取微信传过来的参数。根据商户订单号--修改数据库的数据。 推送到APP成功的状态


结论:模式1与模式2相比,模式1更为繁琐和复杂,市场上用的基本都是模式2


模式2的代码:

1、组成下单API的数据,发送给微信,获取返回值
    //微信扫码模式2
    public void wxPayModel2() {
        String body = "测试商户的名称";
        int money = 100;//交易金额,以分为单位100=1元。
        String productId= WeiXinUtil.getTimeStamp();//获取商品订单号
        String outTradeNo=WeiXinUtil.getOrderNo();//获取该笔交易的订单号
        String ip=WeiXinUtil.getIp();//获取发起请求的IP,我这里就直接获取了本机的IP了,实际开发需要获取实际的请求IP
        ScanPayReqData data  = new ScanPayReqData(body,money,productId,outTradeNo,ip);//组成要发送给微信的数据为一个实体类
        String reuslt= HttpUtil.sendPost(Configure.orderApi,data);//将组装好的数据发送到微信,并获取微信的返回值

        //接下来的操作就是解析result。 将xml格式的result解析成json或者实体类。然后将数据保存到数据库...一下步骤省略...在改xml中有一个参数code_url,这个就是二维码的链接,
        //将该二维码的链接生成图形二维码,给用户扫码。会进入到Configure.notifyUrl的回调接口当中。现在假设回调的为下面的方法notifyUrl();

    }
接下来的操作就是解析result。 将xml格式的result解析成json或者实体类。然后将数据保存到数据库...一下步骤省略...在改xml中有一个参数code_url,这个就是二维码的链接,
将该二维码的链接生成图形二维码,给用户扫码。会进入到Configure.notifyUrl的回调接口当中。现在假设回调的为下面的方法notifyUrl();

2、notifyUrl()方法中需要操作的动作----注意:只有在微信支付成功,微信才会回调该方法
     参考:https://pay.weixin.qq.com/wiki/doc/api/native.php?chapter=9_2
    //微信支付成功之后的回调,注意,只有在成功支付,微信才会进入回调,注意
    public void notiyUrl(HttpServletRequest req,HttpServletResponse response){
        ServletInputStream input =  req.getInputStream();//这里得到输入流,这就是微信在回调该接口的时候,会把参数传到这里,下一步就是将流解析成xml。然后再将xml解析成我们需要的格式
        //得到数据之后,通过outTradeNo来修改wxPayModel2()中已经插入数据库中的数据
        //然后发送推送给APP。说交易成功。
    }


github下载地址:
https://github.com/townkoim/WXPay
说明:改代码仅供参考,不能运行。代码在 WXPay / app / src / main / java / com / example / lb / weixin / pay / wxpay /目录下




  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 8
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值