微信支付系列之——统一下单

简介: 微信支付系列之——统一下单

之前有很多朋友私信我,问我能不能出一系列关于微信支付的文章。

这应部分朋友的请求,输出微信支付系列——统一下单,首先来看看接口文档:

image.png
看着这一串接口,是不是有一种头疼欲裂的感觉,不用怕,咱们一个个解决他,首先来看一下统一下单接口。

文档还是很详细的(就是微信支付团队有时文档跟不上代码的节奏^_^)
image.png
告诉了我们应用场景、接口清酒地址、是否需要证书、证书参数、返回结果、错误码等一系列接口该有的全部在这里都能够体现出来。
其实,这里面最难搞的也就是请求参数这一坨。剥离开来,请求参数中比较复杂的就是签名加密。
这就带大家来揭开这个签名的神秘面纱。
首先,我们把所有参数按照字典排序,按照键值对的顺序排列成一个新的字符串。其中空参数的要过滤掉。
其次,将我们设置的秘钥拼接到上面的字符串后面做MD5加密,然后转为大写,这样签名即搞定了,来我们直接看代码是如何搞定的:

   /**
     * 微信支付MD5加密
     * @param infoIds    字典序后的集合
     * @return
     * @throws Exception
     */
    public static String createSign(List<Map.Entry<String, Object>> infoIds, String apiKey) throws Exception {
   
   
        StringBuffer sb = new StringBuffer();
        for (Map.Entry<String, Object> entry : infoIds) {
   
   
            String key = entry.getKey();
            Object value = entry.getValue();
            if(null != value && !"".equals(value) && !"sign".equals(key) && !"key".equals(key)){
   
   
                sb.append(key+"="+value+"&");
            }
        }
        sb.append("key="+apiKey);
        String sign = signMD5(sb.toString());
        logger.info("【签名结果】{}",sign);
        return sign;
    }

封装统一请求类,具体代码实现如下


   /**
     * 微信统一下单接口
     * 接口文档地址:https://pay.weixin.qq.com/wiki/doc/api/wxa/wxa_api.php?chapter=7_3&index=1
     * @param unifiedOrderReq   统一下单请求
     * @return
     * @throws BaseException
     */
    public ApiResult uniformorder(UnifiedOrderReq unifiedOrderReq) throws BaseException{
   
   
        logger.info("【统一下单请求入参:】{}",unifiedOrderReq.toString());
        String uniformorderXml = wechatPayCommon.unifiedOrderReqSplicingParam(unifiedOrderReq);
        logger.info("【统一下单封装微信请求参数:】{}",uniformorderXml);
        String content = HttpUtils.httpsRequest(baseWechatPay.getUniformOrder(),HttpUtils.POST, uniformorderXml);
        logger.info("【统一下单微信返回内容:】{}",content);
        ApiResult apiResult = handleReturnCommon.handleUnifiedOrderReturnContent(content, unifiedOrderReq.getTradeType(), unifiedOrderReq.getOutTradeNo());
        logger.info("【统一下单返回报文:】{}",apiResult.toString());
        return apiResult;
    }

好了,这样即可完成微信支付系列之——统一下单操作,觉得有帮助,帮小编点个赞吧!

目录
相关文章
|
4月前
|
API
支付系统38-----支付宝支付---统一收单线下交易查询 第一步下单------》发起支付请求,登录,确认支付,查单接口开发,swagger接口全部呈现,
支付系统38-----支付宝支付---统一收单线下交易查询 第一步下单------》发起支付请求,登录,确认支付,查单接口开发,swagger接口全部呈现,
|
前端开发 安全 数据安全/隐私保护
支付宝支付流程解读
支付宝支付流程解读
|
Web App开发
如何实现一个项目配置多个商户信息付款给对应商户
说明:本帖主要说明如何实现给一个平台配置多个商户的号实现多个商户收款。主要用于没有门店和第三方授权方式 支付宝最终是根据请求过来的appid来判断哪一个商户收款(也就是请求是谁的appid就收款到谁的账号下)    方案一:      1.
1360 12
|
XML 移动开发 API
微信支付开发(7) H5支付
关键字:微信支付 微信支付v3 H5支付 wap支付 prepay_id 作者:方倍工作室原文: http://www.cnblogs.com/txw1958/p/wxpayv3_h5.html    本文介绍微信支付下的H5支付实现流程。
3381 1
|
移动开发 安全 前端开发
〔支付接入〕微信的 h5 支付和 jsapi 支付
学会微信支付,打开你的财富之门
302 2
〔支付接入〕微信的 h5 支付和 jsapi 支付
|
JSON API 数据库
从零玩转系列之微信支付实战PC端支付微信退款接口搭建2
从零玩转系列之微信支付实战PC端支付微信退款接口搭建
89 0
|
小程序 安全 前端开发
从零玩转系列之微信支付实战PC端支付微信退款接口搭建1
从零玩转系列之微信支付实战PC端支付微信退款接口搭建
108 0
|
测试技术 API 数据库
从零玩转系列之微信支付实战PC端支付微信退款接口搭建3
从零玩转系列之微信支付实战PC端支付微信退款接口搭建
95 0
|
前端开发 数据库
下单接口的开发对接第三方支付
下单接口的开发对接第三方支付
|
Java 数据安全/隐私保护
支付宝支付功能使用
支付宝支付功能使用