java快速对接微信支付分(一)

2023-10-27

1.微信支付分产品介绍

维信支付分是对个人的身份特质、支付行为、使用历史等情况的综合计算分值,旨在为用户提供更简单便捷的生活方式。

(1)用户可在具体应用场景中,开通威信支付分,此为最常见的开通方法。开通后,用户可以在【微信 > 我 > 服务 > 钱包 > 支付分】中查看分数和使用记录。

(2)用户可在【微信 > 我 > 服务 > 钱包 > 支付分】直接点击,刷脸开通,此方法开通支付分后,用户仅能查看自己的分数,如需使用应用场景中的服务,仍需在应用场景中开启服务

微信支付分入口示意图

用户在场景中开通示意图

说明:用户只需在某一个应用场景中开通一次(开通分数+开通免密代扣),即可在其他应用场景使用支付分功能,无需再次开通分数或开通免密代扣。

商户接入微信支付分行业解决方案,即可获得:
1、设置分数门槛,筛选合适用户的能力,分数达到或超过该分数门槛的用户,才可以享受对应的服务(例如免押金,免预充值等)。
2、免密代扣能力,服务结束后,进行免密扣款。
3、催收能力。

2.接入前准备

A--大致的接入流程大纲如下,可以先混个眼熟

B--进行商户申请微信支付分获取到服务id  --- service_id

以下是微信官方的链接

https://pay.weixin.qq.com/wiki/doc/apiv3/open/pay/chapter3_1_1.shtml

友情提示:申请成功之后会有微信工作人员进行把你们拉入一个裙,其他的不懂的可以进行询问群里的工作人员

3.需确定订单模式和免确定模式

A--需确定订单模式

意为:每次进入你的程序的时候都要进行微信那边授权一次 且 可传 先免模式的字段 或 先享模式的字段

【需确认订单模式】典型场景说明:

例如 免押租借场景,均是使用【需确认订单模式】,以租借充电宝为例

 

 

B--免确定订单模式

意为:第一次进行进入你的程序的时候就进行微信那边的授权 后续进行使用的时候不用在进行微信的授权,

该模式只能添加只可传 先享模式字段

【免确认订单模式】典型场景说明:

例如 网约车先乘后付,是使用的【免确认订单模式】

 

 

补充一点为【免确认订单模式】是高级接口权限,目前只支持如下行业调用:

 除以上行业/场景外,其他行业/场景均只能调用【需确认订单模式】接口。

接口调用权限与服务id相关,在申请服务id时,只有上述场景下的服务id,才有权限调用【免确认单定模式】接口。即只有在上述场景下,创单订单api接口中need_user_confirm字段才能传
false:免确认订单。

 C--先免与先享字段的说明

在创建支付分订单的risk_fund字段里面的name

如图

先免模式:顾名思义就是比如免去押金,免去预付款,免去保证金,前提是评估通过,即免去此类的东西,进行服务,后进行扣款,当评估不通过,即在 确认订单页上进行押金/预付款/保证金支付,支付成功进行服务使用

先享模式:是指评估不通过,不能通过缴纳费用,继续进行服务使用。例如信用回收,用户评估通过,可先获得部分回收款,若评估不通过,则无法获得。

D--需确定模式和面确定模式的大致思路图

需确定模式

 

免确定模式

 

4.实际开发的细步骤 

这里我选择的是需确定模式和先享模式

需确定模式的api为公共api和需确定模式api

以下为官网的链接

https://pay.weixin.qq.com/wiki/doc/apiv3/apis/index.shtml

A--进行商户申请成功获取到service_id

B--进行创建支付分订单

以下为创建支付分订单的接口

创建支付分订单

我把我使用的发送http请求的工具类分享出来

public class HttpClientUtils {
    /**
     * 发送get请求
     * @param url 请求地址
     * @return 返回内容 json
     */
    public static String httpGet(String url){

        // 1 创建发起请求客户端
        try {
            HttpClient client = new HttpClient();
            // 2 创建要发起请求-tet
            GetMethod getMethod = new GetMethod(url);
//            getMethod.addRequestHeader("Content-Type",
//                    "application/x-www-form-urlencoded;charset=UTF-8");
            getMethod.getParams().setParameter(HttpMethodParams.HTTP_CONTENT_CHARSET,"utf8");
            // 3 通过客户端传入请求就可以发起请求,获取响应对象
            client.executeMethod(getMethod);
            // 4 提取响应json字符串返回
            String result = new String(getMethod.getResponseBodyAsString().getBytes("utf8"));
            return result;
        } catch (IOException e) {
            e.printStackTrace();
        }
        return null;
    }
}

在进行解析第三方接口返回的json的时候我一般使用FastJson

<dependency>
            <groupId>com.alibaba</groupId>
            <artifactId>fastjson</artifactId>
            <version>1.2.58</version>
        </dependency>

大致的思路就是,先把请求需要的东西给填入进去,在使用工具类进行发送http请求,返回的结果使用工具类进行解析

注意:

此处应该为true 因为选的是需确定订单

 

请求示例

{
  "out_order_no": "1234323JKHDFE1243252",
  "appid": "wxd678efh567hg6787",
  "service_id": "500001",
  "service_introduction": "某某酒店",
  "post_payments": [
    {
      "name": "就餐费用服务费",
      "amount": 4000,
      "description": "就餐人均100元服务费:100/小时",
      "count": 1
    }
  ],
  "post_discounts": [
    {
      "name": "满20减1元",
      "description": "不与其他优惠叠加"
    }
  ],
  "time_range": {
    "start_time": "20091225091010",
    "end_time": "20091225121010"
  },
  "location": {
    "start_location": "嗨客时尚主题展餐厅",
    "end_location": "嗨客时尚主题展餐厅"
  },
  "risk_fund": {
    "name": "ESTIMATE_ORDER_COST",
    "amount": 10000,
    "description": "就餐的预估费用"
  },
  "attach": "Easdfowealsdkjfnlaksjdlfkwqoi&wl3l2sald",
  "notify_url": "https://api.test.com",
  "openid": "oUpF8uMuAJO_M2pxb1Q9zNjWeS6o",
  "need_user_confirm": true
}

当发送成功之后会获取package数据,在使用封装的思想把数据返回去前端进行调起支付的请求

前端调起支付请求

以上部分内容参考该文章 送上链接

https://blog.csdn.net/hgg923/article/details/112469575#comments_22396695

第一次写博客,不足之处请指出,后续内容在第二部

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

java快速对接微信支付分(一) 的相关文章

  • HTTP 状态 404 - 请求的资源不可用

    在使用 MyEclipse IDE 中的 Tomcat 服务器和 Struts 2 框架时 我遇到了反复出现的问题 我将我的程序作为服务器应用程序运行 当它运行时 默认的index jsp 文件将成功打开 但应用程序的其他过去都不起作用 当
  • Spring控制器是线程安全的吗

    我遇到了这个控制器示例 想知道它是否是线程安全的 我特别想知道 gson 实例变量 import org springframework stereotype Controller import org springframework we
  • 任务“:app:dexDebug”执行失败

    我目前正在处理我的项目 我决定将我的 Android Studio 更新到新版本 但在我导入项目后 它显示如下错误 Information Gradle tasks app assembleDebug app preBuild UP TO
  • 如何打印整个字符串池?

    我想打印包含文字的整个字符串池String使用添加的对象intern 就在垃圾收集之前 JDK有没有隐式的方法来进行这样的操作 我们如何检查字符串池 EDIT The comment suggests that there may be a
  • JTree 节点不会被直观地选择

    不知何故 我无法为我的 JTree 节点启用 选择突出显示 我正在我的项目中使用自定义单元格渲染器 这很可能导致此问题 这是完整的渲染器类代码 protected class ProfessionTreeCellRenderer exten
  • 通过 InjectMocks Spy 注入对象

    我需要对一个类运行一系列单元测试 该类具有 Autowired Logger 实现 实现的基本思想是 Mock Logger logger InjectMocks TestedClass tested 但我想保存日志输出功能 Mockito
  • Java 重写 hashCode() 得到 StackOverflowError

    所以我不太熟悉重写 hashCode 并且我似乎在 hashCode 方法中以某种方式进行了一些无限递归 这是我的场景 我有一个 DuplicateCache 类 它是一个缓存对象 用于检查系统中的重复对象 我有一个静态内部类 Duplic
  • Java 变量的作用域

    我不明白为什么这段代码的输出是10 package uno public class A int x 10 A int x 12 new B public static void main String args int x 11 new
  • Spring Stomp over Websocket:流式传输大文件

    我的SockJs客户端在网页中 发送帧大小为16K的消息 消息大小限制决定了我可以传输的文件的最大大小 以下是我在文档中找到的内容 Configure the maximum size for an incoming sub protoco
  • spring - 强制 @Autowired 字段的 cglib 代理

    我有混合堆栈 EJB 和 Spring 为了将 Spring 自动装配到 EJB 我使用SpringBeanAutowiringInterceptor 不确定这是否会影响我遇到的问题 在尝试通过以下方式自动装配 bean 时 Scope p
  • 使用 java 按电子邮件发送日历邀请

    我正在尝试使用 java 发送每封电子邮件的日历邀请 收件人收到电子邮件 但不会显示接受或拒绝的邀请 而是将该事件自动添加到他的日历中 我正在使用 ical4j jar 构建活动 邀请 private Calendar getInvite
  • @EnableTransactionManagement 的范围是什么?

    我试图了解正确的放置位置 EnableTransactionManagement多个 JavaConfig 上下文的情况下的注释 考虑以下场景 我在 JPAConfig java 和 AppConfig java 中有 JPA 配置以及一组
  • 打印包含 JBIG2 图像的 PDF

    请推荐一些库 帮助我打印包含 JBIG2 编码图像的 PDF 文件 PDFRenderer PDFBox别帮我 这些库可以打印简单的 PDF 但不能打印包含 JBIG2 图像的 PDF PDFRenderer尝试修复它 根据 PDFRedn
  • 从 Java 日历迁移到 Joda 日期时间

    以前 当我第一次设计股票应用相关软件时 我决定使用java util Date表示股票的日期 时间信息 后来我体会到了大部分方法java util Date已弃用 因此 很快 我重构了所有代码以利用java util Calendar 然而
  • 不兼容的类型:在 java netbeans 中对象无法转换为 String

    我试图在我的项目中使用对象数组 但出现错误 incompatible types Object cannot be converted to String 在这一行 ST1 new String emt1 emt2 emt3 emt4 现在
  • 如何在keycloak中动态编辑standalone.xml文件

    我正在尝试通过 docker 编辑standalone xml 并尝试添加 但 keycloak 正在使用它standalone xml 但我可以看到standalone xml 文件中的更改 我需要在standalone xml 文件中添
  • 在 Selenium WebDriver 上如何从 Span 标签获取文本

    在 Selenium Webdriver 上 如何从 span 标记检索文本并打印 我需要提取文本UPS Overnight Free HTML代码如下 div id customSelect 3 class select wrapper
  • 从java中的字符串数组中删除空值

    java中如何从字符串数组中删除空值 String firstArray test1 test2 test4 我需要像这样没有 null 空 值的 firstArray String firstArray test1 test2 test4
  • 如何移动图像(动画)?

    我正在尝试在 x 轴上移动船 还没有键盘 我如何将运动 动画与boat png而不是任何其他图像 public class Mama extends Applet implements Runnable int width height i
  • 重写Object类的finalize()方法有什么用?

    据我所知 在java中如果我们想手动调用垃圾收集器 我们可以执行System gc 1 我们在重写的finalize 方法中做了哪些操作 2 如果我们想手动调用JVM垃圾收集器 是否需要重写finalize 方法 我们在重写的 Finali

随机推荐

  • R学习笔记4

    7 基本绘图 使用plot调整坐标向量 foo lt c 1 1 2 3 5 3 9 4 2 bar lt c 2 2 2 1 3 0 0 2 plot foo bar plot简单二维作图plot x y x y的位置不一定为向量 还可以
  • 【基础计算机网络1】认识计算机网络体系结构,了解计算机网络的大致模型(下)

    前言 在上一篇我们主要介绍了有关计算机网络概述的内容 下面这一篇我们将来介绍有关计算机网络体系结构与参考模型的内容 这一篇博客紧紧联系上一篇博客 这一篇博客主要内容是 计算机网络体系结构与参考模型 主要是计算机网络分层结构 协议 接口 服务
  • 【Java基础】计算机网络知识整理

    文章目录 OSI七层模型与TCP IP 五层模型 各层常见协议与硬件 常见协议的概念 TCP UDP区别 TCP如何保障可靠传输 https blog csdn net qq 32998153 article details 7967856
  • 机器学习之决策树模型最优属性选择方法

    决策树模型是用于解决分类问题的一个模型 它的特点是简答 逻辑清晰 可解释性好 决策树是基于 树 结构进行决策的 每个 内部结点 对应于某个属性上的 测试 每个分支对应于该测试的一种可能结果 也就是该属性的某个取值 每个 叶子结点 对应于一个
  • 插入排序(递归版)

    include
  • 网络安全渗透测试面试题2021

    1 获得到一个待检测的网站后 你觉得应该先做什么 whois 网站源IP 旁站 C段网站 服务器操作系统版本 Web容器版本 程序版本 数据库类型 二级域名 防火墙 维护者信息 2 Mysql相关的SQL注入 5 0以上和5 0以下有什么区
  • css 深度选择器/deep/

    在vue element ui时会遇到无法修改element ui样式问题 当style设置为scoped的时 所写的样式对子组件且元素是遍历出来时 样式是不生效的 如果希望样式对子组件也生效 可以使用 deep 深度选择器 模板
  • 人工智能-模糊计算(一)

    一 模糊理论基础 1 引入什么是模糊 一粒种子肯定不能构成一堆 两粒也不能 但是人们承认一亿粒种子肯定能构成一堆 那么这个界限在哪儿呢 是否可以说325647粒种子不是一堆而325648粒种子则构成一堆呢 E Borel 在上面这个问题当中
  • mui滚动条实现横竖都能滚动

    网上查了半天就没有说明白的 官方文档也是言语不详 但是有点用 首先 在mui做手机app的时候 自己通过overflow auto 然后固定宽高去展示滚动条是不好使的 只能用它提供的这种滚动方法 官方例子 div class mui scr
  • 2021数学建模国赛一等奖经验总结与分享

    建模国一经验总结 超详细 可根据需要选择性阅读 0 前言 1 前期准备 1 1 学习与感悟 1 2 寻找队友 1 3 比赛推荐 1 4 前期磨合与训练 1 5 资源与知识储备 2 比赛期间 时间分配和节奏问题 一些小建议 3 论文部分方法总
  • 【翻译】是时候与科技建立更持久的关系了吗?

    当轨道交通时间到来时 你可以进行轨道交通 但不是之前 罗伯特 A 海因莱因 在他的SF小说 通往夏天的门 中 海因莱因认为 对于特定形式的技术变革 时间必须是正确的 在必要的技术和文化基础到位之前 它不会发生 问题是 我们是否已经达到了最终
  • 【Linux 系列笔记】04 VMware Workstation安装(超细!!!)

    作者 MiTu 本帖内容著作权归作者所有 转载请务必保留本文链接 VMware 和 CentOS 的安装 前言 安装VMware Workstation 前言 在学习Linux前 必须有一个Linux发行版的系统才能来学习 安装Linux系
  • 数据结构:八种常见数据结构

    八种常见数据结构 一 前言 二 常用的数据结构 数组 Array 栈 Stack 队列 Queue 链表 Linked List 树 Tree 图 Graph 堆 Heap 散列表 Hash 三 八种数据结构的区别 数组 栈 队列 链表 树
  • Golang Array 数组使用注意事项和细节

    在go数组当中 长度是数据类型的一部分 3 int 3 int 数组使用注意事项和细节 1 数组是多个相同类型数据的组合 一个数组一旦声明 定义了 其长度是固定的 不能动态变化 var a 3 int a 0 1 1 这样是不行的 必须是整
  • 解决网络正常,但chrome浏览器无法正常使用的问题

    其他浏览器和联网软件工具都能正常使用 唯独chrome浏览器一直崩溃 连设置页面都打不开 根本就无法设置 在网上找了很多方法 整理的方法有 1 代理问题 2 重置网络netsh winsock reset 然后重启 3 重新安装 然而 这些
  • 哪些事件经常会导致项目被延误

    http horizon itpub net post 339 394756 1 上级领导主管臆断 制定了不现实的期限 项目经理与程序员们被迫按照不合理的进度表开展工作 2 客户的需求发生了变化 但没有对进度表作出相应的修改 3 低估了项目
  • WEB工程启动加载jar包顺序

    WEB工程在TOMCAT容器中启动的时候jar包的加载顺序 1 java home lib 目录下的java核心api 2 java home lib ext 目录下的java扩展jar包 3 java classpath Djava cl
  • spring中的控制反转和依赖注入之间的关系

    Spring中的控制反转 把new这一个过程交给了spring容器去处理 控制反转就是将new对象这一个过程交给外部去做 即Spring 而不是自己去创建 图中的1 控制正转 并没有这个名词 只是为了更好的理解什么是控制反转 图2中并没有n
  • hexo博客主题diaspora的gitalk配置(多图预警)

    前提 已装好git hexo环境 首先 在github上注册 如下图所示 进入设置 开发者设置 新建OAuth App 注册 注册完成 注意事项均在图中标出 现在完成了第一步 然后去主题页下载主题 也可以在你的hexo文件夹下右键打开git
  • java快速对接微信支付分(一)

    1 微信支付分产品介绍 维信支付分是对个人的身份特质 支付行为 使用历史等情况的综合计算分值 旨在为用户提供更简单便捷的生活方式 1 用户可在具体应用场景中 开通威信支付分 此为最常见的开通方法 开通后 用户可以在 微信 gt 我 gt 服