「开源系统」IJPay 让支付触手可及封装了微信支付宝等支付

介绍语

本号主要是Java常用关键技术点,通用工具类的分享;以及springboot+springcloud+Mybatisplus+druid+mysql+redis+swagger+maven+docker等集成框架的技术分享;datax、kafka、flink等大数据处理框架的技术分享。文章会不断更新,欢迎码友关注点赞收藏转发!

望各位码友点击关注,冲1000粉。后面会录制一些视频教程,图文和视频结合,比如:图书介绍网站系统、抢购系统、大数据中台系统等。技术才是程序猿的最爱,码友们冲啊

如果码友觉得代码太长,可以从头到尾快速扫射一遍,了解大概即可。觉得有用后再转发收藏,以备不时之需。

正文:

我的初衷是:

  • 该项目是 Apache-2.0 协议,看开源项目第一看;

  • 大家可以用来学习,可以通过该项目学习各种支付对接技术,可以少走很多弯路非常有用;

  • 可以直接拿项目来直接二次开发,在好项目的基础上进行二次开发,省时省力,质量还有保证;

干货: IJPay 让支付触手可及,封装了微信支付、QQ支付、支付宝支付、京东支付、银联支付、PayPal 支付等常用的支付方式以及各种常用的接口。不依赖任何第三方 mvc 框架,仅仅作为工具使用简单快速完成支付模块的开发,可轻松嵌入到任何系统里。

开源仓库地址:

gitee:http://gitee.com/javen205/IJPay

github:http://github.com/javen205/IJPay

特别说明:

  • 不依赖任何第三方 MVC 框架,仅仅作为工具使用简单快速完成支付模块的开发,可轻松嵌入到任何系统里。

  • 微信支付支持多商户多应用,普通商户模式与服务商商模式当然也支持境外商户、同时支持 Api-v3 与 Api-v2 版本的接口。

  • 支付宝支付支持多商户多应用,签名同时支持普通公钥方式与公钥证书方式

接入文档

官网文档:http://javen205.gitee.io/ijpay

效果图&示例

请参考 Demo,目前 IJPay Demo 提供两个版本 JFinal 版本以及 Spring Boot 版本

1.x 版本 Demo :

Gitee-IJPay-Demo:http://gitee.com/javen205/IJPay-Demo

GitHub-IJPay-Demo:http://github.com/javen205/IJPay-Demo

微信支付效果图:

 

2.x 版本 Demo :

Gitee-JFinal-Demo:http://gitee.com/javen205/IJPay/tree/master/IJPay-Demo-JFinal 

GitHub-JFinal-Demo:http://github.com/javen205/IJPay/tree/master/IJPay-Demo-JFinal

Gitee-SpringBoot-Demo:http://gitee.com/javen205/IJPay/tree/master/IJPay-Demo-SpringBoot GitHub-SpringBoot-Demo:http://github.com/javen205/IJPay/tree/master/IJPay-Demo-SpringBoot

工具类源码:

鄙人编码十年多,在项目中也积累了一些工具类,很多工具类在每个项目都有在用,很实用。大部分是鄙人封装的,有些工具类是同事封装的,有些工具类已经不记得是ctrl+c的还是自己封装的了,现在有空就会总结项目中大部分的工具类,分享给各位码友。如果文章中涉及的代码有侵权行为请通知鄙人处理。

计划是先把工具类整理出来,正所谓工欲善其事,必先利其器。项目中不管是普通单体项目还是多模块maven项目或是分布式微服务,一部分功能模块都是可以重用的,工具类模块就是其中之一。

本文转载于网络 如有侵权请联系删除

相关文章

  • 18张图解密新时代内存分配器TCMalloc

    系列导读本系列基于64位平台、1Page=8KB复制本文为《Go语言轻松系列》第二章「内存与垃圾回收」第二篇。关于「内存与垃圾回收」章节,大体从如下三大部分展开:知识预备(为后续的内容做一些知识储备),知识预备包括指针的大小(点击此处查看)TCMalloc内存分配原理(本篇内容)Go内存设计与实现Go的垃圾回收原理本文导读我们的主要目的是掌握Go语言的内存分配原理。但是呢,Go语言的内存分配主要是基于TCMalloc内存分配器实现的。所以,我们想搞懂Go语言的内存分配原理前,必须先了解TCMalloc内存分配器,以便于我们更好的理解Go语言的内存分配原理。本文目录如下: 读前知识储备内存的线性分配什么是FreeList?虚拟内存什么是TCMalloc?TCMalloc中的五个基本概念Page的概念Span的概念SpanList的概念Object的概念SizeClass的概念解密Tcmalloc的基本结构PageHeap、CentralFreeList、ThreadCache的详细构成解密PageHeap解密CentralFreeList和TransferCacheManager的构成解

  • python并集符号_Python Union()用法及代码示例

    参考链接:PythonSetunion()两个给定集合的并集是包含两个集合的所有元素的最小集合。两个给定集合A和B的并集是一个由A的所有元素和B的所有元素组成的集合,这样就不会重复任何元素。 表示集合并集的符号是“U”。示例: Input:LetsetA={2,4,5,6} andsetB={4,6,7,8} Output:{2,4,5,6,7,8} Explanation:TakingeveryelementofboththesetsAandB, withoutrepeatinganyelement,wegeta newset={2,4,5,6,7,8}.Thisnewset containsalltheelementsofsetAandalltheelements ofsetBwithnorepetitionofelementsandis namedasunionofsetAandB. 用法: set1.union(set2,set3,set4….) Inparameters,anynumberofsetscanbegiven 返回值: Theunion()functionretu

  • 从700多支队伍脱颖而出,知乎这个算法大赛冠军这样让大V「谢邀」答题

    机器之心原创作者:一鸣鸽了多日的知乎大V为何频频「谢邀」?潜水多年的小白为何突然开始积极回答?昨日,智源-看山杯专家发现算法大赛正式落幕。机器之心带你走进冠军算法,揭秘什么样的方法能让系统准确邀请到答题者回答问题。知乎是目前国内最大的知识问答社区。截止2019年1月,它已经成为一个拥有2.2亿用户的平台。每天平台上都会产生大量的新提问,但是如此海量的问题往往不会被能够回答问题的答题者主动发现。因此,有时候需要用户或平台算法主动向潜在的答题者提出邀请,让他们来回答问题。在知乎建立的早期,邀请主要由用户向熟悉的其他答题者进行邀请。随着用户规模和问题数量的增长,人工方法不能满足实际的需求,因此知乎需要一种算法能够自动向专家邀请回答领域内的问题。为了利用知乎积累的海量高质量文本数据和行为数据,2019年8月份知乎联合智源人工智能研究院推出了专家发现算法大赛,寻找一种答题者推荐合适问题的算法。据介绍,为期四个月的比赛中,吸引了全球11个国家或地区711支队伍、1631名选手参赛。本次比赛共设三个级别的奖项,其中一等奖一名,二等奖两名,三等奖四名。经过几轮角逐后,昨日,智源-看山杯专家发现算法大赛

  • SSRF漏洞原理、挖掘技巧及实战案例全汇总

    1、概念: SSRF(Server-SideRequestForgery:服务器端请求伪造)产生原因是服务端提供了从其他服务器应用获取数据的功能,比如从指定URL地址获取网页文本内容,加载指定地址的图片,下载等等。很好理解,这个请求的发起端是服务器,访问目标是和服务器处于同一内网的资源服务器,如果没有对这个目标地址、文件类型做过滤与限制,就可以篡改这个请求地址来伪造请求,所以顾名思义,漏洞名叫“服务器端请求伪造”。因SSRF通常被用来进行端口扫描,所以这个漏洞也叫XSPA,全称crosssiteportattack,跨站点端口攻击。2、漏洞危害:1、读取或更新内部资源,造成本地文件泄露;2、扫描内网主机端口并获取服务器上运行的服务版本,不得不提的案例是WeblogicSSRF探测内网Redis端口并结合CRLF写shell(阅读原文):3、将含有漏洞防主机用作代理/跳板攻击内网主机,绕过防火墙等;3、挖掘技巧:1、根SSRF漏洞特征,挖掘方法有二:数据层面需要关注的关键字段是URL、IP地址、链接等,关键字有:share、wap、url、link、src、source、target、u

  • Atlas元数据存储模型分析

    导语:Atlas是一个可扩展的核心基础治理服务集-使企业能够有效地和高效地满足Hadoop中的合规性要求,并允许与整个企业数据生态系统的集成。该项目用于管理共享元数据、数据分级、审计、安全性以及数据保护等各个方面,是数据治理的重要组成部分。本文介绍Atlas的存储子系统,分析Atlas的存储模型和各个元数据要素的存储结构。Atlas简介Atlas是一个可扩展和可扩展的核心基础治理服务集-使企业能够有效地和高效地满足Hadoop中的合规性要求,并允许与整个企业数据生态系统的集成。从具体功能点看,atlas可以完成元数据系统的以下管理需求:数据分类:委员数据导入或定制分类和标签,可以自动捕获被分类元数据之间的传播关系。集中审计:记录应用与数据交互的安全访问信息以及具体的执行步骤等操作痕迹。搜索与血缘:支持按全文、按分类标签、类sql等各种方式的查询。 对数据集血缘关系的可视化浏览使用户可以下钻到操作,安全以及数据起源相关的信息安全策略:支持基于角色的运行时合规策略;支持数据信息脱敏如属性级别的masking其整体架构图如下图所示:整体来看,atlas由Core、integration、me

  • 使用 shell 在多服务器上批量操作

    需求SSH协议SSHSecureShell(安全外壳协议,简称SSH)是一种加密的网络传输协议,可在不安全的网络中为网络服务提供安全的传输环境。SSH通过在网络中建立安全隧道来实现SSH客户端与服务器之间的连接。 SSH的原理跟HTTPS差不多,都是基于TCP和非对称加密进行的应用层协议。它跟HTTPS的不同之处在于HTTPS通过数字证书和数字证书认证中心来防止中间人攻击,而ssh服务器的公钥没有人公证,只能通过其公钥指纹来人工确定其身份。如下图所示,我们第一次使用ssh登陆某台服务器时,ssh会提示我们验证服务器的公钥指纹。当我们验证此公钥指纹是我们要登陆的服务器后,服务器的公钥会被添加到~/.ssh/known_hosts里,再登陆时,ssh检测到是已认证服务器后就会跳过公钥验证阶段。建连过程关于通信加密的概念,我在之前的文章也有所介绍,参见:再谈加密-RSA非对称加密的理解和使用。至于SSH协议的建连过程,则可以参阅:ProtocolBasics:SecureShellProtocol。总结起来主要包括以下步骤:TCP三次握手SSH协议版本协商客户端与服务端的公钥交换加密算法协商

  • 深入解析Java反射(1) - 基础

    >https://www.sczyh30.com/posts/Java/java-reflection-1/?排版有点点崩嘿因为本人最近正筹备Samsara框架的开发,而其中的IOC部分非常依靠反射,因此趁这个机会来总结一下关于Java反射的一些知识。本篇为基本篇,基于JDK1.8。一、回顾:什么是反射?反射(Reflection)是Java程序开发语言的特征之一,它允许运行中的Java程序获取自身的信息,并且可以操作类或对象的内部属性。 Oracle官方对反射的解释是ReflectionenablesJavacodetodiscoverinformationaboutthefields,methodsandconstructorsofloadedclasses,andtousereflectedfields,methods,andconstructorstooperateontheirunderlyingcounterparts,withinsecurityrestrictions. TheAPIaccommodatesapplicationsthatneedaccesstoe

  • [ASP.NET MVC]通过对HtmlHelper扩展简化“列表控件”的绑定

    在众多表单元素中,有一类<select>元素用于绑定一组预定义列表。传统的ASP.NETWebForm中,它对应着一组重要的控件类型,即ListControl,我们经常用到DropDownList,ListBox、CheckBoxList和RadioButtonList都是其子类。ASP.NETMVC通过对HtmlHelper和HtmlHelper<TModel>的扩展实现了对不同类型的<select>元素的绑定,它们以扩展方法的形式定义在SelectExtensions中。当我们在操作这些扩展方法的时候,必须手工地提供以IEnumerable<SelectListItem>对象表示的列表项。如果我们建立一个独立的组件来维护这些预定的列表,那么我们就可以定义一些更加简单的扩展方法以避免手工地指定列表项。[源代码从这里下载]一、创建一个独立的列表维护组件我们将这些绑定在<select>元素中的预定义列表中的元素称为Code。作为简单的演示模拟,我们创建了一个名为CodeManager的组件。我们先来看看用于描述单一Code的Co

  • 腾讯云API网关最终请求形式API网关2017

    拼接规则API网关接口请求URL的拼接规则为:https://+请求域名+请求路径+?+最终请求参数串 组成部分说明: 请求域名:API网关的请求域名固定为https://apigateway.api.qcloud.com。 请求路径:API网关请求路径固定为/v2/index.php。 最终请求参数串:接口的请求参数串包括公共请求参数和接口请求参数。 使用示例API网关的接口最终的请求URL结构形式如下:以API网关查询API接口列表接口(DescribeApisStatus)为例,其中前7个参数为公共请求参数,后8个参数为接口请求参数。 https://apigateway.api.qcloud.com/v2/index.php? Action=DescribeApisStatus &SecretId=xxxxxxx &Region=ap-guangzhou &Timestamp=1465055529 &Nonce=59485 &Signature=mysignature &SignatureMethod=HmacSHA256//

  • 腾讯云日志服务获取日志集信息日志服务API2017

    功能描述本接口用于获取日志集信息。 请求请求示例GET/logset?logset_id=xxxx-xx-xx-xx-xxxxxxxxHTTP/1.1 Host:<Region>.cls.tencentyun.com Authorization:<AuthorizationString>复制 请求行GET/logset复制 请求头除公共头部外,无特殊请求头部。 请求参数 字段名 类型 位置 必须 含义 logset_id string query 是 查询的logsetID 响应响应示例HTTP/1.1200OK Content-Type:application/json Content-Length:123 { "logset_id":"xxxx-xx-xx-xx-xxxxxxxx", "logset_name":"testname", "period":15, "create_time":"2017-08-0812

  • [工控安全][原创]西门子PLC固件逆向之定位s7comm协议的一个切入口

    [原创]西门子PLC固件逆向之定位s7comm协议的一个切入口 mailto:wangkai0351@gmail.com 【未经同意禁止转载】 鉴于本博客涉及的信息安全技术具有破坏计算机信息系统的风险,建议读者在学习/研究/探讨之前,确保已经充分了解以下内容: 本博客所讨论的技术仅限于研究和学习,旨在提高计算机信息系统的安全性,严禁用于不良动机,任何个人/团队/组织不得将其用于非法目的,否则后果自负,特此声明。 Choice,theproblemischoice! 在西门子PLCCPU固件逆向工程的研究工作中[1],我常常找不到一个合适的切入点。 众所周知,一个CPU芯片私有、嵌入式操作系统私有、文件系统私有、应用层协议栈私有,甚至开发以上软件的编译器都是私有,并且没有符号表symboltable时,逆向工作是多么的困难。这和常见的物联网设备逆向[2]的难度是不可同日而语的。 那么,没有头绪的情况下,我并没有choice的空间,只有妄图依靠灰箱知识找到一个突破口。 我们知道s7comm的protocolid是0x32,所以使用“==0x32”这个条件去全局搜索反编译结果,搜索结果如

  • JVM调优之jstack找出最耗cpu的线程并定位代码

    stack可以定位到线程堆栈,根据堆栈信息我们可以定位到具体代码,所以它在JVM性能调优中使用得非常多。下面我们来一个实例找出某个Java进程中最耗费CPU的Java线程并定位堆栈信息,用到的命令有ps、top、printf、jstack、grep。 第一步先找出Java进程ID,服务器上的Java应用名称为mrf-center: root@ubuntu:/#ps-ef|grepmrf-center|grep-vgrep root217111114:47pts/300:02:10java-jarmrf-center.jar复制 得到进程ID为21711,第二步找出该进程内最耗费CPU的线程,可以使用 1)ps-Lfppid 2)ps-mppid-oTHREAD,tid,time 3)top-Hppid 用第三个,输出如下:复制 TIME列就是各个Java线程耗费的CPU时间,CPU时间最长的是线程ID为21742的线程,用 printf"%x\n"21742复制 得到21742的十六进制值为54ee,下面会用到。 OK,下一步终于轮到jstack上场了,它用来输出进程21711的堆栈

  • HTTP下载劫持 - 电脑管家

    记得以前用浏览器直接下载运行某软件时候就曾被劫持过。 具体就是明明在网站上下载的是A软件,下载后发现是B软件(我还纳闷的稀里糊涂安装了),而你等再回去原样点击时候,下载回来的就是正确的A软件。 情景是无法或很难再现的,不论你怎样刷新或重开浏览器,下载回来的都是正确的A软件了。 我估计这是因为这种劫持推广是为了隐藏保护自身(当然也可能是技术原因),这种事概率比较低的,毕竟这种行为其实是黑客木马病毒行为了。 这种行为估计层面比较高,并且因为频率很低极低,导致用户很难发现问题和举证(比如你因为这个中毒了,你怎么去举报举证?你事后你极难再现和发现问题的)。 已知采用过这种流氓推广的流氓公司的流氓软件: 软件公司 发生时间 UC浏览器 记不清了 腾讯公司-电脑管家 2017.8.14    由上图可以清楚看到,本来是下载的12noon.com网站上的dc-setup.exe文件,结果下载回来成电脑管家(qqpcmgr.exe)文件了,等你再重新下载时,结果又正常了。 这样用户不注意时候就可能稀里糊涂安装上了,尤其是你浏览器直接下载直接运行的情况下,并且难

  • 自动发邮件

    #!/usr/bin/envpython #-*-coding:utf-8-*- #@Project:pythonProject #File:sendmail.py #@Time:2022/4/222:40 #@Author:lilu """ 1,导包 2,建立连接 3、身份认证 4.发送邮件 5、邮件内容:发送人,接收人,主题,内容 """ importsmtplib fromemail.mime.multipartimportMIMEMultipart#发送邮件 fromemail.mime.textimportMIMEText#邮件内容 fromemail.mime.imageimportMIMEImage#发送图片 fromtest_api.common.readconfimportreadconf fromemail.headerimportHeader fromtest_api.common.logimport* defsendmail(): #设置smtplib所需要的参数 #服务器地址 email_info=readconf('email_info') smtp

  • PeopleTools预警程序制作

    预警程序的概念:在主页上显示一个查询的结果。这个查询就是一个Record。 一、在ApplicationDesigner建一个项目,包含所有需要的Record。 CUX_REC_BLRY Record类型是View,必须有oprid字段且是主键。 二、前端页面配置过程 1、PeopleTools→安全性→查询安全性→查询访问管理器 单击"插入子级记录" 树名称:QUERY_TREE_YUJING 2、报告工具→查询→查询管理器 建立了查询后,下面的步骤就是要在主页上显示出它的结果。 3、PeopleTools→门户网站→Pagelet向导→Pagelet向导  向导最后一步(第6步),文件夹选"PeopleSoft应用程序"。 配置主页显示的内容。在主页上单击"内容"。 进行预警配置的界面 在报告工具里的查询修改后,要重新运行Pagelet向导。

  • HDU 2196 Computers - 树的直径

    .post-body{--body-bg-color:#eee;--content-bg-color:#fff;--card-bg-color:#f5f5f5;--text-color:#555;--blockquote-color:#666;--link-color:#555;--link-hover-color:#222;--brand-color:#fff;--brand-hover-color:#fff;--table-row-odd-bg-color:#f9f9f9;--table-row-hover-bg-color:#f5f5f5;--menu-item-bg-color:#f5f5f5;--btn-default-bg:#fff;--btn-default-color:#555;--btn-default-border-color:#555;--btn-default-hover-bg:#222;--btn-default-hover-color:#fff;--btn-default-hover-border-color:#222} @media(prefers-col

  • Groovy语言学习--语法基础(1)

    2018年11月末,从上家公司离职后进入现在的公司。进入项目以来,发现项目中有很多groovy脚本,以前没接触过groovy,抽时间系统地学一下,也方便后期项目的开发和维护。 groovy和java的渊源以及和规则引擎的比较,作为白板目前还没评论的资格,学语言当然还是直接撸代码来得实在。好在和java同宗,白板之旅。   packagegroovy /* *Print方法printprintln后面必须跟参数否则会抛groovy.lang.MissingPropertyException */ //print //println println"helloworld" /* *单引号中的内容严格对应java中的String不对$符号进行转义 */ defs1='iam100$dollar' printlns1 classPerson{ Stringname Integerage } defperson=newPerson(name:"john",age:18) /* *双引号“”的内容和脚本语言处理有点像,如果字符中有$符号的话,则会表达式先求值 */ defs2="

  • 接口测试的三轮测试

    三轮测试在功能测试已经实行了很长时间,也取得显著的效果。其实在接口测试的日常测试中也存在这三轮测试。只是有着稍许的不同。   下面简单介绍一下:   接口测试的三轮测试,按照时间顺序分别为:冒烟测试,单元测试,集成测试。   1.冒烟测试   开发同时提交多个接口测试时,测试人员需要在第一时间对所提交的接口进行冒烟测试。冒烟测试的特点是时间短,见效快。不要求详细的准备数据,不要求细致的验证。但是要保证在尽量短的时间内跑完所有接口的主要功能。这样做的好处是可以保证一级bug尽早发现,尽早解决,尽早测试。为第二轮单元测试做好了充分的准备。避免了在第二轮测试中因为某个bug无法继续测试的情况。   2.单元测试   冒烟测试后,就进入了单元测试阶段。单元测试的工作是认真细致的测试单个接口,并回归冒烟测试时发现的bug。单元测试做的工作会比较多。如准备数据,bug回归,补充测试用例等等。所以时间相对会较长。   3.集成测试   在所有本次日常接口的测试脚本跑通后,就进入了集成测试阶段。集成测试主要分为测试-回归两个阶段。测试阶段中,测试人员会跑完该项目的所有的接口。特别要着重测试那些可能会被

  • 生产者-消费者(wait-notify实现)

    使用wait/notify来实现生产者消费者时能够达到在线程阻塞的效果,这样就不会出现轮询,然后浪费cpu时间的目的。代码如下:1.状态类,表示是否已经生产: 1packagecom.demo; 2 3publicclassState{ 4 5publicState(){ 6flag=false; 7} 8 9publicbooleanflag; 10}复制 State.java 2.生产者类: 1packagecom.demo; 2 3publicclassProductorextendsThread{ 4 5publiccom.demo.Statestate; 6 7@Override 8publicvoidrun(){ 9for(inti=0;i<10;){ 10try{ 11synchronized(state){ 12if(state.flag){ 13state.wait(); 14}else{ 15System.out.println("product:"+i); 16i++; 17state.flag=true; 18state.notify(); 19

  • lian

    mysql-hlocalhost-P3306-uroot-p密码

  • 图片轮播器

    SB里只需要两个控件:复制 UIScrollView UIPageControl @interfaceLYViewController()<UIScrollViewDelegate> /**scrollView*/ @property(weak,nonatomic)IBOutletUIScrollView*scrollVIew; /**图片页数*/ @property(weak,nonatomic)IBOutletUIPageControl*pageNumber; /**timer*/ @property(nonatomic,strong)NSTimer*timer; @end @implementationLYViewController -(void)viewDidLoad { [superviewDidLoad]; //设置图片 for(inti=0;i<kImageCount;i++){ UIImageView*imageView=[[UIImageViewalloc]init]; imageView.frame=CGRectMake(i*kWidth

相关推荐

推荐阅读