个人账号如何用微信支付开发,教你申请开通蓝兔支付教程图解

本文首发于我的知识星球,看到很多人都比较喜欢这篇文章,分享给大家。

我的个人博客主页:https://www.aijavapro.cn

个人掘金博客主页:juejin.cn/user/2359988032644541/posts

个人的知识星球:  觉醒的新世界程序员

一、背景

支付功能是面向C端系统的一个非常典型的功能,而对于很多刚接触支付功能开发者会出现望而止步的现象,大部分的支付平台都需要用企业账号的身份进行签约,导致很多开发者想学习和体验支付功能,受到了一定的阻碍。

既然上有政策,那么必然会出现下有对策的解决办法,只要有问题,就一定会有人解决。

而有一些基于第三方支付平台的服务商模式的签约企业,便为个人开发者提供了支付功能,为广大的普通用户集成支付提供了环境,我们可以用其提供的环境来实现个人账号开通微信支付、支付宝支付,本文带领大家实现一个蓝兔支付平台的个人商户签约。

如今这个时代,有一个属于自己的支付商户号是非常有必要的,因为微信支付和支付宝支付默认不支持个人用户申请的,没有营业执照,那么很多人学习了视频教程中的商城项目、外卖之类的项目就无法做到订单的第二种状态:已支付,无疑是阻断了开发者的技能和学习成长。很多写了苍穹外卖、商城系统、交易类系统的同学无法真正让项目变的真实,那么通过自己申请签约个人支付平台,可以让自己具备对接支付的经验,可以在一定程度上讲自己当前的项目变活,去遇到更多的问题来迫使自己不得不解决。

二、正文开始

2.1、申请前提

(1)、最好有一个自己当前已经备案过的域名,与可访问的网站,签约时需要填写一个备案的域名

(2)、个人银行卡的财产余额至少50元及其以上,需要拿出50元作为签约开通的费用

2.2、蓝兔支付平台介绍

本文教给大家的是蓝图支付,蓝兔支付是支付宝、微信支付官方合作伙伴,可以支持个人、个体户、企业支付接口申请,官方直接签约,无需营业执照,最快10分钟内签约完成,签约后可使用支付宝商户、微信支付商户相关接口能力,资金由支付宝、微信支付官方直连结算。作者在最近的测试过程中发现,蓝兔支付的支付宝支付由于风控的问题,不提供支付宝支付了。

提交申请资料》平台审核》微信官方审核》微信扫码签约》支付开户费用》商户号开通》完成根据API文档接入

官网网址为:www.ltzf.cn

产品介绍如下:

产品支持的范围如下:

2.3、注册蓝兔支付平台

1、打开蓝兔支付的网页,选择快速注册,弹出微信二维码,我们使用手机进行二维码扫描。

2、手机扫码后,成功关注公众号后,会自动注册账号,并提示注册成功,同时PC端会自动跳转到系统的首页面:

3、接下来我们完善下个人的资料,补充完基本资料后,进入到蓝兔支付的首页面:

接下来按照如下流程进行操作:

提交申请资料》平台审核》微信官方审核》微信扫码签约》支付开户费用》商户号开通》完成根据API文档接入

2.4、提交申请资料

1、选择左侧的微信支付菜单中的申请签约选项,在下方的界面中填写自己真实的资料,尤其是网站地址,最好自己有个已经备案的公网域名地址:

按照真实的情况填写数据,最好有个属于自己的公网的备案的域名。

2、然后再第二步的界面中,上传自己的身份正反面的照片,然后输入自己的手机号和邮箱,单击下一步提交:

3、提交成功后,会提示您的签约资料已提交成功,这里我们等待10分钟即可,如下所示:

到此,剩下的流程如下:

平台审核》微信官方审核》微信扫码签约》支付开户费用》商户号开通》完成根据API文档接入

2.5、平台审核

提交完资料后,查看左侧的签约记录菜单,可以看到当前签约记录正在审核:

2.6、微信官方审核

大概10分钟过后,状态会变成官方审核中:

2.7、微信扫码签约

大概几分钟后,官方审核通过,此时状态改变,会提示待商户签约,这里选择签约按钮,弹出二维码进行签约处理,扫码后会提示确认签约商户信息即可。

2.8、支付开户费用

签约确认成功后,状态改变,变成为待支付费用,此时单击支付按钮,显示支付50元的二维码,此时支付即可:

2.9、商户号开通

支付完成,会提示成功,如下所示:

此时选择左侧的商户管理菜单,可以看到自己的商户信息,单击详情可以看到具体信息,如下所示:

2.10、API测试访问

终于到了最后一步,我们此时可以新创建工程,生成PC端的支付二维码完成支付操作即可。

1、首先在官网上选择API文档或者下载中心,下载Demo体验,我这里选择的API文档,没有用官方提供的Demo样例,因为我有一些过往的支付对接的经验,建议大家可以选择下载中的Demo,下载中心的Demo是一个支付的样例工程,用JSP开发了基本的流程,可以研究运行下,改改参数就可以运行。

可以根据下文中的几个测试类,来体验蓝兔支付,本文并没有讲解支付回调。相对于原生的第三方平台的微信支付和支付宝支付的开发难度,蓝兔支付平台的代码开发相对来说较为简单。

地址在这里:蓝兔支付文档

2、本文不会开发出完整的支付流程,只验证当前是否可以成功创建支付请求,是否可以成功返回下单的URL即可。

创建一个maven项目,并导入如下依赖:

<dependencies>
        <dependency>
            <groupId>org.apache.commons</groupId>
            <artifactId>commons-lang3</artifactId>
            <version>3.12.0</version>
        </dependency>
        <dependency>
            <groupId>commons-codec</groupId>
            <artifactId>commons-codec</artifactId>
            <version>1.16.0</version>
        </dependency>
        <dependency>
            <groupId>cn.hutool</groupId>
            <artifactId>hutool-all</artifactId>
            <version>5.8.18</version>
        </dependency>
        <dependency>
            <groupId>com.alibaba</groupId>
            <artifactId>fastjson</artifactId>
            <version>2.0.28</version>
        </dependency>
    </dependencies>

3、创建加密签名类:

public class PaySignUtil {

    /**
     * 支付参数签名
     *
     * @param params     需要参与签名的参数
     * @param partnerKey 商户密钥
     * @return {String} 参数签名
     */
    public static String createSign(Map<String, Object> params, String partnerKey) {
        // 生成签名前先去除sign
        params.remove("sign");
        String stringA = packageSign(params, false);
        String stringSignTemp = stringA + "&key=" + partnerKey;
        return SecureUtil.md5(stringSignTemp).toUpperCase();
    }

    /**
     * 组装签名的字段
     *
     * @param params     参数
     * @param urlEncoder 是否urlEncoder
     * @return {String}
     */
    public static String packageSign(Map<String, Object> params, boolean urlEncoder) {
        // 先将参数以其参数名的字典序升序进行排序
        TreeMap<String, Object> sortedParams = new TreeMap<String, Object>(params);
        // 遍历排序后的字典,将所有参数按"key=value"格式拼接在一起
        StringBuilder sb = new StringBuilder();
        boolean first = true;
        for (Entry<String, Object> param : sortedParams.entrySet()) {
            String value = String.valueOf(param.getValue());
            if (StrUtil.isBlank(value)) {
                continue;
            }
            if (first) {
                first = false;
            } else {
                sb.append("&");
            }
            sb.append(param.getKey()).append("=");
            if (urlEncoder) {
                try {
                    value = urlEncode(value);
                } catch (UnsupportedEncodingException e) {
                }
            }
            sb.append(value);
        }
        return sb.toString();
    }

    public static String urlEncode(String src) throws UnsupportedEncodingException {
        return URLEncoder.encode(src, "utf-8");
    }
    
}

4、定义测试生成PC端二维码的支付类:

public class LantuPayUtil {
    public static final String mchId = "自己的商户号";
    public static final String notifyUrl = "支付回调地址";
    public static final String key = "自己的商户秘钥";
    public static void main(String[] args){
        //商户订单号,只能是数字、大小写字母_-且在同一个商户号下唯一。
        String out_trade_no = "2023" + System.currentTimeMillis();
        String total_fee = "0.01";        //支付金额
        //商品描述
        String body = "商品描述参数";
        Long stime = System.currentTimeMillis()/1000;
        //当前时间戳
        String timestamp = String.valueOf(stime);
        Map<String, Object> map = new HashMap<>();
        map.put("mch_id", mchId);
        map.put("out_trade_no", out_trade_no);
        map.put("total_fee", total_fee);
        map.put("body", body);
        map.put("notify_url", notifyUrl);
        map.put("timestamp", timestamp);
        String sign = PaySignUtil.createSign(map, key);
        map.put("sign", sign);
        //微信扫码支付接口地址
        String url = "https://api.ltzf.cn/api/wxpay/native";
        String result = HttpRequest.post(url).form(map).execute().body();
        System.out.println(result);
        String msg = "";
        if (StrUtil.isBlank(result)) {
            msg = "API接口返回为空,请联系客服";
        }else{
            try{
                JSONObject jsonObject = (JSONObject) JSONObject.parse(result);
                Integer code = jsonObject.getInteger("code");
                if(code==0){
                    String qrcode = jsonObject.getJSONObject("data").getString("QRcode_url");
                    msg = "请使用微信扫码下方二维码:" + qrcode;
                }else{
                    String msgstr = jsonObject.getString("msg");
                    msg = "返回失败:" + msgstr;
                }
            } catch (JSONException e) {
                msg = e.getMessage();
            } catch (Exception e) {
                msg = e.getMessage();
            }
        }
        System.out.println(msg);
    }
}

将程序中的3个常量换成自己商户信息即可,接口调用成功后,控制台会返回二维码的路径:

我们在浏览器中,打开这个URL,进行扫码支付,支付成功后,可以在蓝兔的后台看到支付的账单结果:

至此,我们作为个人签约蓝兔支付平台,可以成功的对接了支付API,以后我们就可以开发出支付功能的系统了,瞬间变的高大上了。

三、总结

今天分享了,如何申请个人签约类型的支付平台商户信息,如果自己想要学习支付功能,不如马上去动手实践吧,蓝兔平台的签约过程时间非常快,工作时间不到30分钟就审核完成了。我同时发现蓝兔官方并没有单独封装Java SDK,只是提供了HTTP请求的样例代码,而这种没有的东西,正式我个人最近计划要做的内容和目标,我计划最近做一个开源的蓝兔支付的Java SDK,方便大家使用,毕竟目前很多人都因为没有支付信息,让自己停留在了学习阶段。除了蓝兔支付,市场上还有个支持个人签约的YunGouOS,他们家的支付SDK建设的比蓝兔支付的全且完整一点。

同时本文也是作者的个人知识星球【觉醒的新世界程序员】中最近正在分享的开源设计系列专题中的其中一篇文章,如果想了解相关内容,可以来了解下。目前计划根据某个开源的SDK工具包为例子,来学习它的设计思路和代码封装结构,希望可以帮助大家学会和掌握SDK的设计和最佳实践等,目前计划分享的这个SDK是微信支付工具包wxjava,这个项目对于微信下的API对接封装的非常不错,非常值得大家学习,比如微信公众号、微信小程序、微信支付等等,都可以十分方便集成到项目中,在2021年的时候,由于工作关系,发现其里面有个逻辑不支持正向代理,于是在拉取源码后,增加了适配逻辑,并进行了PR,成功在公司项目中用到了自己贡献的代码。

近期的分享将会在最后仿照他设计一个支付SDK的工具包,作为目标产出。对于日常业务功能的开发,多少会遇到HTTP的三方接口调用的例子,那么学习这个可以让自己设计出更佳优雅的SDK,以便加强自己。

如果本文对你有用,可以去实践哦,蓝兔网站的直达链接单击这里

如果本篇文章对你有用,收藏、关注、分享、点赞哦。

如果你想一起参与蓝兔支付Java SDK开源项目的建设,可以关注我的Github吧,最近将会写一个针对蓝兔支付的SDK。目前Github的仓库地址如下:

GitHub - wuchubuzai2018/lantu-pay-sdk: 支持个人用户签约使用的蓝兔支付平台的Java SDK项目

感兴趣的可以和我一起来设计封装下蓝兔支付的SDK。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值