ssm微信公众号支付demo-以及配置过程

一、准备资料

  • 微信公众号服务号
  • 商户平台账号开通了微信支付
  • 公网域名(或内网穿透)
  • 服务器(或内网穿透)
  • 商户APPID
  • 商户API密钥APPSECRET
  • 商户号MCHID

二、公众号和商户平台配置

1、公众号配置

公众号登录后 -> 公众号设置 -> 功能设置:JS接口安全域名需要填写准备使用微信支付的域名
这里写图片描述
添加或修改
这里写图片描述
这里有4点要注意的:
1.需要填写域名或路径,不支持ip地址,端口号,短链域名,一般直接用域名就行了
2.域名需要经过备案
3.将其中下载的txt文件放在服务器域名映射的根目录,假如域名是:abc.de.com,那就要确保:abc.de.com/MP_verify_nT4jEtfHhaE7IceO.txt能访问到该txt文件。
公众号的设置就完成了

2、商户平台配置

首先进入:账户中心 -> 操作证书,在电脑安装了证书之后进入:API安全

  • 下载证书,这个证书是用于退款等操作的
  • API密钥设置,api密钥设置不能特意设置,得随意设置,一般设置有意义的字符串都不能支付,需要去生成随机32位随机码,地址:随机码

这里写图片描述

接着继续进入:产品中心 -> 开发配置 -> 支付配置 -> 公众号支付 -> 支付授权目录
这里需要注意的是:
   授权目录一定要填写到调起支付页面的上一级目录,加入支付页是:abc.de.com/demo/pay.jsp,那么需要填写:abc.de.com/demo/
这里写图片描述
商户平台的配置也完成了,接下来就是编码了

三、编写demo

先定义一部分常量:
WxConst.java

package com.demo.common;

/**
 * @author xyd
 * @version V1.0
 * @Package com.demo.common
 * @Description:
 * @date 2018/8/8 10:45
 */
public class WxConst {
   
    /**
     * acesstoken
     */
    public static String ACCESSTOKEN = "";
    /**
     * 公众号appId
     */
    public static String APPID = "";

    /**
     * 公众号secret
     */
    public static String SECRET = "";

    /**
     * 公众号jsapi ticket
     */
    public static String JSAPITICKET = "";

    /**
     * 签名类型
     */
    public enum SignType {
        MD5, HMACSHA256
    }

    /**
     * 商户支付密码
     */
    public static String PAYAPISECRET = "";

    /**
     * 商户号
     */
    public static String MCHID = "";

    /**
     * 商户密钥
     */
    public static String MCHKEY = "";

    /**
     * 签名字段名称
     */
    public static final String FIELD_SIGN = "sign";


    /**
     * 服务商退款证书路径
     */
    public static String CERTIFICATE_PATH = "/usr/local/cert/apiclient_cert.p12";

    /**
     * 下单地址
     */
    public static final String WXPAY_UNIFIEDORDER_GATEWAY = "https://api.mch.weixin.qq.com/pay/unifiedorder";
    /**
     * 退款地址
     */
    public static final String WXPAY_REFUND_GATEWAY = "https://api.mch.weixin.qq.com/secapi/pay/refund";

    /**
     * 下单回调地址
     */
    public static final String ORDER_NOTIFYURL = "";
    /**
     * 回复微信的消息
     */
    public static final String NOTIFY_RESPONSE_BODY = "<xml>\n" +
            "  <return_code><![CDATA[SUCCESS]]></return_code>\n" +
            "  <return_msg><![CDATA[OK]]></return_msg>\n" +
            "</xml>";

    /**
     * 失败
     */
    public static final String FAIL = "FAIL";
    /**
     * 成功
     */
    public static final String SUCCESS = "SUCCESS";
}

1、动态获取ACCESSTOKEN和JSAPITICKET

参考微信支付开发文档可知,需要先获取accesstoken和jsapiticket
JS-SDK文档:JS-SDK
微信统一下单文档:统一下单

首先注入依赖:
pom.xml

<?xml version="1.0" encoding="UTF-8"?>

<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
  <modelVersion>4.0.0</modelVersion>

  <groupId>com.demo</groupId>
  <artifactId>wechatpaydemo</artifactId>
  <version>1.0-SNAPSHOT</version>
  <packaging>war</packaging>

  <name>wechatpaydemo Maven Webapp</name>
  <!-- FIXME change it to the project's website -->
  <url>http://www.example.com</url>

  <properties>
    <!-- spring版本号 -->
    <spring.version>4.3.3.RELEASE</spring.version>
    <!-- mybatis版本号 -->
    <mybatis.version>3.3.1</mybatis.version>
    <!-- log4j日志文件管理包版本 -->
    <slf4j.version>1.7.7</slf4j.version>

    <log4j.version>1.2.17</log4j.version>
    <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
    <maven.compiler.source>1.8</maven.compiler.source>
    <maven.compiler.target>1.8</maven.compiler.target>
  </properties>

  <dependencies>
    <!-- spring核心包 -->
    <dependency>
      <groupId>org.springframework</groupId>
      <artifactId>spring-core</artifactId>
      <version>${spring.version}</version>
    </dependency>

    <dependency>
      <groupId>org.springframework</groupId>
      <artifactId>spring-beans</artifactId>
      <version>${spring.version}</version>
    </dependency>

    <dependency>
      <groupId>org.springframework</groupId>
      <artifactId>spring-web</artifactId>
      <version>${spring.version}</version>
    </dependency>

    <dependency>
      <groupId>org.springframework</groupId>
      <artifactId>spring-aspects</artifactId>
      <version>${spring.version}</version>
    </dependency>


    <dependency>
      <groupId>org.springframework</groupId>
      <artifactId>spring-context</artifactId>
      <version>${spring.version}</version>
    </dependency>


    <dependency>
      <groupId>org.springframework</groupId>
      <artifactId>spring-tx</artifactId>
      <version>${spring.version}</version>
    </dependency>

    <dependency>
      <groupId>org.springframework</groupId>
      <artifactId>spring-jdbc</artifactId>
      <version>${spring.version}</version>
    </dependency>

    <dependency>
      <groupId>org.springframework</groupId>
      <artifactId>spring-webmvc</artifactId>
      <version>${spring.version}</version>
    </dependency>
    <dependency>
      <groupId>org.springframework</groupId>
      <artifactId>spring-aop</artifactId>
      <version>${spring.version}</version>
    </dependency>

    <dependency>
      <groupId>org.springframework</groupId>
      <artifactId>spring-context-support</artifactId>
      <version>${spring.version}</version>
    </dependency>

    <dependency>
      <groupId>org.springframework</groupId>
      <artifactId>spring-test</artifactId>
      <version>${spring.version}</version>
    </dependency>

    <!-- 日志文件管理包 -->
    <!-- log start -->
    <dependency>
      <groupId>log4j</groupId>
      <artifactId>log4j</artifactId>
      <version>${log4j.version}</version>
    </dependency>
    <dependency>
      <groupId>org.slf4j</groupId>
      <artifactId>slf4j-api</artifactId>
      <version>${slf4j.version}</version>
    </dependency>
    <dependency>
      <groupId>org.slf4j</groupId>
      <artifactId>slf4j-log4j12</artifactId>
      <version>${slf4j.version}</version>
    </dependency>

    <!-- json包-->
    <!-- https://mvnrepository.com/artifact/com.google.code.gson/gson -->

    <dependency>
      <groupId>com.fasterxml.jackson.core</groupId>
      <artifactId>jackson-annotations</artifactId>
      <version>2.5.0</version>
    </dependency>

    
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值