微信公众号、支付接口认证:一步步教您如何实现

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

1.1 认证流程

1)官方配置Token验证

  • Token不在网络中传递

2)开发一个Token验证接口

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

3)通过appid secret获取access_token

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

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

1.2 参考代码

以下是官方提供的php demo

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;}
}

以下是chatgpt直接把php转成java的代码:

private boolean checkSignature() {String signature = request.getParameter("signature");String timestamp = request.getParameter("timestamp");String nonce = request.getParameter("nonce");String token = TOKEN;String[] tmpArr = {token, timestamp, nonce};Arrays.sort(tmpArr);String tmpStr = String.join("", tmpArr);tmpStr = sha1(tmpStr);if (tmpStr.equals(signature)) {return true;} else {return false;}
}

https://developers.weixin.qq.com/doc/offiaccount/Getting_Started/Overview.html

1.3 小结

微信公众号接口认证方案即是基于oauth2的token认证机制

接口安全认证的核心在于:

1、定期的Token验证

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

3、access_token具有时效性

4、AES增加安全系数

其实不难看出微信公众号的核心思想就是Oauth2认证协议。不过在基础上增加了定期Token验证的机制来保证请求的来源是微信。

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";
}

https://wechatpay-api.gitbook.io/wechatpay-api-v3/

2.3 小结

微信支付接口认证方案即是基于数字签名的技术方案。数字签名借助于数字证书可保证通信的身份与数据不被篡改。

p.s.如果考虑数据的安全微信支付也支持对报文进行AES-256-GCM对称加密。

3、总结

  • 微信公众号接口认证方案即是基于oauth2的token认证机制
  • 微信支付接口认证方案即是基于数字签名的技术方案

======================================

如果文章对你有帮助,请不要忘记加个关注、点个赞!必回关!!!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/4333.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

ChatGPT扩展系列之跨平台桌面客户端ChatBox

ChatGPT扩展系列之跨平台桌面客户端ChatBox 今天介绍一下好玩的东西——ChatBox 为什么需要 ChatBox? 直接使用 ChatGPT API (OpenAI API) 是比较困难的,需要了解编程与接口调用,而且用起来不够方便。ChatBox 可以帮助你处理所有的底层调用。ChatBox 还帮你在本地保存了所…

ChatBox安装--ChatGPT的桌面客户端

ChatBox 是什么 是开源的 ChatGPT API (OpenAI API) 桌面客户端,Prompt 的调试与管理工具,支持 Windows、Mac 和 Linux。 > github地址 下载链接 支持的平台: Windows : 请下载.msi安装包 Mac:请下载.dmg(推荐…

20 个你从未想过的 ChatGPT 用途!

以下内容来自公众号逆锋起笔,关注每日干货及时送达 这篇文章向我们展示了ChatGPT的有趣用途,如创作独特的故事、写作协助、模拟对话和游戏等。这些应用展示了ChatGPT的强大功能和灵活性。通过这些有趣的例子,我们可以看到ChatGPT作为一种人工…

我们用ChatGPT做什么?我们可以利用ChatGPT去做的11件事。

1. 快速撰写定制的简历和求职信 如果您目前正在找工作,那么求职过程中最累人的部分之一就是为您申请的每份工作撰写个性化的简历和求职信。不幸的是,您不能简单地为每份工作写一份。 ChatGPT 是在线制作简历的最快方式之一。它可以帮助您减轻在短短几秒…

ChatGPT调用API攻略

随着ChatGPT的问世,交互型人工智能技术得到了进一步的发展,各大互联网巨头也争相研发类似于ChatGPT的产品,例如百度的文心一言,CSDN的chitgpt等等。相比较而言,ChatGPT的相较于其他而言还是略胜一筹,在这里…

浅谈ChatGPT技术原理的个人理解

浅谈ChatGPT技术原理的个人理解 前言ChatGPT的技术原理ChatGPT第一阶段-冷启动阶段的监督策略模型ChatGPT第二阶段-训练回报模型(Reward Model,RM)ChatGPT第三阶段-采用强化学习来增强预训练模型的能力 ChatGPT能否取代Google、百度等传统搜索引擎总结 前…

ChatGPT如何助力IT从业者?如何让ChatGPT帮助我们变现赚钱?

随着人工智能技术的快速发展,chatgpt已经成为了一个热门话题。它是一种人工智能语言模型,可以模拟人类对话,能够帮助IT从业人员在很多方面提升工作效率和生产力。那我们该如何巧妙利用它呢? ChatGPT如何助力IT从业者? 自然语言…

ChatGPT正式开放API,企微接入平台上线

ChatGPT正式开放API,企微接入平台上线 前言接入方法Demo 前言 这几天,OpenAI正式开放ChatGPT API的消息又再次火爆AI界的朋友圈了吧,并且开放的是已经应用到 ChatGPT 产品中的gpt-3.5 - turbo模型。不仅如此,让开发者更兴奋的是C…

DocsGPT/Hypercrx ChatGPT chat plugin features

背景 X-Lab 实验室下有两个文档助手 hypertrons-crx支持统计和浏览器ChatGPT插件 ,DocsGPT 开源文档助手,两者是都可以训练文档,最近向hypertrons-crx提issue申请训练SolidUI 文档 。 申请 申请issue地址 使用 hypertrons-crx 介绍文章…

你升级GPT-4了吗?,如何申请GPT-4 API?最全攻略

本文来源:如何申请GPT-4 https://www.chatgoo.cn/20231337/ 你升级GPT-4了吗? OpenAI 官方邮件提到GPT-4的申请使用说明,第一批,开放给ChatGPT Plus会员。 ChatGPT Plus ChatGPT Plus的订阅用户将在 chat.openai.com上获得GPT-4访…

更强更好用的chatgpt内核-newbiying

​介绍 new biying是一个新的搜索引擎,它可以提供你可靠、最新的结果,并且给出完整的答案1。它还可以引用来源,让你知道信息的出处1。你可以用任何方式提问,无论是复杂的搜索,还是后续的跟进,还是在聊天中…

谷歌版ChatGPT申请:bard isn’t currently supported in your country. stay tuned!

申请地址:https://bard.google.com 申请谷歌版ChatGpt,失败,提示当前区域不支持。 由于在国内是用的魔法网络,区域显示Jappan,切换区域为US,即可看到如下页面 点击 Join waitlist,登录google 账号即可,如果浏览器登录后…

一条指令打开 ChatGPT 开发者模式

一条指令打开ChatGPT开发者模式 一条指令打开 ChatGPT 开发者模式 大家应该都厌倦了ChatGPT冷漠刻板的回答吧。对于那些曾经使用过ChatGPT的人来说,他们知道这个系统存在许多限制。例如,它无法提供关于2021年以后的网络资讯、暴力、色情和政策内容的回…

人工智能深入参与嵌入式控制器调试---ChatGPT回答TC377 PSRi寄存器ACT位置位失效问题

做嵌入式开发的小伙伴们,有福利了! 当遇到调试过程中遇到难题,我们往往会找手册,上网搜索,找FAE来解决, 现在有了ChatGPT,尝试问了下调试的问题,如下 首先我的问题描述:…

仅此一文,图文并茂保姆式教你取得自己的GPT开发者帐号

前言 6月14日OpenAI毫无预告地发布了ChatGPT的重大更新。从官网信息梳理来看,OpenAI的更新主要包括以下六个方面的内容: 在Chat Completions API新增函数调用(Function call)功能改进了gpt-4和gpt-3.5-turbo版本更新了gpt-3.5-turbo的16k上下文版本嵌入式模型降低了75%的成…

Writsonic?文案型chatGPT?为文字工作者打造的顶级工具?

Writsonic?文案型chatGPT?为文字工作者打造的顶级工具? 故事 一天,小陈在摸鱼,在看到chatGPT的威压在还是屈服了,他就努力~努力地去寻找文案chat,他成功了,还是找到了。 &#xf…

类ChatGPT产品Claude上线Slack平台,一手实测体验在此

文章目录 Claude-in-Slack自我介绍成语接龙数学能力代码能力其他总结 Claude-in-Slack Claude是Anthropic推出的类ChatGPT对话机器人。Anthropic是一家由前OpenAI团队成员创立的人工智能初创公司。Claude免费、支持中文、无需注册,好心动,立刻上手测试。…

【AIGC】Visual ChatGPT 视觉模型深度解析

欢迎关注【youcans的AGI学习笔记】原创作品 【AIGC】Visual ChatGPT 视觉模型深度解析 1. 【Visual- ChatGPT】火热来袭2. 【Visual-GPT】操作实例2.1 处理流程2.2 操作实例 3. 【Visual-GPT】技术原理分析3.1 技术原理3.2 系统架构3.3 模块说明3.4 Prompt Manager 功能与规则3…

万字长文解析!复现和使用GPT-3/ChatGPT,你所应该知道的

About The Author 关于作者 英文原版作者:杨靖锋,现任亚马逊科学家,本科毕业于北大,硕士毕业于佐治亚理工学院,师从 Stanford 杨笛一教授。 杨昊桐 译,王骁 修订 感谢靳弘业对第一版稿件的建议&#xff0c…

在苹果电脑 mac 上安装原神(playCover)

该方法只能在 M1、M2 mac 上安装原神 目录 前言一、首先下载安装 playCover1. playCover 下载2. playCover 安装安装出现问题解决方法 二、下载安装原神1.安装包下载2.安装原神 三、登录、键盘映射及版本更新等问题登录键盘映射版本更新 前言 最近买了新的mac,作者…