Package com.foxinmy.weixin4j.pay.api
Class PayApi
- java.lang.Object
-
- com.foxinmy.weixin4j.api.BaseApi
-
- com.foxinmy.weixin4j.pay.api.MchApi
-
- com.foxinmy.weixin4j.pay.api.PayApi
-
public class PayApi extends MchApi
支付API- Since:
- JDK 1.6
- Author:
- jinyu(foxinmy@gmail.com)
-
-
Field Summary
-
Fields inherited from class com.foxinmy.weixin4j.pay.api.MchApi
weixinAccount, weixinSignature
-
Fields inherited from class com.foxinmy.weixin4j.api.BaseApi
weixinExecutor
-
-
Constructor Summary
Constructors Constructor Description PayApi(WeixinPayAccount weixinAccount)
-
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description RefundResult
applyRefund(IdQuery idQuery, String outRefundNo, double totalFee)
退款申请(全额退款)RefundResult
applyRefund(IdQuery idQuery, String outRefundNo, double totalFee, double refundFee, CurrencyType refundFeeType, String opUserId, String refundDesc, RefundAccountType refundAccountType)
申请退款(请求需要双向证书)OpenIdResult
authCode2openId(String authCode)
授权码查询OPENID接口MerchantResult
closeOrder(String outTradeNo)
关闭订单MchPayRequest
createAppPayRequest(String body, String outTradeNo, double totalFee, String notifyUrl, String createIp, String attach, SceneInfoStore store)
创建APP支付请求对象MchPayRequest
createDepositPayRequest(String code, String body, String outTradeNo, double totalFee, String createIp, String openId, String attach, SceneInfoStore store, boolean isFacePay)
创建押金支付MchPayRequest
createJSPayRequest(String openId, String body, String outTradeNo, double totalFee, String notifyUrl, String createIp, String attach)
创建JSAPI支付请求对象MchPayRequest
createMicroPayRequest(String authCode, String body, String outTradeNo, double totalFee, String createIp, String attach, SceneInfoStore store)
提交被扫支付String
createNativePayRequest(String productId)
创建Native支付(扫码支付)链接【模式一】MchPayRequest
createNativePayRequest(String productId, String body, String outTradeNo, double totalFee, String notifyUrl, String createIp, String attach)
创建Native支付(扫码支付)链接【模式二】NativePayResponse
createNativePayResponse(String productId, String body, String outTradeNo, double totalFee, String notifyUrl, String createIp, String attach)
创建Native支付(扫码支付)回调对象【模式一】MchPayRequest
createPayRequest(MchPayPackage payPackage)
创建支付请求对象PrePay
createPrePay(MchPayPackage payPackage)
统一下单接口 除被扫支付场景以外,商户系统先调用该接口在微信支付服务后台生成预支付交易单,返回正确的预支付交易回话标识后再按扫码、JSAPI 、APP等不同场景生成交易串调起支付。MchPayRequest
createWapPayRequest(String body, String outTradeNo, double totalFee, String notifyUrl, String createIp, String attach, SceneInfoApp app)
创建WAP支付请求对象:正常流程用户支付完成后会返回至发起支付的页面,如需返回至指定页面, 则可以在MWEB_URL后拼接上redirect_url参数,来指定回调页面void
downloadBill(Date billDate, BillType billType, OutputStream outputStream, TarType tarType)
下载对账单
1.微信侧未成功下单的交易不会出现在对账单中。支付成功后撤销的交易会出现在对账 单中,跟原支付单订单号一致,bill_type 为 REVOKED;
2.微信在次日 9 点启动生成前一天的对账单,建议商户 9 点半后再获取;
3.对账单中涉及金额的字段单位为“元”。String
getShorturl(String url)
native支付URL转短链接:用于扫码原生支付模式一中的二维码链接转成短链接(weixin://wxpay/s/XXXXXX),减小二维码数据量 ,提升扫描速度和精确度。PayfaceAuthinfo
getWxPayfaceAuthinfo(PayfaceAuthinfoRequest request)
微信刷脸支付,获取调用凭证Order
queryOrder(IdQuery idQuery)
订单查询RefundRecord
queryRefund(IdQuery idQuery)
退款查询XmlResult
reportInterface(String interfaceUrl, int executeTime, String outTradeNo, String ip, Date time, XmlResult returnXml)
接口上报MerchantResult
reverseOrder(IdQuery idQuery)
冲正订单(需要证书) 当支付返回失败,或收银系统超时需要取消交易,可以调用该接口 接口逻辑:支 付失败的关单,支付成功的撤销支付 7天以内的单可撤销,其他正常支付的单 如需实现相同功能请调用退款接口 调用扣款接口后请勿立即调用撤销,需要等待5秒以上。先调用查单接口,如果没有确切的返回,再调用撤销-
Methods inherited from class com.foxinmy.weixin4j.pay.api.MchApi
createBaseRequestMap, declareMerchant, getWeixinSignature, getWeixinSSLExecutor, weixinBundle
-
Methods inherited from class com.foxinmy.weixin4j.api.BaseApi
getRequestUri
-
-
-
-
Constructor Detail
-
PayApi
public PayApi(WeixinPayAccount weixinAccount)
-
-
Method Detail
-
createPrePay
public PrePay createPrePay(MchPayPackage payPackage) throws WeixinException
统一下单接口 除被扫支付场景以外,商户系统先调用该接口在微信支付服务后台生成预支付交易单,返回正确的预支付交易回话标识后再按扫码、JSAPI 、APP等不同场景生成交易串调起支付。- Parameters:
payPackage
- 包含订单信息的对象- Returns:
- 预支付对象
- Throws:
WeixinException
- See Also:
MchPayPackage
,PrePay
, 统一下单接口
-
createPayRequest
public MchPayRequest createPayRequest(MchPayPackage payPackage) throws WeixinException
创建支付请求对象
-
createJSPayRequest
public MchPayRequest createJSPayRequest(String openId, String body, String outTradeNo, double totalFee, String notifyUrl, String createIp, String attach) throws WeixinException
创建JSAPI支付请求对象- Parameters:
openId
- 用户IDbody
- 订单描述outTradeNo
- 订单号totalFee
- 订单总额(元)notifyUrl
- 支付通知地址createIp
- ip地址attach
- 附加数据 非必填- Returns:
- JSAPI支付对象
- Throws:
WeixinException
- See Also:
JSAPIPayRequest
-
createNativePayRequest
public String createNativePayRequest(String productId)
创建Native支付(扫码支付)链接【模式一】
-
createNativePayResponse
public NativePayResponse createNativePayResponse(String productId, String body, String outTradeNo, double totalFee, String notifyUrl, String createIp, String attach) throws WeixinException
创建Native支付(扫码支付)回调对象【模式一】- Parameters:
productId
- 商品IDbody
- 商品描述outTradeNo
- 商户内部唯一订单号totalFee
- 商品总额 单位元notifyUrl
- 支付回调URLcreateIp
- 订单生成的机器 IPattach
- 附加数据 非必填- Returns:
- Native回调对象
- Throws:
WeixinException
- See Also:
NativePayResponse
, 扫码支付 , 模式一
-
createNativePayRequest
public MchPayRequest createNativePayRequest(String productId, String body, String outTradeNo, double totalFee, String notifyUrl, String createIp, String attach) throws WeixinException
创建Native支付(扫码支付)链接【模式二】- Parameters:
productId
- 商品IDbody
- 商品描述outTradeNo
- 商户内部唯一订单号totalFee
- 商品总额 单位元notifyUrl
- 支付回调URLcreateIp
- 订单生成的机器 IPattach
- 附加数据 非必填- Returns:
- Native支付对象
- Throws:
WeixinException
- See Also:
NATIVEPayRequest
, 扫码支付 , 模式二
-
createAppPayRequest
public MchPayRequest createAppPayRequest(String body, String outTradeNo, double totalFee, String notifyUrl, String createIp, String attach, SceneInfoStore store) throws WeixinException
创建APP支付请求对象- Parameters:
body
- 商品描述outTradeNo
- 商户内部唯一订单号totalFee
- 商品总额 单位元notifyUrl
- 支付回调URLcreateIp
- 订单生成的机器 IPattach
- 附加数据 非必填store
- APP支付已无门店信息,不需要再传- Returns:
- APP支付对象
- Throws:
WeixinException
- See Also:
SceneInfoStore
,APPPayRequest
, APP支付
-
createWapPayRequest
public MchPayRequest createWapPayRequest(String body, String outTradeNo, double totalFee, String notifyUrl, String createIp, String attach, SceneInfoApp app) throws WeixinException
创建WAP支付请求对象:正常流程用户支付完成后会返回至发起支付的页面,如需返回至指定页面, 则可以在MWEB_URL后拼接上redirect_url参数,来指定回调页面- Parameters:
body
- 商品描述outTradeNo
- 商户内部唯一订单号totalFee
- 商品总额 单位元notifyUrl
- 支付回调URLcreateIp
- 订单生成的机器 IPattach
- 附加数据 非必填app
- 应用信息- Returns:
- WAP支付对象
- Throws:
WeixinException
- See Also:
SceneInfoApp
,WAPPayRequest
, WAP支付
-
createMicroPayRequest
public MchPayRequest createMicroPayRequest(String authCode, String body, String outTradeNo, double totalFee, String createIp, String attach, SceneInfoStore store) throws WeixinException
提交被扫支付- Parameters:
authCode
- 扫码支付授权码 ,设备读取用户微信中的条码或者二维码信息body
- 商品描述outTradeNo
- 商户内部唯一订单号totalFee
- 商品总额 单位元createIp
- 订单生成的机器 IPattach
- 附加数据 非必填store
- 门店信息 非必填- Returns:
- 支付的订单信息
- Throws:
WeixinException
- See Also:
MICROPayRequest
,Order
,SceneInfoStore
, 提交被扫支付API
-
queryOrder
public Order queryOrder(IdQuery idQuery) throws WeixinException
订单查询当商户后台、网络、服务器等出现异常,商户系统最终未接收到支付通知; 调用支付接口后,返回系统错误或未知交易状态情况; 调用被扫支付API,返回USERPAYING的状态; 调用关单或撤销接口API之前,需确认支付状态;
- Parameters:
idQuery
- 商户系统内部的订单号, transaction_id、out_trade_no 二 选一,如果同时存在优先级: transaction_id> out_trade_no- Returns:
- 订单信息
- Throws:
WeixinException
- Since:
- V3
- See Also:
Order
, 订单查询API
-
applyRefund
public RefundResult applyRefund(IdQuery idQuery, String outRefundNo, double totalFee, double refundFee, CurrencyType refundFeeType, String opUserId, String refundDesc, RefundAccountType refundAccountType) throws WeixinException
申请退款(请求需要双向证书)当交易发生之后一段时间内,由于买家或者卖家的原因需要退款时,卖家可以通过退款接口将支付款退还给买家,微信支付将在收到退款请求并且验证成功之后, 按照退款规则将支付款按原路退到买家帐号上。
- 交易时间超过一年的订单无法提交退款;
- 微信支付退款支持单笔交易分多次退款,多次退款需要提交原支付订单的商户订单号和设置不同的退款单号。 申请退款总金额不能超过订单金额。 一笔退款失败后重新提交,请不要更换退款单号,请使用原商户退款单号。
- 请求频率限制:150qps,即每秒钟正常的申请退款请求次数不超过150次。 错误或无效请求频率限制:6qps,即每秒钟异常或错误的退款申请请求不超过6次。
- 每个支付订单的部分退款次数不能超过50次。
- Parameters:
idQuery
- 商户系统内部的订单号, transaction_id 、 out_trade_no 二选一,如果同时存在优先级: transaction_id> out_trade_nooutRefundNo
- 商户系统内部的退款单号,商 户系统内部唯一,同一退款单号多次请求只退一笔totalFee
- 订单总金额,单位为元refundFee
- 退款总金额,单位为元,可以做部分退款refundFeeType
- 货币类型,符合ISO 4217标准的三位字母代码,默认人民币:CNYopUserId
- 操作员帐号, 默认为商户号refundDesc
- 退款原因,若商户传入,会在下发给用户的退款消息中体现退款原因refundAccountType
- 退款资金来源,默认使用未结算资金退款:REFUND_SOURCE_UNSETTLED_FUNDS- Returns:
- 退款申请结果
- Throws:
WeixinException
- Since:
- V3
- See Also:
RefundResult
, 申请退款API
-
applyRefund
public RefundResult applyRefund(IdQuery idQuery, String outRefundNo, double totalFee) throws WeixinException
退款申请(全额退款)- Parameters:
idQuery
- 商户系统内部的订单号, transaction_id 、 out_trade_no 二选一,如果同时存在优先级: transaction_id> out_trade_nooutRefundNo
- 商户系统内部的退款单号,商 户系统内部唯一,同一退款单号多次请求只退一笔totalFee
- 订单总金额,单位为元- Throws:
WeixinException
- See Also:
applyRefund(IdQuery, String, double, double, CurrencyType, String, String, RefundAccountType)
-
reverseOrder
public MerchantResult reverseOrder(IdQuery idQuery) throws WeixinException
冲正订单(需要证书) 当支付返回失败,或收银系统超时需要取消交易,可以调用该接口 接口逻辑:支 付失败的关单,支付成功的撤销支付 7天以内的单可撤销,其他正常支付的单 如需实现相同功能请调用退款接口 调用扣款接口后请勿立即调用撤销,需要等待5秒以上。先调用查单接口,如果没有确切的返回,再调用撤销- Parameters:
idQuery
- 商户系统内部的订单号, transaction_id 、 out_trade_no 二选一,如果同时存在优先级: transaction_id> out_trade_no- Returns:
- 撤销结果
- Throws:
WeixinException
- Since:
- V3
-
getShorturl
public String getShorturl(String url) throws WeixinException
native支付URL转短链接:用于扫码原生支付模式一中的二维码链接转成短链接(weixin://wxpay/s/XXXXXX),减小二维码数据量 ,提升扫描速度和精确度。- Parameters:
url
- 具有native标识的支付URL- Returns:
- 转换后的短链接
- Throws:
WeixinException
- See Also:
- 转换短链接API
-
closeOrder
public MerchantResult closeOrder(String outTradeNo) throws WeixinException
关闭订单商户订单支付失败需要生成新单号重新发起支付,要对原订单号调用关单,避免重复支付;系统下单后,用户支付超时,系统退出不再受理,避免用户继续 ,请调用关单接口,如果关单失败,返回已完 成支付请按正常支付处理。如果出现银行掉单,调用关单成功后,微信后台会主动发起退款。
- Parameters:
outTradeNo
- 商户系统内部的订单号- Returns:
- 处理结果
- Throws:
WeixinException
- Since:
- V3
- See Also:
- 关闭订单API
-
downloadBill
public void downloadBill(Date billDate, BillType billType, OutputStream outputStream, TarType tarType) throws WeixinException
下载对账单
1.微信侧未成功下单的交易不会出现在对账单中。支付成功后撤销的交易会出现在对账 单中,跟原支付单订单号一致,bill_type 为 REVOKED;
2.微信在次日 9 点启动生成前一天的对账单,建议商户 9 点半后再获取;
3.对账单中涉及金额的字段单位为“元”。- Parameters:
billDate
- 下载对账单的日期billType
- 下载对账单的类型 ALL,返回当日所有订单信息, 默认值 SUCCESS,返回当日成功支付的订单 REFUND,返回当日退款订单outputStream
- 输出流tarType
- 非必传参数,固定值:GZIP,返回格式为.gzip的压缩包账单。不传则默认为数据流形式。- Throws:
WeixinException
- Since:
- V3
- See Also:
- 下载对账单API
-
queryRefund
public RefundRecord queryRefund(IdQuery idQuery) throws WeixinException
退款查询提交退款申请后,通过调用该接口查询退款状态。退款有一定延时,用零钱支付的退款20分钟内到账,银行卡支付的退款3个工作日后重新查询退款状态。
- Parameters:
idQuery
- 单号 refund_id、out_refund_no、 out_trade_no 、 transaction_id 四个参数必填一个,优先级为: refund_id>out_refund_no>transaction_id>out_trade_no- Returns:
- 退款记录
- Throws:
WeixinException
- Since:
- V3
- See Also:
RefundRecord
,RefundDetail
, 退款查询API
-
reportInterface
public XmlResult reportInterface(String interfaceUrl, int executeTime, String outTradeNo, String ip, Date time, XmlResult returnXml) throws WeixinException
接口上报- Parameters:
interfaceUrl
- 上报对应的接口的完整 URL, 类似: https://api.mch.weixin.q q.com/pay/unifiedorderexecuteTime
- 接口耗时情况,单位为毫秒outTradeNo
- 商户系统内部的订单号,商 户可以在上报时提供相关商户订单号方便微信支付更好 的提高服务质量。ip
- 发起接口调用时的机器 IPtime
- 商户调用该接口时商户自己 系统的时间returnXml
- 调用接口返回的基本数据- Returns:
- 处理结果
- Throws:
WeixinException
- See Also:
- 交易保障
-
authCode2openId
public OpenIdResult authCode2openId(String authCode) throws WeixinException
授权码查询OPENID接口- Parameters:
authCode
- 扫码支付授权码,设备读取用户微信中的条码或者二维码信息- Returns:
- 查询结果
- Throws:
WeixinException
- See Also:
OpenIdResult
, 授权码查询OPENID
-
getWxPayfaceAuthinfo
public PayfaceAuthinfo getWxPayfaceAuthinfo(PayfaceAuthinfoRequest request) throws WeixinException
微信刷脸支付,获取调用凭证- Parameters:
request
-- Returns:
- Throws:
WeixinException
- See Also:
- 获取调用凭证-get-wxpayface-authinfo
-
createDepositPayRequest
public MchPayRequest createDepositPayRequest(String code, String body, String outTradeNo, double totalFee, String createIp, String openId, String attach, SceneInfoStore store, boolean isFacePay) throws WeixinException
创建押金支付- Parameters:
code
-body
-outTradeNo
-totalFee
-createIp
-openId
-attach
-store
-isFacePay
-- Returns:
- Throws:
WeixinException
- See Also:
- 支付押金(付款码支付), 支付押金(人脸支付)
-
-