注意:1.操作前 CertificateDownloader.jar 和 apiclient_key.pem 文件在同一个目录。并且在这个目录中进入cmd命令工具 。cmd命令工具中显示的目录就是CertificateDownloader.jar所在目录 。例如:
文件-CertificateDownloader.jar 路径:D:\WXCertUtil\cert\CertificateDownloader.jar文件-apiclient_key.pem 路径:D:\WXCertUtil\cert\apiclient_key.pemcmd中路径:D:\WXCertUtil\cert>
注意:2.命令中 -o file 只是个文件夹,命令执行后会在下面路径中生成一个微信支付平台证书文件 。把这个证书也复制到你的平台中,和上面三个证书放在一个位置方便管理 。例如:D:\WXCertUtil\cert\file\wechatpay_3A4AF69999DF01F39BB08C21C1C29B6AA17C074N.pem
至此,所有微信支付v3的准备工作已就绪,接下来,使用微信官方SDK开发接入微信支付v3 。Java平台接入微信支付v3接口更多平台看官方文档
微信支付 APIv3 Java SDK微信支付 APIv3 Java SDK,里面有详细说明github 地址:https://github.com/wechatpay-apiv3/wechatpay-java注意:开发可以根据这里的说明操作就好了,下面我写一下可能大家不理解的点 。
com.github.wechatpay-apiv3:wechatpay-java代码中的配置-例如:
/** 商户号 */public static String merchantId = "1901174254";/** 商户API私钥路径 */public static String privateKeyPath = "apiclient_key.pem";/** 商户证书序列号 */public static String merchantSerialNumber = "54776TTTF8F77EXXX3641FAB5F940FII11C65347";/** 微信支付平台证书路径 */public static String wechatPayCertificatePath = "wechatpay_3A4AF69999DF01F39BB08C21C1C29B6AA17C074N.pem";/** 微信支付 APIv3 密钥 *//** 如果微信支付平台证书,已经下载好了,apiV3Key 就不需要了 */public static String apiV3Key = "B3AQsC17C6UFooIRCAaXRUvaq8PInN60";
如果微信支付平台证书,已经下载好了,github里这个代码就不用看了 。package com.wechat.pay.java.service;import com.wechat.pay.java.core.Config;import com.wechat.pay.java.core.RSAConfig;import com.wechat.pay.java.service.certificate.CertificateService;import java.nio.charset.StandardCharsets;import java.security.cert.X509Certificate;import java.util.List;/** 下载微信支付平台证书为例 */public class QuickStart {/** 商户号 */public static String merchantId = "";/** 商户API私钥路径 */public static String privateKeyPath = "";/** 商户证书序列号 */public static String merchantSerialNumber = "";/** 微信支付平台证书路径 */public static String wechatPayCertificatePath = "";/** 微信支付 APIv3 密钥 */public static String apiV3Key = "";public static void main(String[] args) {Config config =new RSAConfig.Builder().merchantId(merchantId).privateKeyFromPath(privateKeyPath).merchantSerialNumber(merchantSerialNumber).wechatPayCertificatesFromPath(wechatPayCertificatePath).build();CertificateService certificateService = new CertificateService.Builder().config(config).build();List<X509Certificate> certificates =certificateService.downloadCertificate(apiV3Key.getBytes(StandardCharsets.UTF_8));}}
支付的第一步:微信支付前需要拿到预支付id(prepayId),才能支付,所有支付的第一步是预支付import com.wechat.pay.java.core.Config;import com.wechat.pay.java.core.RSAConfig;import com.wechat.pay.java.service.payments.jsapi.JsapiService;import com.wechat.pay.java.service.payments.jsapi.model.Amount;import com.wechat.pay.java.service.payments.jsapi.model.Payer;import com.wechat.pay.java.service.payments.jsapi.model.PrepayRequest;import com.wechat.pay.java.service.payments.jsapi.model.PrepayResponse;public class JsapiExample {public static void main(String[] args) {Config config =new RSAConfig.Builder().merchantId(merchantId).privateKeyFromPath(privateKeyPath).merchantSerialNumber(merchantSerialNumber).wechatPayCertificatesFromPath(wechatPayCertificatePath).build();JsapiService service = new JsapiService.Builder().config(config).build();PrepayRequest request = new PrepayRequest();Amount amount = new Amount();amount.setTotal(100);request.setAmount(amount);request.setAppid("wxa9d9651ae******");request.setMchid("190000****");request.setDescription("测试商品标题");request.setNotifyUrl("https://notify_url");request.setOutTradeNo("out_trade_no_001");Payer payer = new Payer();payer.setOpenid("oLTPCuN5a-nBD4rAL_fa********");request.setPayer(payer);PrepayResponse response = service.prepay(request);System.out.println(response.getPrepayId());}}
经验总结扩展阅读
- 朋友结婚的微信祝福语
- 2022支付宝蚂蚁庄园8月28日答案
- 蜘蛛的丝是从哪里吐出来的?
- 睡觉时磨牙是因为肚子里有虫吗?
- 支付宝蚂蚁庄园8月29答案
- 十一月的微信好友祝福语
- 万圣节的微信祝福文案
- 十一月的微信祝福句子
- 2022立冬节气的微信祝福语
- 新人结婚的微信祝福文案