准备工作 :

有微信商户平台 :

mchid:微信商户id

appid:商户appid

商户证书:商户可登录微信商户平台,在【账户中心】->【API安全】目录下载证书

证书文件名 :apiclient_key.pem

证书序列号:具体查看微信商户平台

支付证书key:(注意,这里不是下载的那个证书)需要进行一次处理

下载微信配置好的jar包 路径 https://github.com/wechatpay-apiv3/CertificateDownloader/releases

(网络不好可以通过云盘下载)链接: https://pan.baidu.com/s/1BwJ3DnQ9nBd39L5WPOXj3g?pwd=xqk9 提取码: xqk9 复制这段内容后打开百度网盘手机App,操作更方便哦

下载好后在和他同一目录下执行(为了方便)

$ java -jar CertificateDownloader-1.1.jar -f apiclient_key.pem -k 证书解密密钥 -m 商户号-o 证书输出地址 -s 证书号

通过上面的命令能获得 wechatPayCertificates微信支付平台证书列表

开始工作:

引入maven

     <dependency><groupId>com.github.wechatpay-apiv3</groupId><artifactId>wechatpay-apache-httpclient</artifactId><version>0.4.7</version></dependency>

编写代码:

   /*** 获取私钥。** @param filename 私钥文件路径  (required)* @return 私钥对象*/public static PrivateKey getPrivateKey(String filename) throws Exception {String content = new String(Files.readAllBytes(Paths.get(filename)), "utf-8");try {String privateKey = content.replace("-----BEGIN PRIVATE KEY-----", "").replace("-----END PRIVATE KEY-----", "").replaceAll("\\s+", "");KeyFactory kf = KeyFactory.getInstance("RSA");return kf.generatePrivate(new PKCS8EncodedKeySpec(Base64.getDecoder().decode(privateKey)));} catch (NoSuchAlgorithmException e) {throw new RuntimeException("当前Java环境不支持RSA", e);} catch (InvalidKeySpecException e) {throw new RuntimeException("无效的密钥格式");}}
import java.io.ByteArrayInputStream;
import java.io.ByteArrayOutputStream;
import java.nio.charset.StandardCharsets;
import java.nio.file.Files;
import java.nio.file.Paths;import com.fasterxml.jackson.databind.ObjectMapper;
import com.fasterxml.jackson.databind.node.ObjectNode;
import com.wechat.pay.contrib.apache.httpclient.WechatPayHttpClientBuilder;
import com.wechat.pay.contrib.apache.httpclient.util.PemUtil;
import okhttp3.HttpUrl;
import org.apache.http.client.methods.CloseableHttpResponse;
import org.apache.http.client.methods.HttpPost;
import org.apache.http.entity.StringEntity;
import org.apache.http.impl.client.CloseableHttpClient;
import org.apache.http.util.EntityUtils;import java.security.KeyFactory;
import java.security.NoSuchAlgorithmException;
import java.security.PrivateKey;
import java.security.Signature;
import java.security.cert.X509Certificate;
import java.security.spec.InvalidKeySpecException;
import java.security.spec.PKCS8EncodedKeySpec;
import java.util.ArrayList;
import java.util.Base64;
import java.util.List;public void pay() throws Exception {HttpPost httpPost = new HttpPost("https://api.mch.weixin.qq.com/v3/pay/transactions/app");httpPost.addHeader("Accept", "application/json");httpPost.addHeader("Content-type","application/json; charset=utf-8");ByteArrayOutputStream bos = new ByteArrayOutputStream();ObjectMapper objectMapper = new ObjectMapper();ObjectNode rootNode = objectMapper.createObjectNode();rootNode.put("mchid",${mchid}).put("appid", ${填写准备的}).put("description", "Image形象店-深圳腾大-QQ公仔").put("notify_url", "https://www.weixin.qq.com/wxpay/pay.php").put("out_trade_no", ${随机串32位});rootNode.putObject("amount").put("total", ${金额});objectMapper.writeValue(bos, rootNode);httpPost.setEntity(new StringEntity(bos.toString("UTF-8"), "UTF-8"));List< X509Certificate > certificates = new ArrayList<>();String certificate = ${微信支付平台证书列表内容(不是路径)};X509Certificate wechatPayCertificate = PemUtil.loadCertificate(new ByteArrayInputStream(certificate.getBytes(StandardCharsets.UTF_8)));certificates.add(wechatPayCertificate);WechatPayHttpClientBuilder builder = WechatPayHttpClientBuilder.create().withMerchant(${mchid}, ${证书序列号},getPrivateKey(${证书路径+文件名})).withWechatPay(certificates);// 通过WechatPayHttpClientBuilder构造的HttpClient,会自动的处理签名和验签CloseableHttpClient httpClient = builder.build();// 后面跟使用Apache HttpClient一样CloseableHttpResponse response = httpClient.execute(httpPost);String bodyAsString = EntityUtils.toString(response.getEntity());System.out.println(bodyAsString);}

执行替换好参数执行pay方法即可

微信实现APP下单接口(微信支付开发API V3接口调用)相关推荐

  1. 微信支付API v3接口使用应用篇

    目录 前言 版本 应用 基础配置 1.申请商户API证书 2.设置接口密钥 3.下载平台证书 接口实测 微信支付API官方客户端 1.客户端 2.支付调起参数签名 3.回调通知 参考资料 前言 最近新 ...

  2. 个人微信开发API协议接口

    个人微信开发API协议接口对比 本文对比目前市面上用于微信个人号的所有API协议,主要包括 web版微信协议, ipad协议 , pc微信协议/mac协议 , hook pc版微信 , hook 安卓 ...

  3. 个人微信开发API协议接口大全

    个人微信开发API协议接口大全 目前市面上用于微信个人号的所有API协议,主要包括 web版微信协议, ipad协议 , pc微信协议/mac协议 , hook pc版微信 , hook 安卓或者io ...

  4. 微信和支付宝H5扫码支付开发记录

    微信和支付宝H5扫码支付开发记录 微信支付 支付宝支付 简单前端实现的一下方法,服务端方法未记录: 微信支付 微信流程步骤简介 1.获取用户code 2.拉起微信支付 支付宝支付 支付宝流程步骤简介: ...

  5. 打造个人版微信小程序(1)——本地开发api接口调用

    如果觉得这篇文章对您有所启发,欢迎关注我的公众号,我会尽可能积极和大家交流,谢谢.   从今天开始,开始打造一个个人版的微信小程序,尽早上线,方便大家使用以及技术讨论.这套小程序包括前台.后台.数据库 ...

  6. java支付花呗分期接口教程,支付宝花呗分期接口有什么用?附借口用法介绍

    您可能感兴趣的话题: 支付宝 核心提示:支付宝花呗分期接口有什么用,近期支付宝也开始推出了小程序. 支付宝小程序开通花呗分期接口 支付宝花呗分期接口有什么用,近期支付宝也开始推出了小程序. 据悉,花呗 ...

  7. fmc接口定义_Xilinx开发板FMC接口-Samtec连接器LPC HPC

    Xilinx 开发板 FMC 接口 -Samtec 连接器 LPC HPC 一. FMC 标准 FMC 标准描述了一个通用的模块,它是以一定范围的应用,环境和市场为目标的. 该 标准由包括 FPGA ...

  8. Java中的微信支付:API V3对微信服务器响应进行签名验证3

    前言 牢记一句话:公钥加密,私钥解密:私钥加签,公钥验签. 微信支付V3版本前两篇分别讲了如何对请求做签名和如何获取并刷新微信平台公钥,本篇将继续展开如何对微信支付响应结果的验签. 2. 为什么要对响 ...

  9. App对接工行e支付开发流程

    前提 客户发来的信息包括 ①sdk使用说明 ②sdk ③完整demo 不要慌,仔细阅读sdk使用说明,打开demo运行一下 从运行结果看,首先需要选择一个测试环境地址,然后再在页面中获取接口数据.签名 ...

最新文章

  1. linux增加epel源,yum安装nignx,脚本安装mysql服务端,shell脚本监控网站页面
  2. 【报错笔记】Navicat连接数据库显示2003错误,无法连接到数据库
  3. SAP IBASE的创建实现逻辑
  4. python gpu编程_Python笔记_第四篇_高阶编程_进程、线程、协程_5.GPU加速
  5. 在Visual Studio中使用任何C++编译器
  6. MR程序的几种提交运行模式
  7. Unity VR开发出语音识别功能
  8. stm32按键矩阵代码_STM32学习日志——电容触摸按键实验(20-06-27)
  9. 解决Win7下JMF读取摄像头错误
  10. 按键精灵定位坐标循环_[按键精灵教程]带你了解多点找色、多点比色
  11. 蓝屏代码查询及代码分析
  12. 鸿鹄论坛oracle资料,鸿鹄论坛_HCNA-Storage (H13-611)题库 v4.0.pdf
  13. Laravel 之 Redis 命令大全
  14. html5全栈工程师招聘,蓝鸥HTML5全栈工程师 高薪就业的利器
  15. Android画一条虚线
  16. USACO 2018 February Contest, Silver-Rest Stops
  17. 数学七大基本思想方法
  18. progress中的数据库访问
  19. 1103. Integer Factorization (30)
  20. 用JSP构建三层管理信息系统

热门文章

  1. C语言CRC校验码计算与校验
  2. java计算机毕业设计后勤管理系统(附源码、数据库)
  3. Cocos2d-x + Android + Eclipse + Windows 7
  4. WebRTC学习笔记五 SDP(Session Description Protocol)
  5. CAN通信----(创芯科技)CAN分析仪使用----CANTest安装和驱动安装
  6. 登录图片验证(vue3)
  7. Vm14 中安装mac时出现如图情况是怎么回事?
  8. 什么是深度学习以及它是如何工作的?
  9. [转]Mysql在大型网站的应用架构演变
  10. Android V1签名与校验原理分析(全网最全最详细)