个人怎么申请微信支付接口

1 微信公众号接口认证方案

1.1 认证流程

个人怎么申请微信支付接口

编辑

安全API接口认证方案 流程图模板_ProcessOn思维导图、流程图www.processon.com/view/link/636e05a21e085317c6a688d2

1)官方配置Token验证

  • Token不在网络中传递

2)开发一个Token验证接口

  • Token及其它参数拼接并字典排序再做sha摘要计算
  • 微信定期调用此接口来验证身份正确性
  • 通过摘要验证判断请求来源微信(Token配置在微信平台,固而判断来源)

3)通过appid secret获取access_token

4)所有业务URL直接拼接access_token

5)针对报文安全可以设置加密模式,使用在平台配置的AESkey进行加密

1.2 参考代码

private function checkSignature() { $signature = $_GET["signature"]; $timestamp = $_GET["timestamp"]; $nonce = $_GET["nonce"]; $token = TOKEN; $tmpArr = array($token, $timestamp, $nonce); sort($tmpArr, SORT_STRING); $tmpStr = implode( $tmpArr ); $tmpStr = sha1( $tmpStr ); if( $tmpStr == $signature ){ return true; }else{ return false; } }

1.3 小结

安全核心在于:

1、定时的Token验证

2、全部接口在https基础下请求

3、access_token具有时效性

4、AES增加安全系数

2 微信支付接口认证方案

2.1 认证流程

个人怎么申请微信支付接口

编辑

1)在微信官方配置并获取

a、appid mchid(商户id)

b、api key(API v3密钥)即AES-256-GCM 对称加密密钥。

c、商户API证书

d、微信支付平台证书即平台的公钥证书用于加密业务接口的敏感报文。

2)生成签名值

a、签名结构体

HTTP请求方法\n URL\n 请求时间戳\n 请求随机串\n 请求报文主体\n

b、使用商户API私钥(merchantPrivateKey)对以上数据进行SHA256 with RSA然后生成

Base64编码字符串。

3)生成HTTP头中的Authorization数据,Authorization由认证类型和签名信息两个部分组成

a、认证类型,目前为WECHATPAY2-SHA256-RSA2048

b、签名信息

  • 发起请求的商户(包括直连商户、服务商或渠道商)的商户号mchid
  • 商户API证书序列号serial_no,用于声明所使用的证书
  • 请求随机串nonce_str
  • 时间戳timestamp
  • 签名值signature

4)使用带Authorization的HTTP请求,调用业务接口

2.2 参考代码

import okhttp3.HttpUrl; import java.security.Signature; import java.util.Base64; String schema = "WECHATPAY2-SHA256-RSA2048"; HttpUrl httpurl = HttpUrl.parse(url); String getToken(String method, HttpUrl url, String body) { String nonceStr = "your nonce string"; long timestamp = System.currentTimeMillis() / 1000; String message = buildMessage(method, url, timestamp, nonceStr, body); String signature = sign(message.getBytes("utf-8")); return "mchid=\"" + yourMerchantId + "\"," + "nonce_str=\"" + nonceStr + "\"," + "timestamp=\"" + timestamp + "\"," + "serial_no=\"" + yourCertificateSerialNo + "\"," + "signature=\"" + signature + "\""; } String sign(byte message) { Signature sign = Signature.getInstance("SHA256withRSA"); sign.initSign(yourPrivateKey); sign.update(message); return Base64.getEncoder().encodeToString(sign.sign()); } String buildMessage(String method, HttpUrl url, long timestamp, String nonceStr, String body) { String canonicalUrl = url.encodedPath(); if (url.encodedQuery() != null) { canonicalUrl += "?" + url.encodedQuery(); } return method + "\n" + canonicalUrl + "\n" + timestamp + "\n" + nonceStr + "\n" + body + "\n"; }

个人怎么申请微信支付接口

p.s.你会发现好像都有oauth2的影子,如果你的系统没有上oauth2框架可以考虑结合微信支付或者微信公众号的方式做一个接口认证。其中核心就是摘要算法、非对称签名算法、对称加密算法。

本文【个人怎么申请微信支付接口】由作者: 悲观锁 提供,本站不拥有所有权,只提供储存服务,如有侵权,联系删除!
本文链接:https://www.cuoshuo.com/blog/4454.html

(0)
上一篇 2023-03-13 08:55:32
下一篇 2023-03-13 09:00:51

相关推荐

  • wince 软件 很难找(wince车载软件集合)

    车载现在的电动汽车除了是电动的以外,还有一个名字是智能汽车,在智能上除了辅助驾驶之外,最大的智能可能要属车载大屏,或者往细了说是娱乐,现在的汽车上基本上是在智能上卷了起来,既然是智能那就一定有系统,今天就来看看现在主流的一些车载OS。 1、WinCE系统: Windows CE操作系统是在PC Windows操作系统基础上研发而来的车载OS,对硬件要求不高,…

    2023-03-18
    100
  • 数据库备份sql语句_sql语句在哪里写

    前言: 备份乃不死之王! 一、全表结构备份: SELECT INTO 语句:表示从一个表中选取数据,然后把数据插入另一个表中,常用来备份一张表 INSERT INTO new_table_name SELECT * FROM old_tablename;示例:备份student表,备份表取名为student_backup insert into studen…

    2023-03-11
    500
  • 自然语言处理包括哪些内容_自然语言处理的应用

    对于ChatGPT来说,相信各位最近都被它铺天盖地的新闻报道所淹没,肯定还有不少人已经体验到了ChatGPT,大有人工智能已经高度进化之势。ChatGPT的出现,好像已经对当今互联网产生了巨大的影响,如果在这么发展下去,甚至看到了在未来能代替不少职业的趋势,比如客服、编程、广告、秘书工作等等。 什么是ChatGPT呢?ChatGPT,是美国OpenAI研发的…

    2023-03-12
    500
  • 如何看懂单片机原理图

    这张图第一眼看过去,可能会让人觉得头皮发麻,但稍微想一下,其实并不复杂。 这里以定时器中断T0为例。先看 定时器(也就是计数器)T0到达PT0H之前,先要经过TF0,开关ET0和开关EA。事实上,TF0也是一个开关,那么,为了让定时器T0的中断顺利到达PT0H,这三个开关就必须都闭合。 为什么说TF0也是一个开关呢?注意到TF0所在的那一列,一共有8位,这8…

    2023-03-14
    300
  • administrator账户默认密码(怎样取消administrator账户)

    很多用户想要关闭Windows 10 的开机密码,但不知道如何操作,本篇文章教大家如何操作。 方法一:设置 打开电脑左下角的开始菜单,找到齿轮图标,点击进入设置。如下图: 进入设置以后,在弹出的界面里找到帐户。如下图: 点击进入帐户,在弹出的界面左侧找到并点击登录选项,右侧界面会自动切换,在切换的界面里找到密码,点击密码会看到更改。如下图: 点击更改以后,会…

    2023-03-18
    100
  • 正弦函数图像面积怎么求(正弦函数一个拱的面积)

    用“曲线下的面积”来描述积分,就像用一串单词来描述一本书。 正弦函数的积分是其曲线下的面积。几何直觉就是:“正弦的积分是沿圆周路径的水平距离。”这句话第一次听说感觉比较抽象,当你理解了就会觉得它非常的美妙 一般的思维模式求正弦函数的积分就是:用黎曼和原理 在这里我们想象一下sinx的变化 X是我们当前的弧度角。在单位圆上(半径= 1),角度就是沿圆周的距离。…

    2023-03-17
    300
  • java正则表达式提取字符串,java提取字符串中的指定字符

    往往有很多需求,需要取出指定字符之间的字符串,取的方式有多种,关系到重复使用的问题,如abc123abc456abc,如果使用正则取出abc之间的内容,这里可能有两种结果, 结果1: 123 456 结果2: 123 为什么有两种结果呢 这里的一个区别就是,abc能否重复使用的问题,结果1就是abc重复使用了,而结果2中取法,abc不可重复使用 下面代码取出…

    2023-03-17
    300
  • JAVA课程设计报告简单(java课程设计实验报告)

    我是来自山东大学物联网专业的一名大三学生,今天分享一份Java实验报告供大家参考: 信息科学与工程学院 2021-2022学年第一学期 实 验 报 告 课程名称: Java编程技术 实验名称: 编写简单的控制台程序 专 业 班 级: 物 联 网 学 生 学 号: 20190012**** 学 生 姓 名: 朱凯 实 验 时 间: 2021年9月 15日 实验…

    2023-03-17
    200
  • string类和stringbuffer类的区别_stringbuffer底层

    StringBuffer类(或者StringBuilder)和String一样,也用来代表字符串,只是由于StringBuffer的内部实现方式和String不同,所以StringBuffer在进行字符串处理时,不生成新的对象,在内存使用上要优于String类。 所以在实际使用时,如果经常需要对一个字符串进行修改,例如插入、删除等操作,使用StringBuf…

    2023-03-09
    500
  • mysql有哪些数据库引擎

    执行如下指令查看所有mysql所有的存储引擎 InnoDB存储引擎 InnoDB是事务型数据库的首选引擎,支持事务安全表(ACID),支持行锁定和外键,上图也看到了,InnoDB是默认的MySQL引擎。InnoDB主要特性有: 1、InnoDB给MySQL提供了具有提交、回滚和崩溃恢复能力的事物安全(ACID兼容)存储引擎。InnoDB锁定在行级并且也在SE…

    2023-03-09
    800

发表回复

登录后才能评论
返回顶部
错说博客上线啦!