微信Native支付接入教程(2022简洁版)
PC网站接入支付
微信支付支持完成域名ICP备案的网站接入支付功能。PC网站接入支付后,可以通过JSAPI支付或Native支付,自行开发生成二维码,用户使用微信“扫一扫”来完成支付。本次讲解Native支付的快捷接入教程。
接入文档网站:PC网站 - 微信支付接入指引 - 微信支付商户平台
一、简介
Native支付是指商户系统按微信支付协议生成支付二维码,用户再用微信“扫一扫”完成支付的模式。
应用场景
Native支付适用于PC网站、实体店单品或订单、媒体广告支付等场景
用户扫描商户展示在各种场景的二维码进行支付,具体操作流程如下:
步骤一 商户根据微信支付的规则,为不同商品生成不同的二维码(如图3.1),展示在各种场景,用于用户扫描购买。
步骤二 用户使用微信“扫一扫”(如图3.2)扫描二维码后,获取商品支付信息,引导用户完成支付(如图3.3)。
步骤三 用户确认支付,输入支付密码(如图3.4)。
步骤四 支付完成后会提示用户支付成功(如图3.5),商户后台得到支付成功的通知,然后进行发货处理。
二、接入微信支付前需要准备的参数
appid 微信公众号、小程序、app或开放平台的唯一标识;mchid 微信支付分配的商户收款账号;mchSerialNo:商户证书序列号; privateKey 私钥文件
apiKey3 交易过程生成签名的apiv3密钥;
三、java版本代码实现步骤
1、初始化httpClient
public CloseableHttpClient httpClient(){String keyPath = WChantPay.keyPath;String mchid = WChantPay.mchid;String mchSerialNo = WChantPay.mchSerialNo;String apiKey3 = WChantPay.apiKey3;try{// 加载商户私钥(privateKey:私钥字符串)//示例:私钥存储在文件PrivateKey merchantPrivateKey = PemUtil.loadPrivateKey(new FileInputStream("C:\\Users\\Administrator\\Desktop\\1626431593_20220528_cert\\apiclient_key.pem"));//PrivateKey merchantPrivateKey = PemUtil// .loadPrivateKey(new ByteArrayInputStream(keyPath.getBytes("utf-8")));// 加载平台证书(mchId:商户号,mchSerialNo:商户证书序列号,apiV3Key:V3密钥)AutoUpdateCertificatesVerifier verifier = new AutoUpdateCertificatesVerifier(new WechatPay2Credentials(mchid, new PrivateKeySigner(mchSerialNo, merchantPrivateKey)),apiKey3.getBytes("utf-8"));WechatPayHttpClientBuilder builder = WechatPayHttpClientBuilder.create().withMerchant(mchid, mchSerialNo, merchantPrivateKey).withValidator(new WechatPay2Validator(verifier));
// 初始化httpClientCloseableHttpClient httpC = builder.build();return httpC;} catch (UnsupportedEncodingException e) {e.printStackTrace();}catch (IOException e) {e.printStackTrace();}return null;}
2、Native下单
public String CreateOrder() throws Exception{HttpPost httpPost = new HttpPost("https://api.mch.weixin.qq.com/v3/pay/transactions/native");// 请求body参数ByteArrayOutputStream bos = new ByteArrayOutputStream();ObjectMapper objectMapper = new ObjectMapper();ObjectNode rootNode = objectMapper.createObjectNode();//商户idrootNode.put("mchid", WChantPay.mchid)//小程序id.put("appid", WChantPay.appid)//描述.put("description", "wudehua")//微信通知回调地址.put("notify_url", "http://119.29.28.29/")//商户订单id.put("out_trade_no", "12345671");//如果前端直接传的是分此处不需要再转//int round = Math.round(wxpayDetail.getTotal() * 100);rootNode.putObject("amount")//支付金额,单位是(分).put("total", 10);objectMapper.writeValue(bos, rootNode);httpPost.addHeader("Accept", "application/json");httpPost.addHeader("Content-type","application/json; charset=utf-8");httpPost.setEntity(new StringEntity(bos.toString("UTF-8")));//完成签名并执行请求CloseableHttpResponse response = httpClient().execute(httpPost);try {int statusCode = response.getStatusLine().getStatusCode();if (statusCode == 200) { //处理成功System.out.println("success,return body = " + EntityUtils.toString(response.getEntity()));return EntityUtils.toString(response.getEntity());} else if (statusCode == 204) { //处理成功,无返回BodySystem.out.println("success");return null;} else {System.out.println("failed,resp code = " + statusCode+ ",return body = " + EntityUtils.toString(response.getEntity()));throw new IOException("request failed");}} finally {response.close();}}
3、【客户端】生成支付二维码
这一步在客户端实现,可以利用qrcode.js进行实现二维码的生成;
4、查询订单
public void QueryOrder() throws Exception {//请求URLURIBuilder uriBuilder = new URIBuilder("https://api.mch.weixin.qq.com/v3/pay/transactions/id/4200000745202011093730578574");uriBuilder.setParameter("mchid", mchId);//完成签名并执行请求HttpGet httpGet = new HttpGet(uriBuilder.build());httpGet.addHeader("Accept", "application/json");CloseableHttpResponse response = httpClient().execute(httpGet);try {int statusCode = response.getStatusLine().getStatusCode();if (statusCode == 200) {System.out.println("success,return body = " + EntityUtils.toString(response.getEntity()));} else if (statusCode == 204) {System.out.println("success");} else {System.out.println("failed,resp code = " + statusCode+ ",return body = " + EntityUtils.toString(response.getEntity()));throw new IOException("request failed");}} finally {response.close();}
}
5、关闭订单
public void CloseOrder() throws Exception {//请求URLHttpPost httpPost = new HttpPost("https://api.mch.weixin.qq.com/v3/pay/transactions/out-trade-no/sdkphp12345678920201028112429/close");//请求body参数String reqdata ="{\"mchid\": \""+mchId+"\"}";StringEntity entity = new StringEntity(reqdata,"utf-8");entity.setContentType("application/json");httpPost.setEntity(entity);httpPost.setHeader("Accept", "application/json");//完成签名并执行请求CloseableHttpResponse response = httpClient().execute(httpPost);try {int statusCode = response.getStatusLine().getStatusCode();if (statusCode == 200) {System.out.println("success,return body = " + EntityUtils.toString(response.getEntity()));} else if (statusCode == 204) {System.out.println("success");} else {System.out.println("failed,resp code = " + statusCode+ ",return body = " + EntityUtils.toString(response.getEntity()));throw new IOException("request failed");}} finally {response.close();}}
简单单五步搞定微信支付,不懂的可以评论区留言,我会一一回复。
喜欢我的文章作品的话,记得点赞加收藏哈!,我会定时更新的。。
微信Native支付接入教程(2022简洁版)相关推荐
- Laravel微信Native支付、微信jsapi支付
** 之前一直使用thinkphp做开发,偶然的一次机会运用了laravel框架并且做了一个微信扫码支付功能,发现laravel扩展功能大大超过了tp,接下来分享一下laravel的EasyWeCha ...
- 微信Native支付简单实现
文章目录 微信Native支付简单实现 微信支付提供的几种对接方式 Native方式 JSAPI支付 APP支付 H5支付 小程序支付 正文开始 二维码生成 代码示例:源码才是做好的API 微信Nat ...
- 微信Native支付V3版本
微信Native支付V3版本 微信支付在开发之前也是需要进行商户接入的 接入文档链接: https://pay.weixin.qq.com/index.php/core/home/login Nati ...
- (用微信扫的静态链接二维码)微信native支付模式官方提供的demo文件中的几个bug修正...
原文:(用微信扫的静态链接二维码)微信native支付模式官方提供的demo文件中的几个bug修正 native支付模式一demo(用微信扫的静态链接二维码)BUG修复,一共4个BUG 1.nativ ...
- phpcms实现PC网站接入微信Native支付
微信支付-PC网站接入支付 微信支付支持完成域名ICP备案的网站接入支付功能.PC网站接入支付后,可以通过JSAPI支付或Native支付,自行开发生成二维码,用户使用微信"扫一扫" ...
- 微信Native支付 商户端python SDK
最近接触到了微信支付,主要做的是用django实现PC端的Native支付模式,即商户系统页面生成支付二维码,用户用"扫一扫"完成支付的模式,下面简单了解一下微信支付的开发文档. ...
- EasyPay(易支付)Android超简单微信支付宝支付接入
今天我们来看看一个超简单集成微信和支付宝的支付框架EasyPay(易支付), 初学者都能一看就会一写就对的集成支付的方法. 首先还是先上gitHub链接 GitHub - kingofglory/Ea ...
- Android FaceBook原生广告接入教程(精简版)
公司项目主要做海外市场,并且是资讯类的产品,所以接入一些广告公司的广告是一项不错的创收,昨天下午产品告诉我要马上接入Facebook的原生广告需求,于是下午就开始阅读Facebook广告接入的官方开发 ...
- 微信APP支付接入流程(含服务端,非第三方)
此文章与简书内容同步更新https://www.jianshu.com/p/3dac1db27247 首先是微信APP的支付流程,看着很多流程,其实主要的大致分为以下几个步骤 1.客户端选择商品下单( ...
最新文章
- 延展信息按单制造ERP荣获2012中国软件优秀解决方案奖
- DSP中LOG_printf()和printf()区别
- python软件加密、固定机器使用_如何用Python进行最常见的加密操作?(附最新400集Python教程)...
- centos7标准版命令界面和图形界面相互切换
- ActiveRecord学习(六):总结
- 初中计算机ppt教案,初中计算机ppt教案.doc
- docker 部署nginx 使用keepalived 部署高可用
- 单片机拼字程序怎么做_家装行业做小程序怎么样?
- 【渝粤教育】国家开放大学2018年春季 8638-22T薪酬制度与薪酬管理 参考试题
- 分布式系统关注点(21)——构建「易测试」系统的“六脉神剑”
- 实验2.2编写重载函数Max1
- OpenCV——Haar特征
- 上完选修计算机绘图课心得,计算机绘图学习心得体会.doc
- dejavu中如何添加html文件,【dejavu Chrome插件图文介绍】dejavu Chrome插件图片教程 - 开发者插件 - Chrome插件网...
- 怎么样培育孩子的智慧[图]
- Cadillac CTS-V
- 写给初学者的6条网页设计安全配色指南
- Java 基础学习之类集框架 十 (SortedMap 接口)
- mstsc 后 不锁屏
- linux trac git,trac安装、配置、中文化、支持git(Linux,Mac)