【畅购商城】微信支付模块之微信支付二维码

简介: 【畅购商城】微信支付模块之微信支付二维码

流程分析


69cb2e5538b742078a177daa8c8648fc.png


微信支付概述

账号申请

步骤一:注册公众号,根据自身主体类型注册对应的公众号

只能申请服务号,订阅号没有办法申请支付

https://kf.qq.com/product/weixinmp.html#hid=87

步骤二:微信认证,公众号认证后才可申请微信支付

6531f8e3e8cd4d349b93877a94c241aa.png


步骤三:申请微信支付

登录公众平台,点击左侧菜单【微信支付】,开始填写资料等待审核,审核时间为1-5个工作日内。


382cdb62e113406a97e1e77e311845d4.png


步骤四:商户账号审核


审核通过之后会往您填写的邮箱里发一封邮件是关于微信支付商户的帐号信息,同时您对公账户上也会收到几毛钱的汇款,需要您查看下具体的金额然后登录微信支付商户平台进行验证


步骤五:在线签署协议


本协议为线上电子协议,签署后方可进行交易及资金结算,签署完立即生效。


步骤六:完成上述步骤,你可以得到调用API用到的账号和密钥


appid:微信公众账号或开放平台APP的唯一标识


mch_id:商户号


key:商户密钥

92d32dd40b4548f99c952c8a75d9facc.png


已有账号

以下为“传智播客”的微信支付账号


appid: wx8397f8696b538317


mch_id:1473426802


key: T6m9iK73b0kn9g5v426MKfHQH7X8rKwb


支付接口和SDK(了解)

微信支付帮助文档地址:https://pay.weixin.qq.com/wiki/doc/api/index.html

手动调用,常见的接口(了解)



手动调用整体思路:


根据接口要求,组装请求参数


以XML的方式,通过POST请求,发送给支付接口


微信支付接口,以XML方式给予响应


实际开发中,我们很少直接使用“接口操作”。通常情况下使用微信提供的SDK(工具类)


com.github.wxpay.sdk.WXPay类就是核心操作封装类。


方法名

说明

microPay

刷卡支付

unifiedOrder

统一下单

orderQuery

查询订单

reverse

撤销订单

closeOrder

关闭订单

refund

申请退款

refundQuery

查询退款

downloadBill

下载对账单

report

交易保障

shortUrl

转换短链接

authCodeToOpenid

授权码查询openid


入门案例

统一下单

在测试项目完成操作:test-wxpay

步骤一:添加依赖


<dependency>
  <groupId>com.github.wxpay</groupId>
  <artifactId>wxpay-sdk</artifactId>
  <version>0.0.3</version>
</dependency>

步骤二:编写配置类,实现WXPayConfig接口


97186bbd720d428bb01e53fbd29dab72.png

package com.czxy.test.pay;
import com.github.wxpay.sdk.WXPayConfig;
import java.io.InputStream;
/**
 * Created by liangtong.
 */
public class MyWXPayConfig implements WXPayConfig {
    /**
     * 应用ID:微信开放平台审核通过的应用APPID
     * @return
     */
    @Override
    public String getAppID() {
        return "wx8397f8696b538317";
    }
    /**
     * 商户号:微信支付分配的商户号
     * @return
     */
    @Override
    public String getMchID() {
        return "1473426802";
    }
    /**
     * 秘钥,用于生成签名(sign)
     * @return
     */
    @Override
    public String getKey() {
        return "T6m9iK73b0kn9g5v426MKfHQH7X8rKwb";
    }
    @Override
    public InputStream getCertStream() {
        return null;
    }
    /**
     * 连接超时时间,单位是毫秒
     * @return
     */
    @Override
    public int getHttpConnectTimeoutMs() {
        return 0;
    }
    /**
     * 读超时时间,单位是毫秒
     * @return
     */
    @Override
    public int getHttpReadTimeoutMs() {
        return 0;
    }
}

步骤三:测试类


package com.czxy.test.pay;
import com.github.wxpay.sdk.WXPay;
import java.util.HashMap;
import java.util.Map;
/**
 * Created by liangtong.
 */
public class TestPayUnifiedOrder {
    public static void main(String[] args) throws Exception {
        WXPay wxPay = new WXPay(new MyWXPayConfig());
        Map<String,String> map=new HashMap();
        map.put("body","畅购");                          //商品描述
        map.put("out_trade_no","20200401001");         //订单号
        map.put("total_fee","1");                       //金额
        map.put("spbill_create_ip","127.0.0.1");      //终端IP
        map.put("notify_url","http://www.baidu.com");//回调地址
        //JSAPI--JSAPI支付(或小程序支付)、NATIVE--Native支付、APP--app支付,MWEB--H5支付
        map.put("trade_type","NATIVE");              //交易类型
        Map<String, String> result = wxPay.unifiedOrder( map );
        System.out.println("支付结果:" + result.get("code_url"));
        System.out.println("返回状态码:" + result.get("return_code"));
        System.out.println("返回信息:" + result.get("return_msg"));
        System.out.println("业务结果:" + result.get("result_code"));
        System.out.println(result);
    }
}

步骤四:结果

支付结果:weixin://wxpay/bizpayurl?pr=Mfqcl2R

返回状态码:SUCCESS

返回信息:OK

业务结果:SUCCESS


查询订单

package com.czxy.test.pay;
import com.github.wxpay.sdk.WXPay;
import java.util.HashMap;
import java.util.Map;
/**
 * Created by liangtong.
 */
public class TestPayOrderQuery {
    public static void main(String[] args) throws Exception {
        WXPay wxPay = new WXPay(new MyWXPayConfig());
        Map<String,String> map=new HashMap();
        map.put("out_trade_no","20200401001");         //订单号
        Map<String, String> result = wxPay.orderQuery( map );
        System.out.println("返回状态码:" + result.get("return_code"));
        System.out.println("返回信息:" + result.get("return_msg"));
        System.out.println("业务结果:" + result.get("result_code"));
        System.out.println("交易状态:" + result.get("trade_state"));
        /*
            SUCCESS—支付成功
            REFUND—转入退款
            NOTPAY—未支付
            CLOSED—已关闭
            REVOKED—已撤销(刷卡支付)
            USERPAYING--用户支付中
            PAYERROR--支付失败
         */
        System.out.println("交易状态:" + result.get("trade_state"));
        System.out.println("交易状态描述:" + result.get("trade_state_desc"));
        System.out.println(result);
    }
}

JS版二维码:QRCode.js

概述

QRCode.js 是一个用于生成二维码的 JavaScript 库。主要是通过获取 DOM 的标签,再通过 HTML5

Canvas 绘制而成,不依赖任何库。


入门案例

拷贝 qrcode.min.js

61e88f9eb53b4cc8a753129f630e4ee8.png


编写wxpay.html


<html lang="en">
<head>
  <title>二维码入门案例</title>
</head>
<body>
  <div id='qrcode'></div>
</body>
</html>
<!-- 代码需要 -->
<script src="/js/qrcode.min.js" ></script>
<script type="text/javascript">
  let qrcode = new QRCode(document.getElementById("qrcode"), {
    width : 200,
    height : 200
  });
  qrcode.makeCode("weixin://wxpay/bizpayurl?pr=Mfqcl2R");
</script>

http://localhost:3000/wxpay.html

相关文章
|
28天前
|
算法 小程序 Java
java制作海报三:获取微信二维码详情,并改变大小,合成到海报(另一张图片)上
这篇文章介绍了如何使用Java获取微信小程序的二维码,并将其调整大小后合成到海报(另一张图片)上。
37 0
|
3月前
|
小程序 前端开发 JavaScript
微信小程序实现微信支付(代码和注释很详细)
微信小程序实现微信支付(代码和注释很详细)
|
4月前
|
开发框架 前端开发 JavaScript
在微信框架模块中,基于Vue&Element前端的事件和内容的管理
在微信框架模块中,基于Vue&Element前端的事件和内容的管理
|
4月前
|
开发框架 移动开发 前端开发
在微信框架模块中,基于Vue&Element前端的后台管理功能介绍
在微信框架模块中,基于Vue&Element前端的后台管理功能介绍
|
3月前
|
前端开发 JavaScript API
微信公众号项目,实现微信支付(具体流程和参数)
微信公众号项目,实现微信支付(具体流程和参数)
|
4月前
|
安全 API Windows
支付系统13------支付系统的资料在技术库里的在线支付当中,怎样获取微信平台证书那?怎样获取微信平台证书那?第一步打开我们的微信支付平台的文档中心
支付系统13------支付系统的资料在技术库里的在线支付当中,怎样获取微信平台证书那?怎样获取微信平台证书那?第一步打开我们的微信支付平台的文档中心
|
4月前
|
存储
支付系统36-------订单表优化,添加payment_type字段,无论是微信支付还是支付宝支付都放到 t_order_info表中了,payment_type用来判断支付宝还是微信支付的
支付系统36-------订单表优化,添加payment_type字段,无论是微信支付还是支付宝支付都放到 t_order_info表中了,payment_type用来判断支付宝还是微信支付的
|
4月前
|
开发框架 前端开发 JavaScript
在微信框架模块中,基于Vue&Element前端,通过动态构建投票选项,实现单选、复选的投票操作
在微信框架模块中,基于Vue&Element前端,通过动态构建投票选项,实现单选、复选的投票操作
|
4月前
|
前端开发 小程序
【微信小程序-原生开发】实用教程20 - 生成海报(实战范例为生成活动海报,内含生成指定页面的小程序二维码,保存图片到手机,canvas 系列教程)
【微信小程序-原生开发】实用教程20 - 生成海报(实战范例为生成活动海报,内含生成指定页面的小程序二维码,保存图片到手机,canvas 系列教程)
406 0
|
4月前
|
JavaScript
支付系统---微信支付23-数据绑定和事件,使用Vue调试要添加扩展,F12与console平级就出现了Vue,在支付资料,微信支付,04资料,工具里
支付系统---微信支付23-数据绑定和事件,使用Vue调试要添加扩展,F12与console平级就出现了Vue,在支付资料,微信支付,04资料,工具里

热门文章

最新文章