`
sunbin
  • 浏览: 353073 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
社区版块
存档分类
最新评论

微信支付接口

 
阅读更多

 

1、pom.xml
<!-- https://mvnrepository.com/artifact/com.github.binarywang/weixin-java-pay -->
		<dependency>
		    <groupId>com.github.binarywang</groupId>
		    <artifactId>weixin-java-pay</artifactId>
		    <version>3.3.0</version>
		</dependency>


2、代码
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.context.annotation.Bean;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.RestController;

import com.github.binarywang.wxpay.bean.notify.WxPayNotifyResponse;
import com.github.binarywang.wxpay.bean.notify.WxPayOrderNotifyResult;
import com.github.binarywang.wxpay.bean.notify.WxScanPayNotifyResult;
import com.github.binarywang.wxpay.bean.request.WxPayDownloadBillRequest;
import com.github.binarywang.wxpay.bean.request.WxPayOrderCloseRequest;
import com.github.binarywang.wxpay.bean.request.WxPayOrderQueryRequest;
import com.github.binarywang.wxpay.bean.request.WxPayUnifiedOrderRequest;
import com.github.binarywang.wxpay.bean.result.WxPayBillResult;
import com.github.binarywang.wxpay.bean.result.WxPayOrderCloseResult;
import com.github.binarywang.wxpay.bean.result.WxPayOrderQueryResult;
import com.github.binarywang.wxpay.config.WxPayConfig;
import com.github.binarywang.wxpay.exception.WxPayException;
import com.github.binarywang.wxpay.service.WxPayService;
import com.github.binarywang.wxpay.service.impl.WxPayServiceImpl;

/**
 * weichat pay controller
 
 *
 */
@RestController
@RequestMapping("/wxpay")
public class WxPayController {

	@Autowired
	private WxPayService wxService;

	@Bean
	public WxPayService getWxService() {
		WxPayServiceImpl wxPayServiceImpl = new WxPayServiceImpl();
		WxPayConfig config = new WxPayConfig();
		config.setAppId("wx0000000000000");
		config.setMchId("00000000000");
		config.setNotifyUrl("www.itbye.com");
		config.setSignType("MD5");
		config.setTradeType("NATIVE");
		config.setMchKey("ns00000000000000000000000000");
		wxPayServiceImpl.setConfig(config);
		return wxPayServiceImpl;
	}

	/**
	 * <pre>
	 * 查询订单(详见https://pay.weixin.qq.com/wiki/doc/api/jsapi.php?chapter=9_2)
	 * 该接口提供所有微信支付订单的查询,商户可以通过查询订单接口主动查询订单状态,完成下一步的业务逻辑。
	 * 需要调用查询接口的情况:
	 * ◆ 当商户后台、网络、服务器等出现异常,商户系统最终未接收到支付通知;
	 * ◆ 调用支付接口后,返回系统错误或未知交易状态情况;
	 * ◆ 调用被扫支付API,返回USERPAYING的状态;
	 * ◆ 调用关单或撤销接口API之前,需确认支付状态;
	 * 接口地址:https://api.mch.weixin.qq.com/pay/orderquery
	 * </pre>
	 *
	 * @param transactionId 微信订单号
	 * @param outTradeNo    商户系统内部的订单号,当没提供transactionId时需要传这个。
	 */

	@RequestMapping("/queryOrder1")
	public WxPayOrderQueryResult queryOrder(@RequestParam(required = false) String transactionId,
			@RequestParam(required = false) String outTradeNo) throws WxPayException {
		return this.wxService.queryOrder(transactionId, outTradeNo);
	}

	@RequestMapping("/queryOrder2")
	public WxPayOrderQueryResult queryOrder(@RequestBody WxPayOrderQueryRequest wxPayOrderQueryRequest)
			throws WxPayException {
		return this.wxService.queryOrder(wxPayOrderQueryRequest);
	}

	/**
	 * <pre>
	 * 关闭订单
	 * 应用场景
	 * 以下情况需要调用关单接口:
	 * 1. 商户订单支付失败需要生成新单号重新发起支付,要对原订单号调用关单,避免重复支付;
	 * 2. 系统下单后,用户支付超时,系统退出不再受理,避免用户继续,请调用关单接口。
	 * 注意:订单生成后不能马上调用关单接口,最短调用时间间隔为5分钟。
	 * 接口地址:https://api.mch.weixin.qq.com/pay/closeorder
	 * 是否需要证书:   不需要。
	 * </pre>
	 *
	 * @param outTradeNo 商户系统内部的订单号
	 */
//  @ApiOperation(value = "关闭订单")
	@RequestMapping("/closeOrder/{outTradeNo}")
	public WxPayOrderCloseResult closeOrder(@PathVariable String outTradeNo) throws WxPayException {
		return this.wxService.closeOrder(outTradeNo);
	}

//  @ApiOperation(value = "关闭订单")
	@RequestMapping("/closeOrder")
	public WxPayOrderCloseResult closeOrder(@RequestBody WxPayOrderCloseRequest wxPayOrderCloseRequest)
			throws WxPayException {
		return this.wxService.closeOrder(wxPayOrderCloseRequest);
	}

	/**
	 * 调用统一下单接口,并组装生成支付所需参数对象.
	 *http://localhost:8080/jeesite/wxpay/createOrder?body=mm&outTradeNo=11112&totalFee=1&spbillCreateIp=127.0.0.1&productId=asdfas
	 * @param request 统一下单请求参数
	 * @param <T>     请使用{@link com.github.binarywang.wxpay.bean.order}包下的类
	 * @return 返回 {@link com.github.binarywang.wxpay.bean.order}包下的类对象
	 */

	@RequestMapping("/createOrder")
	public <T> T createOrder(WxPayUnifiedOrderRequest request) throws WxPayException {
		return this.wxService.createOrder(request);
	}

//  @ApiOperation(value = "支付回调通知处理")
	@RequestMapping("/notify/order")
	public String parseOrderNotifyResult(@RequestBody String xmlData) throws WxPayException {
		final WxPayOrderNotifyResult notifyResult = this.wxService.parseOrderNotifyResult(xmlData);
		// TODO 根据自己业务场景需要构造返回对象
		return WxPayNotifyResponse.success("成功");
	}

//  @ApiOperation(value = "扫码支付回调通知处理")
	@RequestMapping("/notify/scanpay")
	public String parseScanPayNotifyResult(String xmlData) throws WxPayException {
		final WxScanPayNotifyResult result = this.wxService.parseScanPayNotifyResult(xmlData);
		// TODO 根据自己业务场景需要构造返回对象
		return WxPayNotifyResponse.success("成功");
	}

	/**
	 * <pre>
	 * 下载对账单
	 * 商户可以通过该接口下载历史交易清单。比如掉单、系统错误等导致商户侧和微信侧数据不一致,通过对账单核对后可校正支付状态。
	 * 注意:
	 * 1、微信侧未成功下单的交易不会出现在对账单中。支付成功后撤销的交易会出现在对账单中,跟原支付单订单号一致,bill_type为REVOKED;
	 * 2、微信在次日9点启动生成前一天的对账单,建议商户10点后再获取;
	 * 3、对账单中涉及金额的字段单位为“元”。
	 * 4、对账单接口只能下载三个月以内的账单。
	 * 接口链接:https://api.mch.weixin.qq.com/pay/downloadbill
	 * 详情请见: <a href=
	"https://pay.weixin.qq.com/wiki/doc/api/jsapi.php?chapter=9_6">下载对账单</a>
	 * </pre>
	 *
	 * @param billDate   对账单日期 bill_date 下载对账单的日期,格式:20140603
	 * @param billType   账单类型 bill_type
	 *                   ALL,返回当日所有订单信息,默认值,SUCCESS,返回当日成功支付的订单,REFUND,返回当日退款订单
	 * @param tarType    压缩账单 tar_type 非必传参数,固定值:GZIP,返回格式为.gzip的压缩包账单。不传则默认为数据流形式。
	 * @param deviceInfo 设备号 device_info 非必传参数,终端设备号
	 * @return 保存到本地的临时文件
	 */
	@RequestMapping("/downloadBill/{billDate}/{billType}/{tarType}/{deviceInfo}")
	public WxPayBillResult downloadBill(@PathVariable String billDate, @PathVariable String billType,
			@PathVariable String tarType, @PathVariable String deviceInfo) throws WxPayException {
		return this.wxService.downloadBill(billDate, billType, tarType, deviceInfo);
	}

	@RequestMapping("/downloadBill")
	public WxPayBillResult downloadBill(WxPayDownloadBillRequest wxPayDownloadBillRequest) throws WxPayException {
		return this.wxService.downloadBill(wxPayDownloadBillRequest);
	}

}

 

 

分享到:
评论

相关推荐

    Asp微信支付接口V5_Asp微信支付接口V5_

    Asp微信支付接口V5是针对ASP(Active Server Pages)开发环境设计的一种微信支付解决方案,它使得ASP开发者能够轻松地集成微信支付功能到他们的网站或应用程序中。在使用这个接口时,开发者需要对微信支付的相关协议...

    ASP版微信支付接口非常好用!!

    ASP版微信支付接口是针对使用ASP(Active Server Pages)编程语言的开发者设计的一种集成微信支付功能的工具。这种接口使得ASP应用能够与微信支付平台无缝对接,为用户提供便捷的在线支付服务。在本文中,我们将深入...

    asp微信支付接口(绝对可用!!)

    ASP微信支付接口是一种在ASP(Active Server Pages)环境中实现与微信支付系统对接的技术方案。它允许网站开发者通过编程方式调用微信支付的各种功能,如商品购买、订单支付等,以实现在线交易。以下是对这个主题的...

    微信支付接口文档

    微信支付接口文档是微信官方为开发者提供的详细指南,旨在帮助开发者集成微信支付功能到他们的APP应用中。这个接口文档涵盖了从注册成为微信支付商户、获取API密钥到实现支付流程的全过程,确保开发者能够顺利地在...

    asp微信支付接口源码

    ASP微信支付接口是一种基于Active Server Pages (ASP)技术实现的,允许网站接受微信支付的解决方案。这个源码包包含了实现微信支付功能所需的所有文件,经过实际测试,确认能够正常运行,使用者只需按照提供的说明...

    ABCWXPayAction_农行微信支付接口demo_DEMO_

    "ABCWXPayAction_农行微信支付接口demo_DEMO_" 是一个针对农业银行(农行)微信支付接口的示例代码包,主要用于帮助开发者理解和实现与微信支付平台的集成。下面将详细介绍这个DEMO的要点及其相关的技术知识点。 ...

    微信支付JS-SDK调用微信支付接口 JAVA

    在JAVA后端,我们需要与这个JS-SDK配合,以实现从服务器端调用微信支付接口,为前端提供安全可靠的支付服务。下面将详细阐述相关知识点。 1. **微信支付API** 微信支付提供了丰富的API接口,包括统一下单、订单...

    asp微信支付接口代码下载(保证可以使用!)

    ASP微信支付接口是一种在ASP(Active Server Pages)环境中实现与微信支付系统对接的技术。通过这个接口,开发者可以将微信支付功能整合到自己的网站上,使用户能够方便地使用微信进行在线支付。以下是对该接口的...

    asp.net版小程序微信支付接口文件

    ASP.NET版的小程序微信支付接口文件是用于在ASP.NET平台上集成微信支付功能的关键组件,它使得开发者能够方便地在自己的小程序应用中实现安全、便捷的在线支付。此接口文件包括了必要的配置信息以及处理支付请求的...

    完整微信支付接口

    微信支付接口是微信官方提供的一种在线支付服务,用于商家与用户之间进行资金交易。这个“完整微信支付接口”包含了一份详尽的使用文档和源码注释,旨在帮助开发者更好地理解和集成这一支付功能。 1. **接口概述**...

    微信支付接口.zip

    微信支付接口是商家在开发基于微信生态的在线支付功能时必不可少的部分。这个压缩包"微信支付接口.zip"包含了实现微信支付所需的各种API和工具类,旨在帮助开发者轻松地集成微信支付到自己的应用或网站中。以下是对...

    Asp微信支付接口代码 V5.2.5.zip

    ASP微信支付接口代码V5.2.5是一个用于在ASP(Active Server Pages)环境中集成微信支付功能的开发包。这个版本可能包含了最新的API调用,旨在帮助开发者方便地实现在线支付功能,尤其适用于基于ASP技术构建的网站或...

    微信支付接口开发文档(最新版)

    微信支付接口开发是移动互联网时代商家与用户进行交易的重要途径,尤其在电商、服务预订、线下支付等场景中广泛应用。本资源提供了微信支付接口的最新开发文档,涵盖了多个编程语言的示例源码,帮助开发者快速理解和...

    新微信支付接口demo

    微信支付接口Demo是微信官方提供的一种用于集成到开发者应用程序中的支付功能示例代码。这个"新微信支付接口demo"是基于微信3.3.6版本的更新,它包含了调用微信支付服务所需的关键步骤和逻辑,旨在帮助开发者快速...

    Asp微信支付接口代码.zip

    在IT行业中,微信支付接口是在线交易中不可或缺的一部分,尤其对于基于ASP(Active Server Pages)技术构建的网站来说。此"asp微信支付接口代码.zip"压缩包提供了ASP源码,帮助开发者集成微信支付功能到他们的应用...

    微信支付接口demo源码

    微信支付接口Demo源码是为开发者提供的一种参考实现,用于帮助他们快速集成微信支付功能到自己的VB.NET应用程序中。这个Demo包含了完整的解决方案(WeiPayTest.sln)以及两个关键项目:Fans.Web和Fans.WxPay。 ...

    java操作微信支付接口Demo

    Java操作微信支付接口的Demo是开发者进行微信支付集成的重要参考示例。微信支付是中国最流行的移动支付方式之一,广泛应用于线上线下交易。为了实现微信支付功能,开发者需要理解并熟悉微信支付提供的API接口,并能...

    微信支付接口asp.net

    微信支付接口在ASP.NET中的应用是开发者们常用的技术之一,主要用于在网站或移动应用中集成微信支付功能,以便用户能够方便、快捷地进行在线交易。本文将深入探讨如何在ASP.NET环境中实现微信支付接口,包括必要的...

    微信支付接口文件通用

    微信支付接口主要包括以下几个核心部分: 1. **初始化配置**:开发者需要在代码中配置商户号(MCHID)、AppID、API密钥(Key)等关键信息,这些都是在微信支付商户平台注册时获取的。这些参数用于识别商户身份,...

Global site tag (gtag.js) - Google Analytics