服务的基类
public class BaseService{

//API的地址
private String apiURL;//发请求的HTTPS请求器
private IServiceRequest serviceRequest;public BaseService(String api) throws ClassNotFoundException, IllegalAccessException, InstantiationException {apiURL = api;Class c = Class.forName(Configure.HttpsRequestClassName);serviceRequest = (IServiceRequest) c.newInstance();
}protected String sendPost(Object xmlObj) throws UnrecoverableKeyException, IOException, NoSuchAlgorithmException, KeyStoreException, KeyManagementException {return serviceRequest.sendPost(apiURL,xmlObj);
}/*** 供商户想自定义自己的HTTP请求器用* @param request 实现了IserviceRequest接口的HttpsRequest*/
public void setServiceRequest(IServiceRequest request){serviceRequest = request;
}

}

查询服务
public class ScanPayQueryService extends BaseService{

public ScanPayQueryService() throws IllegalAccessException, InstantiationException, ClassNotFoundException {super(Configure.PAY_QUERY_API);
}/*** 请求支付查询服务* @param scanPayQueryReqData 这个数据对象里面包含了API要求提交的各种数据字段* @return API返回的XML数据* @throws Exception*/
public String request(ScanPayQueryReqData scanPayQueryReqData) throws Exception {//--------------------------------------------------------------------//发送HTTPS的Post请求到API地址//--------------------------------------------------------------------String responseString = sendPost(scanPayQueryReqData);return responseString;
}

}
订单数据下载服务
public class DownloadBillService extends BaseService{

public DownloadBillService() throws IllegalAccessException, InstantiationException, ClassNotFoundException {super(Configure.DOWNLOAD_BILL_API);
}//ALL,返回当日所有订单信息,默认值
public static final String BILL_TYPE_ALL = "ALL";//SUCCESS,返回当日成功支付的订单
public static final String BILL_TYPE_SUCCESS = "SUCCESS";//REFUND,返回当日退款订单
public static final String BILL_TYPE_REFUND = "REFUND";//REVOKED,已撤销的订单
public static final String BILL_TYPE_REVOKE = "REVOKE";/*** 请求对账单下载服务* @param downloadBillReqData 这个数据对象里面包含了API要求提交的各种数据字段* @return API返回的XML数据* @throws Exception*/
public String request(DownloadBillReqData downloadBillReqData) throws Exception {//--------------------------------------------------------------------//发送HTTPS的Post请求到API地址//--------------------------------------------------------------------String responseString = sendPost(downloadBillReqData);return responseString;
}

}

package com.tencent;

import com.tencent.business.DownloadBillBusiness;
import com.tencent.business.RefundBusiness;
import com.tencent.business.RefundQueryBusiness;
import com.tencent.business.ScanPayBusiness;
import com.tencent.common.Configure;
import com.tencent.protocol.downloadbill_protocol.DownloadBillReqData;
import com.tencent.protocol.pay_protocol.ScanPayReqData;
import com.tencent.protocol.pay_query_protocol.ScanPayQueryReqData;
import com.tencent.protocol.refund_protocol.RefundReqData;
import com.tencent.protocol.refund_query_protocol.RefundQueryReqData;
import com.tencent.protocol.reverse_protocol.ReverseReqData;
import com.tencent.service.*;

/**
* SDK总入口 微信支付的总入口
*/
public class WXPay {

/*** 初始化SDK依赖的几个关键配置* @param key 签名算法需要用到的秘钥* @param appID 公众账号ID* @param mchID 商户ID* @param sdbMchID 子商户ID,受理模式必填* @param certLocalPath HTTP证书在服务器中的路径,用来加载证书用* @param certPassword HTTP证书的密码,默认等于MCHID*/
public static void initSDKConfiguration(String key,String appID,String mchID,String sdbMchID,String certLocalPath,String certPassword){Configure.setKey(key);Configure.setAppID(appID);Configure.setMchID(mchID);Configure.setSubMchID(sdbMchID);Configure.setCertLocalPath(certLocalPath);Configure.setCertPassword(certPassword);
}/*** 请求支付服务* @param scanPayReqData 这个数据对象里面包含了API要求提交的各种数据字段* @return API返回的数据* @throws Exception*/
public static String requestScanPayService(ScanPayReqData scanPayReqData) throws Exception{return new ScanPayService().request(scanPayReqData);
}/*** 请求支付查询服务* @param scanPayQueryReqData 这个数据对象里面包含了API要求提交的各种数据字段* @return API返回的XML数据* @throws Exception*/
public static String requestScanPayQueryService(ScanPayQueryReqData scanPayQueryReqData) throws Exception{return new ScanPayQueryService().request(scanPayQueryReqData);
}/*** 请求退款服务* @param refundReqData 这个数据对象里面包含了API要求提交的各种数据字段* @return API返回的XML数据* @throws Exception*/
public static String requestRefundService(RefundReqData refundReqData) throws Exception{return new RefundService().request(refundReqData);
}/*** 请求退款查询服务* @param refundQueryReqData 这个数据对象里面包含了API要求提交的各种数据字段* @return API返回的XML数据* @throws Exception*/
public static String requestRefundQueryService(RefundQueryReqData refundQueryReqData) throws Exception{return new RefundQueryService().request(refundQueryReqData);
}/*** 请求撤销服务* @param reverseReqData 这个数据对象里面包含了API要求提交的各种数据字段* @return API返回的XML数据* @throws Exception*/
public static String requestReverseService(ReverseReqData reverseReqData) throws Exception{return new ReverseService().request(reverseReqData);
}/*** 请求对账单下载服务* @param downloadBillReqData 这个数据对象里面包含了API要求提交的各种数据字段* @return API返回的XML数据* @throws Exception*/
public static String requestDownloadBillService(DownloadBillReqData downloadBillReqData) throws Exception{return new DownloadBillService().request(downloadBillReqData);
}/*** 直接执行被扫支付业务逻辑(包含最佳实践流程)* @param scanPayReqData 这个数据对象里面包含了API要求提交的各种数据字段* @param resultListener 商户需要自己监听被扫支付业务逻辑可能触发的各种分支事件,并做好合理的响应处理* @throws Exception*/
public static void doScanPayBusiness(ScanPayReqData scanPayReqData, ScanPayBusiness.ResultListener resultListener) throws Exception {new ScanPayBusiness().run(scanPayReqData, resultListener);
}/*** 调用退款业务逻辑* @param refundReqData 这个数据对象里面包含了API要求提交的各种数据字段* @param resultListener 业务逻辑可能走到的结果分支,需要商户处理* @throws Exception*/
public static void doRefundBusiness(RefundReqData refundReqData, RefundBusiness.ResultListener resultListener) throws Exception {new RefundBusiness().run(refundReqData,resultListener);
}/*** 运行退款查询的业务逻辑* @param refundQueryReqData 这个数据对象里面包含了API要求提交的各种数据字段* @param resultListener 商户需要自己监听被扫支付业务逻辑可能触发的各种分支事件,并做好合理的响应处理* @throws Exception*/
public static void doRefundQueryBusiness(RefundQueryReqData refundQueryReqData,RefundQueryBusiness.ResultListener resultListener) throws Exception {new RefundQueryBusiness().run(refundQueryReqData,resultListener);
}/*** 请求对账单下载服务* @param downloadBillReqData 这个数据对象里面包含了API要求提交的各种数据字段* @param resultListener 商户需要自己监听被扫支付业务逻辑可能触发的各种分支事件,并做好合理的响应处理* @return API返回的XML数据* @throws Exception*/
public static void doDownloadBillBusiness(DownloadBillReqData downloadBillReqData,DownloadBillBusiness.ResultListener resultListener) throws Exception {new DownloadBillBusiness().run(downloadBillReqData,resultListener);
}

}

微信u的订单查询功能
ScanPayQueryReqData scanPayQueryReqData = new ScanPayQueryReqData(“400204200120170503996345”, null);
String result = WXPay.requestScanPayQueryService(scanPayQueryReqData);
ScanPayQueryResData scanPayQueryResData = (ScanPayQueryResData) Util.getObjectFromXML(result, ScanPayQueryResData.class);

        System.out.println(scanPayQueryResData.getOut_trade_no());System.out.println(scanPayQueryResData.getTotal_fee());

微信支付成功的账单下载并保存到数据库
DownloadBillReqData downloadBillReqData = new DownloadBillReqData(null, “20170403”, “SUCCESS”);
String parseContent = WXPay.requestDownloadBillService(downloadBillReqData);
String[] split = parseContent.split(“\n”);
List batchSql = new ArrayList();
StringBuffer sb = new StringBuffer();
for(int i=1;i

java 微信支付功能相关推荐

  1. 微信小程序-JAVA实现微信支付功能(微信支付2.0)

    微信小程序-JAVA实现微信支付功能(微信支付2.0) 一.前言 本博客主要介绍JAVA后台与微信小程序(UNI-APP或者原生微信小程序)的微信支付的实现,如果是APP或者H5的开发暂时不支持,具体 ...

  2. 微信公众号开发,微信支付功能开发(网页JSAPI调用)

    1.微信支付的流程 如下三张手机截图,我们在微信网页端看到的支付,表面上看到的是 "点击支付按钮 - 弹出支付框 - 支付成功后出现提示页面",实际上的核心处理过程是: 点击支付按 ...

  3. 【javaWeb微服务架构项目——乐优商城day15】——会调用订单系统接口,实现订单结算功能,实现微信支付功能

    0.学习目标 会调用订单系统接口 实现订单结算功能 实现微信支付功能 源码笔记及资料: 链接:https://pan.baidu.com/s/1_opfL63P1pzH3rzLnbFiNw 提取码:v ...

  4. php android 微信支付,Android_Android实现微信支付功能,开发Android APP微信支付功能, - phpStudy...

    Android实现微信支付功能 开发Android APP微信支付功能,需要完成三个步骤:第一步生成预支付订单.第二步生成微信支付参数.第三步调起微信APP支付.除了需要审核通过的APP应用外,还需要 ...

  5. springboot 微信小程序 对接微信支付功能(完整版)

    微信小程序对接微信支付功能 业务流程时序图 JAVA版 1. 项目架构 2. pom.xml配置文件 3. 小程序账号参数配置类 4.JAVA 通用代码 4.1 工具类 4.1.1 IdGen (id ...

  6. java 微信支付以及退款拿过来直接使用

    该功能我在程自己在学习时候尝试搭建的,可能会有很多问题,在这里只是做一下记录.直接上代码. 如果想要源码楼主或者加群725395843    这里是技术讨论群.供大家讨论. JAVA开发微信支付-公众 ...

  7. Java微信支付——公众号支付JSAPI

    一.获取微信支付四大参数 首先获取两个账号: 1.微信公众号已认证的服务号,并且需要开通微信支付功能: 微信公众平台:1)账户.密码 :  2)公众APPID : 3)APPSECEPT 2.微信商户 ...

  8. 微信小程序中嵌套html_微信小程序:web-view嵌套H5实现微信支付功能解决方案及填坑...

    ab7117c7d4947210c39e126a01d23ede.jpg 最近一个多月加班比较严重,偶尔休息一天也是在补睡眠+陪家人,比较长时间没有来进行总结记录了.今天不加班,开始为这段时间做的东西 ...

  9. java微信支付代码_Java微信支付之服务号支付代码示例

    Java微信支付之服务号支付实现,网上的java微信支付sdk和Demo基本上是水的,看着头疼所以我决心自己开始写Java微信支付之公众号支付,多的不说见下面源码,为了方便使用我分别用了两个Servl ...

最新文章

  1. Java 使用 Redis
  2. DHCP服务器的搭建
  3. Kingbase金仓更改表空间
  4. 通过堡垒机rdp 黑屏_[调优]彻底解决RDP连接过程缓慢的问题
  5. git学习之通俗易懂篇(一)
  6. 解决 IntelliJ IDEA 中 .propertise 文件保存后中文乱码
  7. VHDL编码器和译码器的设计
  8. QT 中QPainter绘制文字、图片
  9. python os.path.exists判断文件或文件夹是否存在
  10. 5新建没有头文件_开垦绿茵版图迎来“真金白银”保障,新建足球场地可获财政补贴...
  11. uniapp动态修改样式_掌握Photoshop图层样式技术
  12. 美团联合创始人王慧文卸任摩拜高管职位
  13. 虚拟函数-1、静态联编与动态联编,引入虚函数
  14. CodeForces-28C-Bath Queue-概率DP[ ICPC2016大连热身D]
  15. emacs linux 教程,Emacs基础入门教程(三)使用 Emacs 必知必会
  16. opensips脚本转换
  17. 微信隐藏功能系列:微信怎么恢复聊天记录?3步完成修复
  18. 粘贴板管理 android,复制粘贴神器(剪贴板管理)app
  19. tornado 异步
  20. 信息学奥赛一本通 1098:质因数分解 | 1957:【12NOIP普及组】质因数分解 | OpenJudge NOI 1.5 43 | 洛谷 P1075 [NOIP2012 普及组] 质因数分解

热门文章

  1. Blockly 各种类原型链字典
  2. vue实现一个鼠标滑动预览视频封面组件(精灵图版本)
  3. 硬件电气接线需要注意的问题汇总
  4. 鱼c笔记——Python 的 GUI 编程(一):接触 Tkinter
  5. amd插帧技术如何开启_AMD显卡用户有福了,安装这款软件就能享受60帧的丝滑体验...
  6. Python实现2ASK,2FSK和2PSK调制与解调
  7. 反激变换器DCM模式增益推导
  8. RPO攻击方式的探究
  9. Java项目:局域网内实现中控(远程开关机)
  10. 模电学习6. 常用的三极管放大电路