服务商模式实现JSAPI小程序微信支付(javaphp)

官方文档 https://pay.weixin.qq.com/wiki/doc/apiv3_partner/open/pay/chapter2_1.shtml 

使用wechatpay-php实现JSAPI支付(服务商和普通商户)文章浏览阅读1.3k次,点赞3次,收藏7次。之前我使用的sdk是“wechatpay-guzzle-middleware”这个,后面发现官方文档里面“wechatpay-php”后面带了个推荐,以前没用过这个,正好有新项目试一下。下面是全部的支付流程代码,已经跑通,拉起支付了。支付回调还没测试,等测试完继续更新。"wechatpay-guzzle-middleware"这个sdk的用法有时间再更新。后续分账的接口使用方法,下次继续更新。_wechatpay-php jsapihttps://blog.csdn.net/qq_43453685/article/details/132561681微信支付的服务商模式V3支付(可直接使用)文章浏览阅读9k次,点赞8次,收藏38次。直连商户:例如张三开了一个小程序,然后别人在这个小程序买东西,结账的时候,钱是直接打到张三的账号上的。服务商模式:例如张三开了一个小程序,然后这个小程序中有一个开分店的功能,然后别人在分店购买东西,在结账的时候,钱是直接打到分店的负责人的账号上的。_微信支付服务商https://blog.csdn.net/qq_26112725/article/details/131684591

配置

// 商户私钥,文件路径假定为 `cert/apiclient_key.pem`
// 我是把API证书私钥将整个文件放在cert文件夹下
$merchantPrivateKeyFilePath = public_path() . 'cert/apiclient_key.pem';
// 加载商户私钥
$this->merchantPrivateKeyInstance = PemUtil::loadPrivateKey($merchantPrivateKeyFilePath);// 商户证书,文件路径假定为 `cert/apiclient_cert.pem`
// 我是把API证书公钥将整个文件放在cert文件夹下
$merchantCertificateFilePath = public_path() . 'cert/apiclient_cert.pem';
// 加载商户证书
$this->merchantCertificateInstance = PemUtil::loadCertificate($merchantCertificateFilePath);
// 解析商户证书序列号
$this->merchantCertificateSerial = PemUtil::parseCertificateSerialNo($this->merchantCertificateInstance);// 平台证书,就是上一步下载的平台证书,我直接丢到cert文件夹了,它生成名字很长,大概长下面这样
$platformCertificateFilePath = public_path() . 'cert/wechatpay_48E897EFB18EE05C97B4EEF20F64193xxxxxxxxx.pem';
// 加载平台证书
$this->platformCertificateInstance = PemUtil::loadCertificate($platformCertificateFilePath);
// 解析平台证书序列号
$this->platformCertificateSerial = PemUtil::parseCertificateSerialNo($this->platformCertificateInstance);

微信支付v3平台证书生成详细过程

Certificate Downloader

Certificate Downloader 是 Java 微信支付 APIv3 平台证书的命令行下载工具。该工具可从 https://api.mch.weixin.qq.com/v3/certificates 接口获取商户可用证书,并使用 APIv3 密钥 和 AES_256_GCM 算法进行解密,并把解密后证书下载到指定位置。

该工具使用了 wechatpay-apache-httpclient、Maven、picocli、gson、lombok 等库。

前置条件

  • JRE 1.8+

快速开始

该工具已经通过 Maven 打包成 CertificateDownloader.jar,可在 release 中下载。

下载 jar 包后,如果你没有证书,第一次下载证书的命令如下,具体说明请看 常见问题-第一次下载证书:

java -jar CertificateDownloader.jar 
-k ${apiV3key} 
-m ${mchId} 
-f ${mchPrivateKeyFilePath} 
-s ${mchSerialNo} 
-o ${outputFilePath}

如果你已有微信支付平台证书,完整命令如:

java -jar CertificateDownloader.jar 
-k ${apiV3key} 
-m ${mchId} 
-f ${mchPrivateKeyFilePath} 
-s ${mchSerialNo} 
-o ${outputFilePath} 
-c ${wechatpayCertificateFilePath}

使用

必需参数有:

  • -f <privateKeyFilePath>,商户API私钥文件路径
  • -k <apiV3Key>,证书解密的密钥
  • -m <merchantId>,商户号
  • -o <outputFilePath>,保存证书的路径
  • -s <merchantSerialNo>,商户API证书的序列号

非必需参数有:

  • -c <wechatpayCertificatePath>,微信支付平台证书的路径。如果你还没有证书,请先不传该参数。

你还可以运行 java -jar CertificateDownloader.jar -h,查看帮助:

 

如果你已有微信支付平台证书,完整命令如:
java -jar CertificateDownloader.jar -k ${apiV3key} -m ${mchId} -f ${mchPrivateKeyFilePath} -s ${mchSerialNo} -o ${outputFilePath} -c ${wechatpayCertificateFilePath}-c, --wechatpay-cert=<wechatpayCertificateFilePath>微信支付平台证书,用于验签。如果你还没有证书,请先不传该参数。-m, --mchid=<merchantId>   商户号-s, --serialno=<serialNo>  商户证书的序列号-f, --privatekey=<privateKeyFilePath>商户的私钥文件-k, --key=<apiV3key>       ApiV3Key-o, --output=[outputFilePath]下载成功后保存证书的路径,可选参数,默认为临时文件目录夹-u, --baseuri=[baseUri]    接入点,默认为 https://api.mch.weixin.qq.com/-V, --version              Print version information and exit.-h, --help                 Show this help message and exit.你还可以运行 java -jar CertificateDownloader.jar -h,查看帮助:

运行就可以得到平台证书
 

微信支付专题——微信平台证书的两种下载方式文章浏览阅读1.1w次,点赞6次,收藏28次。 最近再做微信支付的模块,由于做的是服务商模块的,商户进件功能需要使用微信平台的公钥对敏感信息加密,而且传送的http头部需要把微信平台证书序列号携带在“Wechatpay-Serial”信息,官网上是这样标注的: 所以,就需要下载微信平台证书,使用平台公钥对敏感信息加密,这样把商户信息上送到微信支付平台时,微信平台使_wechatpaycertificatepathhttps://blog.csdn.net/qq_46540738/article/details/122257618

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

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

相关文章

python实用教程(二):安装配置Pycharm及使用(Win10)

上一篇&#xff1a;python实用教程&#xff08;一&#xff09;&#xff1a;安装配置anaconda&#xff08;Win10&#xff09;-CSDN博客 1、简介及下载 PyCharm是一款功能强大的 Python 编辑器&#xff0c;具有跨平台性。是Jetbrains家族中的一个明星产品。 下载地址&#xff…

redis实战——go-redis的使用与redis基础数据类型的使用场景(二)

一.go-redis操作hash 常用命令&#xff1a; redisClient.HSet("map", "name", "jack") // 批量设置 redisClient.HMSet("map", map[string]interface{}{"a": "b", "c": "d", "e"…

计算机毕业设计选题推荐-游戏比赛网上售票系统-Java/Python项目实战

✨作者主页&#xff1a;IT研究室✨ 个人简介&#xff1a;曾从事计算机专业培训教学&#xff0c;擅长Java、Python、微信小程序、Golang、安卓Android等项目实战。接项目定制开发、代码讲解、答辩教学、文档编写、降重等。 ☑文末获取源码☑ 精彩专栏推荐⬇⬇⬇ Java项目 Python…

棚子影院CMS程序PHP源码

01, 棚子影视是我现在最常用的一个看视频的网站&#xff0c;支持观看电影、国漫&#xff01;动漫&#xff0c;电视剧、综艺、记录片、香港剧等等。同时棚子影视支持手机&#xff0c;PC端在线观看&#xff0c;不用下载任何播放器&#xff0c;直接电脑或者手机打开网址就可以在线…

vue3 RouterLink路由跳转后RouterView组件未加载,页面未显示,且控制台无任何报错

在使用 vue3 开发项目过程中&#xff0c;组件之间使用 router-link 跳转&#xff0c;但是当我开发的组件跳转到其他组件时&#xff0c;其他组件的页面未加载&#xff0c;再跳转回自己的组件时&#xff0c;自己的组件也加载不出来了&#xff0c;浏览器刷新后页面可以加载出来。但…

结合 curl 与住宅代理实现高效数据抓取

引言 什么是 curl&#xff1f;有哪些功能&#xff1f; 基本 curl 命令有哪些&#xff1f; 为什么要使用 curl 处理 HTTP 请求&#xff1f; 如何使用 curl 和住宅代理进行网络抓取&#xff1f; 总结 引言 在当今数据驱动的商业环境中&#xff0c;数据的获取和分析能力是企…

Redis | 非关系型数据库Redis的初步认识

本节内容相对理论&#xff0c;着重看基础通用命令这一节 Redis 非关 kv型{字典} 概念应用ubuntu安装配置 windows添加密码 可能问题【ubuntu】远程连接 基础通用命令 ⭐ 概念 特点&#xff1a; 1、开源的&#xff0c;使用C编写&#xff0c;基于内存且支持持久化 2、没有表 支持…

Linux服务器不能使用su切换到其他用户

1. 现象 使用非root用户登录系统后&#xff0c;想使用su - 切换到root时&#xff0c;输入正确的密码后出现&#xff1a; 一开始以为自己密码记错了&#xff0c;或者是系统被入侵后篡改了root用户密码&#xff0c;服务器上的数据非常重要。后面不通过SSH连接&#xff0c;直接去…

图文详解ThreadLocal:原理、结构与内存泄漏解析

目录 一.什么是ThreadLocal 二.ThreadLocal的内部结构 三.ThreadLocal带来的内存泄露问题 ▐ key强引用 ▐ key弱引用 总结 一.什么是ThreadLocal 在Java中&#xff0c;ThreadLocal 类提供了一种方式&#xff0c;使得每个线程可以独立地持有自己的变量副本&#xff0c;而…

AI副业:别只顾刷黑神话悟空!AI做神话账号,商单月入过万(附教程)

前言 国产3A大作《黑神话&#xff1a;悟空》一经发布&#xff0c;瞬间登顶steam榜首&#xff0c;打破单机游戏在线记录&#xff0c;全球几十万国外玩家听着中文配音&#xff0c;看着翻译过来的英文字幕&#xff0c;玩的不亦乐乎&#xff01; 甚至国外论坛上兴起了一股西游风&a…

[已解决]mac远程连接windows桌面:parallels client连接遇到的问题

[已解决]mac远程连接windows桌面&#xff1a;parallels client连接遇到的问题 问题一&#xff1a;网络不通问题二&#xff1a;远程windows防火墙导致无法连接问题三&#xff1a;远程桌面服务未启动问题四&#xff1a;家庭版&#xff08;非专业版&#xff09;windows导致的无法使…

快排补充(挖坑法,lomuto前后指针,非递归法)

挖坑法 挖坑法动态示意图 挖坑法方法分析 创建左右指针。⾸先从右向左找出⽐基准⼩的数据&#xff0c;找到后⽴即放⼊左边坑中&#xff0c;当前位置变为新 的"坑"&#xff0c;然后从左向右找出⽐基准⼤的数据&#xff0c;找到后⽴即放⼊右边坑中&#xff0c;当前位置…

P2P 文件共享:现代网络中的高效文件传输

在互联网的世界中&#xff0c;不同应用程序的数据传输方法各异。P2P文件共享&#xff08;Peer-to-Peer File Sharing&#xff09; 作为一种高效的文件传输方式&#xff0c;使得用户可以在没有中央服务器的情况下直接进行文件交换。本文将详细介绍P2P文件共享的基本原理、优势及…

vue3实现系统tab标签页面切换

功能&#xff1a; 支持刷新当前、关闭其他、关闭全部、关闭当前支持打开多个相同path不同路由参数的页面&#xff0c;将fullPath作为路由页面唯一值 UI组件&#xff1a; 使用的是element-plus中的el-tab组件&#xff0c;结构目录如下 代码实现&#xff1a; 下面是 TagsView…

缺失ffmpeg.dll要用什么修复方法?快速恢复丢失的ffmpeg.dll文件

多媒体软件用户常常会遭遇一个提示&#xff1a;系统无法找到ffmpeg.dll文件。这类情况经常在启动视频编辑软件、流媒体播放应用或其他音视频处理工具时出现&#xff0c;导致相关程序无法正确加载和执行。ffmpeg.dll是一种关键的动态链接库文件&#xff0c;负责处理复杂的视频和…

【实战教程】一键升级CentOS 7.9.2009至OpenSSL 1.0.2u:加固你的Linux服务器安全防线!

文章目录 【实战教程】一键升级CentOS 7.9.2009至OpenSSL 1.0.2u&#xff1a;加固你的Linux服务器安全防线&#xff01;一、 背景二、 升级步骤2.1 检查 OpenSSL 版本2.2 安装 OpenSSL 依赖包2.3 下载 OpenSSL 的新版本2.4 解压缩下载的文件2.5 编译并安装 OpenSSL2.5.1 切换到…

linux系统编程:网络通信

1.网络 1.粘包 tcp特点 面向连接 字节流&#xff08;TCP 将数据视为连续的字节流&#xff0c;没有明确的消息边界。会发生粘包问题。 避免粘包 特殊分隔符&#xff1a;在消息间加入特殊的分隔符&#xff08;如换行符或其他特殊字符&#xff09;&#xff0c;接收方根据分…

大模型时代的AI应用开发,可以不用,但必须会

成熟的“格子衫”和年轻的“脸庞”&#xff0c;与开发者有关的大会总是少不了这两种元素&#xff0c;Create 2024百度AI开发者大会也不例外。 过去几十年&#xff0c;层出不穷的编程语言、框架等新技术&#xff0c;把一代又一代年轻的脸庞&#xff0c;塑造为成熟的格子衫&…

技术前沿:WebRTC与H.265编码的兼容性挑战与应对策略

WebRTC&#xff08;Web Real-Time Communication&#xff09;是一种支持网页浏览器进行实时语音通话、视频聊天以及P2P文件共享的技术。然而&#xff0c;标准的WebRTC API在大多数浏览器中默认并不支持H.265&#xff08;也称为HEVC&#xff0c;高效视频编码&#xff09;编码。这…

3D打印的模具镶件性能究竟如何?

随着模具制造业的快速发展&#xff0c;3D打印技术凭借其独特优势&#xff0c;在模具随形水路设计、异形模具制造及模具排气结构优化等方面大放异彩&#xff0c;赢得了注塑、压铸等行业的广泛关注。然而&#xff0c;新技术带来的材料变革让不少人对3D打印模具的性能持观望态度—…