微信支付与QQ互联接入问题记录

使用QQ互联完成网站的QQ第三方登录(详解+坑) 前言:网站收尾工作,就只剩下第三方登录,去QQ互联注册,提交资料,审核了快一周,创建应用,一直创建不了,后来才发现是QQ互联的问题,耽误了两天又开始创建应用,终于弄好了,建议大家使用QQ第三方的,一定要有耐心,不能着急,不然气的是自己, 如何使用QQ第三方登录和QQ第三方登录的应用场景,流程方式等等.....? 参考网站: 全面型网址:https://www.cnblogs.com/Leo_ 阅读详情

1.  微信支付证书处理

1.1  背景说明

接入微信支付,调用企业付款接口,向微信用户个人付款。

1.2  问题说明

微信支付企业付款接口文档https://pay.weixin.qq.com/wiki/doc/api/tools/mch_pay.php?chapter=14_2中说明该接口“请求需要双向证书”,但未说明证书需要如何使用。

微信支付安全规范文档https://pay.weixin.qq.com/wiki/doc/api/tools/mch_pay.php?chapter=4_3中说明“微信支付接口中,涉及资金回滚的接口会使用到API证书,包括退款、撤销接口”,未说明企业付款接口需要使用证书。

因此在调用微信支付企业付款接口时,未使用证书,调用时返回“证书出错,请登录微信支付商户平台下载证书”。

1.3  问题分析

使用Fildder调用微信支付企业付款接口,https://api.mch.weixin.qq.com/mmpaymkttransfers/promotion/transfers,发送POST请求,出现如下提示:

使用Java程序通过SSLSocket访问微信支付企业付款接口,查看SSL调试信息,如现以下内容:

*** CertificateRequest

Warning: no suitable certificate found - continuing without client authentication

*** Certificate chain

<Empty>

***

根据以上现象可知,微信支付企业付款接口的SSL服务进行了双向认证,会对SSL客户端证书进行认证。

1.4  微信支付证书处理

微信支付证书下载说明见安全规范文档https://pay.weixin.qq.com/wiki/doc/api/tools/mch_pay.php?chapter=4_3。

商家在申请微信支付成功后,收到的相应邮件后,可以按照指引下载API证书,也可以按照以下路径下载:微信商户平台(pay.weixin.qq.com)-->账户中心-->账户设置-->API安全。

证书附件      

描述      

pkcs12格式(apiclient_cert.p12)

包含了私钥信息的证书文件,为p12(pfx)格式,由微信支付签发给您用来标识和界定您的身份      

◆ API证书调用或安装需要使用到密码,该密码的值为微信商户号(mch_id)

需要业务按照微信文档下载证书,并发送给技术人员。

旧版证书文件为cert.zip,其中包含apiclient_cert.p12、apiclient_cert.pem、apiclient_key.pem文件。

Java程序在使用SSL证书时,需要使用KeyStore格式文件中保存的SSL证书,因此需要将P12格式的证书转换为KeyStore文件,可使用Java的keytool命令进行转换。在转换格式后,需要将密钥的初始密码进行修改,并检查KeyStore文件内容,命令如下:

# 进入服务器目录

# 上传apiclient_cert.p12文件至当前目录

# 对KeyStore文件设置的密钥库密码与密钥密码可不相同

 

 

# P12转JKS

/nemo/jdk1.8.0_141/bin/keytool -importkeystore -srckeystore apiclient_cert.p12 -destkeystore PROD-wcentpay_key.keystore -srcstoretype PKCS12 -deststoretype JKS

# 提示“Enter destination keystore password:”“Re-enter new password:”,需要两次输入密钥库密码(不会显示在屏幕),需要自己设置,与/data/tomcat/appsystems/certs/welink-frontdmz/PROD-wcentpay_config.properties配置文件中的keystore_pwd参数值保持一致

# 提示输入“Enter source keystore password”,即P12文件的密码(不会显示在屏幕),为/data/tomcat/appsystems/certs/welink-frontdmz/PROD-wcentpay_config.properties配置文件中的mchid参数值

# 成功后会出现以下提示“Entry for alias mmpaycert successfully imported.”“Import command completed:  1 entries successfully imported, 0 entries failed or cancelled”

# 以上mmpaycert为导入KeyStore文件的条目别名

 

 

# 修改KeyStore密钥密码

/nemo/jdk1.8.0_141/bin/keytool -keypasswd -keystore PROD-wcentpay_key.keystore -alias mmpaycert

# -alias参数值mmpaycert应与之前导入KeyStore文件的条目别名一致

# 提示输入“Enter keystore password:”,即之前设置的密钥库密码(不会显示在屏幕),即/data/tomcat/appsystems/certs/welink-frontdmz/PROD-wcentpay_config.properties配置文件中的keystore_pwd参数值

# 提示输入“Enter key password for <mmpaycert>”,即P12文件的密码(不会显示在屏幕),为/data/tomcat/appsystems/certs/welink-frontdmz/PROD-wcentpay_config.properties配置文件中的mchid参数值

# 提示输入“New key password for <mmpaycert>:”“Re-enter new key password for <mmpaycert>:”,需要两次输入密钥库密钥密码(不会显示在屏幕),需要自己设置,与/data/tomcat/appsystems/certs/welink-frontdmz/PROD-wcentpay_config.properties配置文件中的keystore_key_pwd参数值保持一致

# 成功后无提示

 

 

# 查看生成的KeyStore文件

/nemo/jdk1.8.0_141/bin/keytool -list -v -keystore PROD-wcentpay_key.keystore

# 提示输入“Enter keystore password:”,即之前设置的密钥库密码(不会显示在屏幕),即/data/tomcat/appsystems/certs/welink-frontdmz/PROD-wcentpay_config.properties配置文件中的keystore_pwd参数值

#

# 删除apiclient_cert.p12文件

1.5  Java对SSL客户端证书的使用

在Java中进行SSL通信时,使用SSL客户端证书示例代码如下:

1.5.1  使用Apache HttpClient

当使用Apache HttpClient时,示例代码如下:

public CloseableHttpClient genHttpsClient(String[] supportedProtocols, String[] supportedCipherSuites,
                                          KeyStore trustStore, TrustStrategy trustStrategy, X509HostnameVerifier hostnameVerifier) {

    
try (InputStream inputStream = new FileInputStream("KeyStore文件路径")) {

        SSLContext sslcontext;
        SSLConnectionSocketFactory sslsf;

        KeyStore keystoreKey = KeyStore.getInstance(
"JKS");
        keystoreKey.load(inputStream, 
"密钥库密码".toCharArray());

        sslcontext = SSLContexts
                .custom()
                .loadTrustMaterial(trustStore, trustStrategy)
                .loadKeyMaterial(keystoreKey, 
"密钥密码".toCharArray())
                .build();

        sslsf = 
new SSLConnectionSocketFactory(
                sslcontext,
                supportedProtocols,
                supportedCipherSuites,
                hostnameVerifier);

        
return HttpClients.custom().setSSLSocketFactory(sslsf).build();
    } 
catch (Exception e) {
        
logger.error("genHttpsClient error: ", e);
        
return null;
    }
}

1.5.2  使用SSLSocket或HttpsURLConnection

当使用SSLSocket或HttpsURLConnection时,均需要生成SSLSocketFactory,示例代码如下:

public SSLSocketFactory genSSLSocketFactory(String protocol) {

    try (InputStream inputStream = new FileInputStream("KeyStore文件路径")) {

  

        SSLContext context = SSLContext.getInstance(protocol);

  

        KeyStore keystore = KeyStore.getInstance("JKS");

        keystore.load(inputStream, "密钥库密码".toCharArray());

        KeyManagerFactory kmf = KeyManagerFactory.getInstance("SunX509");

        kmf.init(keystore, "密钥密码".toCharArray());

  

        context.init(new KeyManager[]{kmf.getKeyManagers()[0]}, null, new SecureRandom());

        return context.getSocketFactory();

    } catch (Exception e) {

        logger.error("genSSLSocketFactory error: ", e);

        return null;

    }

}

当使用SSLSocket时,需要调用SSLSocketFactory的createSocket方法获取SSLSocket对象。

当使用HttpsURLConnection时,需要调用HttpsURLConnection的setSSLSocketFactory,设置SSLSocketFactory对象。

1.6  问题解决

调用微信支付企业付款接口时,对微信支付证书进行处理,并在Java程序中使用SSL客户端证书后,能够正常调用接口。

2.  QQ互联appid处理

2.1  问题说明

调用QQ互联的访问用户资料接口get_user_info,文档为http://wiki.connect.qq.com/get_user_info,返回信息为“{"ret":100008,"msg":"client request's app is not existed"}”。

2.2  问题分析

已检查调用上述接口时,appid参数值上送正确。

查看创建应用文档http://wiki.connect.qq.com/__trashed-2,说明“点击“应用接口”可查看已获取的接口,使用QQ登录功能。”截图如下:

登录QQ互联平台查看对应页面,截图如下,可以看到登录对应的API为login,而不是文档中说明的get_user_info:

查看API列表文档http://wiki.connect.qq.com/api%E5%88%97%E8%A1%A8,说明访问用户资料接口不需要申请权限。

怀疑是因为当前应用对访问用户资料接口get_user_info没有权限导致,查看OpenAPI权限申请文档http://wiki.connect.qq.com/openapi%E6%9D%83%E9%99%90%E7%94%B3%E8%AF%B7,按照提示登录QQ互联平台后,未找到对应的API管理界面。

2.3  问题解决

通过腾讯企业微信联系qqconnecthelper(QQ互联及登录咨询),描述问题现象后,对方帮忙找到相应同事解决,反馈原因是因为应用信息未同步。

以上问题为对测试应用进行测试时出现,若生产应用上线时也出现类似问题,需要再联系对方进行处理。

QQ与微信账号体系深度解析:从设计哲学到实践应用 在互联网产品设计中,账号体系是构建用户身份与社交关系的核心基础设施。其设计原理通常围绕身份标识、关系链构建和数据归属展开,旨在实现用户识别、数据沉淀与生态连接。从技术价值看,一套优秀的账号系统能提升用户黏性、保障数据安全并支撑商业化拓展。典型的应用场景包括社交互动、内容消费、在线交易与工具服务。本文聚焦于腾讯旗下两大国民级应用——QQ与微信,它们堪称两套经典的“数字户籍系统”。QQ体系以**数字账号为中心**,构建了封闭的兴趣社交生态;微信体系则以**手机通讯录为基石**,形成了开放的熟人连接网络。理解二者 阅读详情

相关推荐

ASP网上购物商城系统:全面集成微信、QQ登录与支付功能

随着电子商务的蓬勃发展,ASP网上购物商城系统作为一种成熟且广泛采用的解决方案,它为在线零售业务提供了强大的技术支持和便利性。在本章中,我们将深入了解ASP商城系统的基本框架,同时对其独特的特性进行细致的解析。ASP(Application Service Provider)网上购物商城系统,通过互联网提供软件服务,允许用户无需安装特定软件,只需通过浏览器即可访问商城管理系统。它为中小企业提供了一种低成本、高效率的在线交易平台解决方案。

weixin_42524864的博客 822

微信转账到零钱2种实现方式,SDK和API对接

微信转账到零钱

tm7796的专栏 2896

php版微信支付api.mch.weixin.qq.com域名解析慢原因与解决方法

本文实例讲述了php版微信支付api.mch.weixin.qq.com域名解析慢原因与解决方法。分享给大家供大家参考,具体如下: 微信支付api.mch.weixin.qq.com域名解析慢了,导致付款时非常的慢,那么要如何来解决微信支付慢的问题呢,这里就来一起分析一下。 有朋友在阿里云主机实现微信支付逻辑时,发现api.mch.weixin.qq.com的解析实在是太慢了。 因此出现了手动修改/etc/hosts的情况,当然了,哪天微信支付要是换个机房肯定要挂。 我们的机房也有相似的同题,专门记录一下。 代码里用curl来请求微信,经常超时,这时使用wget试验: [root@01 tm

关于php微信企业付款时CA证书错误的解决方法

$ch = curl_init (); $MENU_URL = "https://api.mch.weixin.qq.com/mmpaymkttransfers/promotion/transfers"; curl_setopt ( $ch, CURLOPT_URL, $MENU_URL ); curl_setopt ( $ch, CURLOPT_CUSTOMREQUEST, "POST"

halay 9389

Fluent后台计算中Journal文件的自动化编写与优化实践

本文深入探讨了Fluent在Linux/Unix环境下进行后台计算时,Journal文件的自动化编写与优化实践。Journal文件作为Fluent后台计算的“灵魂”,是实现仿真流程自动化、保证计算可重复性与准确性的关键。文章从基础脚本骨架搭建、命令简写技巧,到进阶的参数化研究与批量计算实现,提供了详实的实战指南,帮助工程师大幅提升仿真效率。

postgres8guard的博客 756

海康VisionMaster使用学习笔记7-Group模块

光标需放在[]中选择循环索引,循环索引用于实现依次检测10个匹配框的顶点,若不订阅,模块会循环检测同一个匹配框。可以看到绿色是它的边缘点.为方便查看顶点,将边缘点设置为不可见。循环使能打开,开始值设为0,循环结束值设为快速匹配的匹配个数。回到上一层,点击Group工具的设置图标,圆拟合的点设置为Group工具输出的点集。图像输入源选择Group的图像输入源。区域选择Group的快速匹配的匹配框。添加订阅到Group内部的顶点检测。对匹配框区域进行顶点检测。用于定位匹配框中的顶点。添加快速匹配的匹配框。

风凌的博客 4176

android qq钱包接入,QQ

SDK(Android)开发前准备:商户需要具备以下条件才接入QQ钱包支付:1、申请QQ钱包商户号:商户可以在QQ钱包商户平台自助申请:https://qpay.qq.com/;2、提交APP信息审核:商户需登录QQ钱包商户平台,在“账户管理--开发配置--APP支付”一栏,提交APP支付信息审核。审核通过后,才能正常调用SDK拉起支付。SDK说明1、SDK和开发文档的“libs”目录存放“mqq...

weixin_30981569的博客 1570

【AI】使用Cursor和AI编程生成的VUE前端框架

本项目是一个基于VUE.js的前端框架,结合了登录、图形验证码、权限校验等常用功能模块。通过与Cursor AI交互生成的代码,展示了AI在编程中的潜力与效率。

清欢渡的博客 9862

QQ钱包的接入及其设计分析

版权申明:未经允许请勿转载。转载前请先联系作者(hello@yeshen.org) 最近接了一下QQ钱包的客户端。官方文档在这里 PS:官方文档其实已经很详细了。 如何接入 step 1 从服务端获取一包支付数据,构造一个PayApi的对象 step 2 做一下安装检查、版本检查、参数检查,检查完发起支付 api.checkParams() // 参数检查 IOpenApi openApi =...

yeshen.org 2587

LVGL colorwheel组件教程一(调色板)

【代码】LVGL colorwheel组件教程一(调色板)

摸鱼专家 438

华为用自研的MetaERP替换全球顶级的SAP ERP系统,其难度与风险远超一次普通的技术升级,它是一场战略级的、涉及业务筋骨的系统性工程

华为成功用自研MetaERP替换SAP系统,这是一项极具挑战的战略工程。面临四大难度:业务复杂度高(170多国业务)、数据迁移量大(20年历史数据)、技术集成复杂(重构生态系统)、人员适应周期长。同时伴随四大风险:业务中断、数据失真、成本超支、供应链协同问题。华为成功的关键在于:生存压力驱动的战略决心、强大的软件研发能力、以自身业务为试验场、分步实施策略。这一案例证明中国企业能攻克高端软件壁垒,但对大多数企业而言,核心系统替换需谨慎评估风险,建议采用渐进式替代策略。

金牌架构师 535

微信支付商户平台的apikey与公众平台的appsecret的区别

微信支付的接入流程比支付宝要烦锁,坑多,配置和调试起来都很麻烦。 昨天在配置三方商城的微信支付时,需要用到appsecret,但appsecret是微信公众平台的东西,在微信公众号相关开发时才会用到,跟商户平台的apikey完全是两个概念,所以一定要做好区分,避免混淆。 经过我的一翻折腾,各种百度和我司的开发代码,可以这么理解: appid是在公众平台注册公众号,小程序或开放平台注册应用时...

boweiqiang的博客 6630

Ollama本地大模型-个性化AI:训练自己的风格模型和数据投喂打造专属智能体验

之前我们使用Ollama下载了deepseek模型,现在我想将其训练成自己风格的模型,应该怎么做?

瑶山的博客 1782

微信分享(支付)和QQ分享

前提: Xcode12.5+下载真机调试dmg 微信SDK(WechatOpenSDK)1.8.7.1 QQ互联SDK(TencentOpenApi(Lite)_3.5.3.62) 生成app应用时需要勾选Associated Domains ,不然在后面编译的时候会报错的。(我记得xcode10是在本地就可以勾选的,但是xcode12没有这个开发) part1 -->微信朋友列表和朋友圈<-- 1)网站上上传apple-app-site-association文件,为了兼容版本

随风动,心飞翔 2091

微信小程序 “net::ERR_CONNECTION_REFUSED” 报错大揭秘与破解之道

在微信小程序开发与运行过程中,“net::ERR_CONNECTION_REFUSED” 报错是开发者常遇难题。该错误意味着小程序与服务器连接建立失败,会导致功能无法使用、数据加载异常等问题,严重影响用户体验和业务运转。本文系统剖析此错误,从网络环境不佳、服务器异常、小程序配置有误等常见触发场景入手,提供网络、服务器、配置、代码等多维度排查步骤,给出针对性解决策略,如修复网络、处理服务器故障、修正配置与代码错误,还提出开发与运维阶段的预防措施,助力开发者高效解决该报错问题。

邓邓子的博客 6134

《网络安全自学教程》- OSI七层模型分层及作用,数据封装与解封过程,数据传输过程。

OSI分哪七层,每层的作用是什么,解释数据在七层模型中是怎样传输的,封包和解封过程,数据包在每一层是怎么封装和解封的。

wangyuxiang946的博客 1万+

腾讯云、微信支付牵手雨诺共推医药流通领域互联网+落地

5月16日,腾讯云、微信支付与雨诺股份在中国·深圳腾讯大厦联合召开医药流通互联网+解决方案发布会,并正式签订战略合作协议书。

tengxy_cloud的专栏 3151

jdk-8u144-linux-x64.tar.gz.

该资源为搭建Linux系统Java环境用,资源的后缀为tar.gz格式的压缩包

UniApp前端+Java后端技术栈 解析微信支付功能的设计实现与关键实践

在移动互联网时代,支付功能已成为应用开发的核心能力之一。本文将以UniApp前端+Java后端技术栈为例,系统解析微信支付功能的设计实现与关键实践,为开发者提供从技术架构到安全防护的全景视角。微信支付功能是跨平台应用(UniApp前端 + Java后端)与微信支付系统对接的核心模块,实现用户从下单到支付完成的闭环流程。支持多种支付场景(如APP支付、小程序支付、H5支付),确保交易安全、实时性和数据一致性对于支付系统,公司一般会对其进行独立,确保服务的安全、可靠、稳定。

2501_92435603的博客 1886

SIMATIC S7-1200, S7-1500 PID 控制[手册]

SIMATIC S7-1200, S7-1500 PID 控制[手册]

汉书HE8,好用的汇编代码编写工具

汉书HE8,好用的汇编代码编写工具早期编写汇编代码所用功能强大

是谁还在坚持用QQ?腾讯回应:好冷漠...

程序员的成长之路互联网/程序员/技术/资料共享关注阅读本文大概需要 3.5分钟。来自:电脑报近日,“仍有5亿人坚持用QQ”的话题登上微博热搜,引发网友热议。根据腾讯财报,截至2023年第三季度,QQ智能终端月活跃用户数为5.58亿,仅占微信四成。但换个角度看,作为一款25岁的元老级社交应用,QQ破5亿的月活仍然是很多社交App羡慕的存在,超过了微博和知乎总和。只是在用户增量上,QQ对腾讯的贡献...

良月柒 172

ssm框架搭建

这个是一个在idea上成功跑起来的ssm框架项目,保存在这里方便以后使用直接下载

.net html5 微信支付接口,解析微信支付的实现方法(.NET版)

前段时间做了网页版微信支付,遇到很多问题,不过最终还是解决了,现在在这里记录下开发流程以及说明,给其他人一些参考。一、准备工作首先肯定得先要开通微信支付功能,之前开通微信支付需要三万的押金的,现在不需要了,所以就做了这个功能。要进行微信支付开发,需要在公众号后台和微信商户后台进行相关的设置。1、开发目录配置微信支付需要在公众号后台(微信支付=》开发配置)进行配置支付授权目录。这里授权目录需要是线上...

weixin_32459883的博客 1073

微信支付功能的设计实现与关键实践(UniApp+Java)全代码

在移动互联网时代,支付功能已成为应用开发的核心能力之一。本文将以UniApp前端+Java后端技术栈为例,系统解析微信支付功能的设计实现与关键实践,为开发者提供从技术架构到安全防护的全景视角。微信支付功能是跨平台应用(UniApp前端 + Java后端)与微信支付系统对接的核心模块,实现用户从下单到支付完成的闭环流程。支持多种支付场景(如APP支付、小程序支付、H5支付),确保交易安全、实时性和数据一致性对于支付系统,公司一般会对其进行独立,确保服务的安全、可靠、稳定。

weixin_31861055的博客 160
上一篇: Tomcat HttpServletRequest.getParameter自动URL解码分析
下一篇: Java安全之服务器安全漫谈
adrninistrat0r
博客等级 码龄18年 395粉丝 136原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值