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简洁版)相关推荐

  1. Laravel微信Native支付、微信jsapi支付

    ** 之前一直使用thinkphp做开发,偶然的一次机会运用了laravel框架并且做了一个微信扫码支付功能,发现laravel扩展功能大大超过了tp,接下来分享一下laravel的EasyWeCha ...

  2. 微信Native支付简单实现

    文章目录 微信Native支付简单实现 微信支付提供的几种对接方式 Native方式 JSAPI支付 APP支付 H5支付 小程序支付 正文开始 二维码生成 代码示例:源码才是做好的API 微信Nat ...

  3. 微信Native支付V3版本

    微信Native支付V3版本 微信支付在开发之前也是需要进行商户接入的 接入文档链接: https://pay.weixin.qq.com/index.php/core/home/login Nati ...

  4. (用微信扫的静态链接二维码)微信native支付模式官方提供的demo文件中的几个bug修正...

    原文:(用微信扫的静态链接二维码)微信native支付模式官方提供的demo文件中的几个bug修正 native支付模式一demo(用微信扫的静态链接二维码)BUG修复,一共4个BUG 1.nativ ...

  5. phpcms实现PC网站接入微信Native支付

    微信支付-PC网站接入支付 微信支付支持完成域名ICP备案的网站接入支付功能.PC网站接入支付后,可以通过JSAPI支付或Native支付,自行开发生成二维码,用户使用微信"扫一扫" ...

  6. 微信Native支付 商户端python SDK

    最近接触到了微信支付,主要做的是用django实现PC端的Native支付模式,即商户系统页面生成支付二维码,用户用"扫一扫"完成支付的模式,下面简单了解一下微信支付的开发文档. ...

  7. EasyPay(易支付)Android超简单微信支付宝支付接入

    今天我们来看看一个超简单集成微信和支付宝的支付框架EasyPay(易支付), 初学者都能一看就会一写就对的集成支付的方法. 首先还是先上gitHub链接 GitHub - kingofglory/Ea ...

  8. Android FaceBook原生广告接入教程(精简版)

    公司项目主要做海外市场,并且是资讯类的产品,所以接入一些广告公司的广告是一项不错的创收,昨天下午产品告诉我要马上接入Facebook的原生广告需求,于是下午就开始阅读Facebook广告接入的官方开发 ...

  9. 微信APP支付接入流程(含服务端,非第三方)

    此文章与简书内容同步更新https://www.jianshu.com/p/3dac1db27247 首先是微信APP的支付流程,看着很多流程,其实主要的大致分为以下几个步骤 1.客户端选择商品下单( ...

最新文章

  1. 延展信息按单制造ERP荣获2012中国软件优秀解决方案奖
  2. DSP中LOG_printf()和printf()区别
  3. python软件加密、固定机器使用_如何用Python进行最常见的加密操作?(附最新400集Python教程)...
  4. centos7标准版命令界面和图形界面相互切换
  5. ActiveRecord学习(六):总结
  6. 初中计算机ppt教案,初中计算机ppt教案.doc
  7. docker 部署nginx 使用keepalived 部署高可用
  8. 单片机拼字程序怎么做_家装行业做小程序怎么样?
  9. 【渝粤教育】国家开放大学2018年春季 8638-22T薪酬制度与薪酬管理 参考试题
  10. 分布式系统关注点(21)——构建「易测试」系统的“六脉神剑”
  11. 实验2.2编写重载函数Max1
  12. OpenCV——Haar特征
  13. 上完选修计算机绘图课心得,计算机绘图学习心得体会.doc
  14. dejavu中如何添加html文件,【dejavu Chrome插件图文介绍】dejavu Chrome插件图片教程 - 开发者插件 - Chrome插件网...
  15. 怎么样培育孩子的智慧[图]
  16. Cadillac CTS-V
  17. 写给初学者的6条网页设计安全配色指南
  18. Java 基础学习之类集框架 十 (SortedMap 接口)
  19. mstsc 后 不锁屏
  20. linux trac git,trac安装、配置、中文化、支持git(Linux,Mac)

热门文章

  1. maya arnold官方全系列下载地址
  2. 【ArcGIS】多个不连贯要素标签(lable)重复显示的解决方法
  3. 深圳联络易管理系统如何解决企业微信客户分散问题
  4. 【考研路线规划】仅供参考
  5. Bluetooth Smart技术推动可穿戴设备在2014年增长67%
  6. Facebook一天蒸发1300亿美元 腾讯也会步Facebook的后尘吗
  7. html5怎么画坐标图,新手如何5分钟学会用canvas在HTML5上画简单图形
  8. 软件测试设计--判定表法
  9. JS键盘监听事件:onkeydown、onkeypress、onkeyup
  10. Android ijkplayer的使用解析