阿里P8教你java微信公众号支付示例详解

本文实例为大家分享了java微信公众号支付示例代码,供大家参考,具体内容如下

开始之前,先准备好:appid、商家号、商户密匙。

工具类:

MD5Util.java


`package` `com.yiexpress.core.utils.wechat;`

`import` `java.security.MessageDigest;`

`/**`

`* MD5工具类`

`*/`

`public` `class` `MD5Util {
   `

`public` `final` `static` `String MD5(String s) {
   `

`char` `hexDigits[]={
   ``'0'``,``'1'``,``'2'``,``'3'``,``'4'``,``'5'``,``'6'``,``'7'``,``'8'``,``'9'``,``'A'``,``'B'``,``'C'``,``'D'``,``'E'``,``'F'``};`

`try` `{
   `

`byte``[] btInput = s.getBytes();`

`MessageDigest mdInst = MessageDigest.getInstance(``"MD5"``);`

`mdInst.update(btInput);`

`byte``[] md = mdInst.digest();`

`int` `j = md.length;`

`char` `str[] =` `new` `char``[j *` `2``];`

`int` `k =` `0``;`

`for` `(``int` `i =` `0``; i < j; i++) {
   `

`byte` `byte0 = md[i];`

`str[k++] = hexDigits[byte0 >>>` `4` `&` `0xf``];`

`str[k++] = hexDigits[byte0 &` `0xf``];`

`}`

`String md5Str =` `new` `String(str);`

`return` `md5Str;`

`}` `catch` `(Exception e) {
   `

`e.printStackTrace();`

`return` `null``;`

`}`

`}`

`}`

SapUtils.java

`package` `com.yiexpress.core.utils;`

`import` `java.lang.reflect.*;`

`import` `java.util.List;`

`import` `java.io.IOException;`

`import` `java.io.StringWriter;`

`import` `org.dom4j.Document;`

`import` `org.dom4j.DocumentHelper;`

`import` `org.dom4j.Element;`

`import` `org.dom4j.io.OutputFormat;`

`import` `org.dom4j.io.XMLWriter;`

`import` `org.slf4j.Logger;`

`import` `org.slf4j.LoggerFactory;`

`import` `org.springframework.util.StringUtils;`

`public` `class` `SapUtils {
   `

`private` `static` `final` `Logger logger = LoggerFactory.getLogger(SapUtils.``class``);`

`/** 根据反射对javabean转成xml文件的格式`

`* 以类名为第一标签,所有属性作为第二节点,并放入对应的值,如果属性为空 就不放入该熟悉`

`* @param dto 传入的对象`

`* @param operationName 操作名称`

`* @return`

`*/`

`public` `static` `String formatToXml(Object dto,String operationName){
   `

`logger.info(``"解析当前类{}为指定的xml文档格式的数据"``,dto.getClass().getName());`

`logger.info(``"当前的同步方法是,{}"``,operationName);`

`String result =` `null``;`

`Field fields[]=dto.getClass().getDeclaredFields();``//dto 是实体类名称`

`//DocumentHelper提供了创建Document对象的方法`

`Document document = DocumentHelper.createDocument();`

`//添加节点信息`

`String className=dto.getClass().getName();`

`// 操作的名称`

`Element rootElement = document.addElement(operationName);`

`try` `{
   `

`Field.setAccessible(fields,` `true``);`

`for` `(``int` `i =` `0``; i < fields.length; i++) {
   `

`//添加节点信息`

`if``(!StringUtils.isEmpty(fields[i].get(dto))){
   `

`Class<?> type = fields[i].getType();`

`// 如果是list`

`if``(type == List.``class``){
   `

`String listName = fields[i].getName();`

`createElement(rootElement, fields[i].get(dto),listName);`

`}`

`else``{
   `

`Element element = rootElement.addElement(fields[i].getName());`

`element.setText((String) fields[i].get(dto));`

`}`

`}`

`}`

`// 设置XML文档格式`

`OutputFormat outputFormat = OutputFormat.createPrettyPrint();`

`// 设置XML编码方式,即是用指定的编码方式保存XML文档到字符串(String),这里也可以指定为GBK或是ISO8859-1`

`outputFormat.setEncoding(``"UTF-8"``);`

`// outputFormat.setSuppressDeclaration(true); //是否生产xml头`

`outputFormat.setIndent(``true``);` `//设置是否缩进`

`outputFormat.setIndent(``"  "``);` `//以四个空格方式实现缩进`

`outputFormat.setNewlines(``true``);` `//设置是否换行`

`StringWriter stringWriter =``null``;`

`// Writer fileWriter =null;`

`// xmlWriter是用来把XML文档写入字符串的(工具)`

`XMLWriter xmlWriter =` `null``;`

`try` `{
   `

`// stringWriter字符串是用来保存XML文档的`

`stringWriter =` `new` `StringWriter();`

`// fileWriter = new FileWriter("D:\\modu11le.xml");`

`// xmlWriter是用来把XML文档写入字符串的(工具)`

`xmlWriter =` `new` `XMLWriter(stringWriter, outputFormat);`

`// 把创建好的XML文档写入字符串`

`xmlWriter.write(document);`

`//fileWriter.write(stringWriter.toString());`

`result=stringWriter.toString();`

`}` `catch` `(IOException e) {
   `

`logger.error(``"写入数据失败"``);`

`throw` `new` `RuntimeException(``"写入数据失败"``+e);`

`}``finally``{
   `

`try` `{
   `

`if``(xmlWriter!=``null``){
   `

`xmlWriter.flush();`

`xmlWriter.close();`

`}`

`/*           if(fileWriter!=null){`

`fileWriter.flush();`

`fileWriter.close();`

`}*/`

`} catch (IOException e) {
   `

`logger.error("关闭输出流出错");`

`throw new RuntimeException("关闭输出流出错"+e);`

`}`

`}`

`} catch (Exception e) {
   `

`logger.error("添加xml的节点失败"+e);`

`}`

`logger.error("转换xml结束");`

`return result;`

`}`

`/**`

`* 添加类中的list`

`* @param element`

`* @param object`

`* @param name`

`* @return`

`* @throws IllegalArgumentException`

`* @throws IllegalAccessException`

`*/`

`public` `static` `Element createElement(Element element ,Object object,String name )` `throws` `IllegalArgumentException, IllegalAccessException{
   `

`Element nameElement = element.addElement(name);`

`List info = (List)object;`

`for``(``int` `j=` `0``;j<info.size();j++){
   `

`// 添加row的标签`

`Element rowElement = nameElement.addElement(``"row"``);`

`// 添加 对象的熟悉`

`Field fields[]=info.get(j).getClass().getDeclaredFields();``//dto 是实体类名称`

`Field.setAccessible(fields,` `true``);`

`for` `(``int` `i =` `0``; i < fields.length; i++) {
   `

`//添加节点信息`

`if``(!StringUtils.isEmpty(fields[i].get(info.get(j)))){
   `

`Element childElement = rowElement.addElement(fields[i].getName());`

`childElement.setText((String) fields[i].get(info.get(j)));`

`}`

`}`

`}`

`return` `element;`

`}`

`}`

UnifiedOrderRequest.java


`package` `com.yiexpress.core.utils.wechat;`

`public` `class` `UnifiedOrderRequest {
   `

`private` `String appid;``// 公众账号ID`

`private` `String mch_id;``//商户号 `

`private` `String device_info;` `//设备号  否`

`private` `String nonce_str;``//随机字符串  `

`private` `String sign;``//签名  `

`private` `String sign_type;``//签名类型 `

`private` `String body;``//商品描述   `

`private` `String detail;``//商品详情 `

`private` `String attach;``//附加数据 `

`private` `String out_trade_no;``//商户订单号 `

`private` `String fee_type;``//标价币种  `

`private` `String total_fee;``//标价金额`

`private` `String spbill_create_ip;``//终端IP `

`private` `String time_start;``//交易起始时间 `

`private` `String time_expire;``//交易结束时间`

`private` `String goods_tag;``//订单优惠标记 `

`private` `String notify_url;``//通知地址  `

`private` `String trade_type;``//交易类型 `

`private` `String product_id;``//商品ID`

`private` `String limit_pay;``//指定支付方式`

`private` `String openid;``//用户标识 `

`public` `String getAppid() {
   `

`return` `appid;`

`}`

`public` `void` `setAppid(String appid) {
   `

`this``.appid = appid;`

`}`

`public` `String getMch_id() {
   `

`return` `mch_id;`

`}`

`public` `void` `setMch_id(String mch_id) {
   `

`this``.mch_id = mch_id;`

`}`

`public` `String getDevice_info() {
   `

`return` `device_info;`

`}`

`public` `void` `setDevice_info(String device_info) {
   `

`this``.device_info = device_info;`

`}`

`public` `String getNonce_str() {
   `

`return` `nonce_str;`

`}`

`public` `void` `setNonce_str(String nonce_str) {
   `

`this``.nonce_str = nonce_str;`

`}`

`public` `String getSign() {
   `

`return` `sign;`

`}`

`public` `void` `setSign(String sign) {
   `

`this``.sign = sign;`

`}`

`public` `String getSign_type() {
   `

`return` `sign_type;`

`}`

`public` `void` `setSign_type(String sign_type) {
   `

`this``.sign_type = sign_type;`

`}`

`public` `String getBody() {
   `

`return` `body;`

`}`

`public` `void` `setBody(String body) {
   `

`this``.body = body;`

`}`

`public` `String getDetail() {
   `

`return` `detail;`

`}`

`public` `void` `setDetail(String detail) {
   `

`this``.detail = detail;`

`}`

`public` `String getAttach() {
   `

`return` `attach;`

`}`

`public` `void` `setAttach(String attach) {
   `

`this``.attach = attach;`

`}`

`public` `String getOut_trade_no() {
   `

`return` `out_trade_no;`

`}`

`public` `void` `setOut_trade_no(String out_trade_no) {
   `

`this``.out_trade_no = out_trade_no;`

`}`

`public` `String getFee_type() {
   `

`return` `fee_type;`

`}`

`public` `void` `setFee_type(String fee_type) {
   `

`this``.fee_type = fee_type;`

`}`

`public` `String getTotal_fee() {
   `

`return` `total_fee;`

`}`

`public` `void` `setTotal_fee(String total_fee) {
   `

`this``.total_fee = total_fee;`

`}`

`public` `String getSpbill_create_ip() {
   `

`return` `spbill_create_ip;`

`}`

`public` `void` `setSpbill_create_ip(String spbill_create_ip) {
   `

`this``.spbill_create_ip = spbill_create_ip;`

`}`

`public` `String getTime_start() {
   `

`return` `time_start;`

`}`

`public` `void` `setTime_start(String time_start) {
   `

`this``.time_start = time_start;`

`}`

`public` `String getTime_expire() {
   `

`return` `time_expire;`

`}`

`public` `void` `setTime_expire(String time_expire) {
   `

`this``.time_expire = time_expire;`

`}`

`public` `String getGoods_tag() {
   `

`return` `goods_tag;`

`}`

`public` `void` `setGoods_tag(String goods_tag) {
   `

`this``.goods_tag = goods_tag;`

`}`

`public` `String getNotify_url() {
   `

`return` `notify_url;`

`}`

`public` `void` `setNotify_url(String notify_url) {
   `

`this``.notify_url = notify_url;`

`}`

`public` `String getTrade_type() {
   `

`return` `trade_type;`

`}`

`public` `void` `setTrade_type(String trade_type) {
   `

`this``.trade_type = trade_type;`

`}`

`public` `String getProduct_id() {
   `

`return` `product_id;`

`}`

`public` `void` `setProduct_id(String product_id) {
   `

`this``.product_id = product_id;`

`}`

`public` `String getLimit_pay() {
   `

`return` `limit_pay;`

`}`

`public` `void` `setLimit_pay(String limit_pay) {
   `

`this``.limit_pay = limit_pay;`

`}`

`public` `String getOpenid() {
   `

`return` `openid;`

`}`

`public` `void` `setOpenid(String openid) {
   `

`this``.openid = openid;`

`}`

`}`

UnifiedOrderRespose.java

`package` `com.yiexpress.core.utils.wechat;`

`public` `class` `UnifiedOrderRespose {
   `

`private` `String return_code;` `//返回状态码`

`private` `String return_msg;` `//返回信息`

`private` `String appid;` `//公众账号ID`

`private` `String mch_id;` `//商户号`

`private` `String device_info;` `//设备号`

`private` `String nonce_str;` `//随机字符串`

`private` `String
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值