com.foxinmy.weixin4j.api
Class PayApi

java.lang.Object
  extended by com.foxinmy.weixin4j.api.BaseApi
      extended by com.foxinmy.weixin4j.api.MchApi
          extended by com.foxinmy.weixin4j.api.PayApi

public class PayApi
extends MchApi

支付API

Since:
JDK 1.6
Author:
jinyu(foxinmy@gmail.com)

Constructor Summary
PayApi(WeixinPayAccount weixinAccount)
           
 
Method Summary
 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)
          关闭订单
 String createAddressRequestJSON(String url, String oauthToken)
           生成编辑地址请求
 MchPayRequest createAppPayRequest(String body, String outTradeNo, double totalFee, String notifyUrl, String createIp, String attach)
          创建APP支付请求对象
 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)
          提交被扫支付
 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)
          创建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),减小二维码数据量 ,提升扫描速度和精确度。
 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.api.MchApi
getWeixinSignature
 
Methods inherited from class java.lang.Object
equals, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

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
创建支付请求对象

Parameters:
payPackage - 支付详情
Returns:
支付请求对象
Throws:
WeixinException
See Also:
JS支付, 扫码支付, 刷卡支付, APP支付, WAP支付

createJSPayRequest

public MchPayRequest createJSPayRequest(String openId,
                                        String body,
                                        String outTradeNo,
                                        double totalFee,
                                        String notifyUrl,
                                        String createIp,
                                        String attach)
                                 throws WeixinException
创建JSAPI支付请求对象

Parameters:
openId - 用户ID
body - 订单描述
outTradeNo - 订单号
totalFee - 订单总额(元)
notifyUrl - 支付通知地址
createIp - ip地址
attach - 附加数据 非必填
Returns:
JSAPI支付对象
Throws:
WeixinException
See Also:
JSAPIPayRequest

createAddressRequestJSON

public String createAddressRequestJSON(String url,
                                       String oauthToken)

生成编辑地址请求

err_msg edit_address:ok获取编辑收货地址成功
edit_address:fail获取编辑收货地址失败
userName 收货人姓名
telNumber 收货人电话
addressPostalCode 邮编
proviceFirstStageName 国标收货地址第一级地址
addressCitySecondStageName 国标收货地址第二级地址
addressCountiesThirdStageName 国标收货地址第三级地址
addressDetailInfo 详细收货地址信息
nationalCode 收货地址国家码

Parameters:
url - 当前访问页的URL
oauthToken - oauth授权时产生的token
Returns:
编辑地址请求JSON串
See Also:
收货地址共享

createNativePayRequest

public String createNativePayRequest(String productId)
创建Native支付(扫码支付)链接【模式一】

Parameters:
productId - 与订单ID等价
Returns:
支付链接
See Also:
扫码支付 , 模式一

createNativePayResponse

public NativePayResponse createNativePayResponse(String productId,
                                                 String body,
                                                 String outTradeNo,
                                                 double totalFee,
                                                 String notifyUrl,
                                                 String createIp,
                                                 String attach)
                                          throws WeixinException
创建Native支付(扫码支付)回调对象【模式一】

Parameters:
productId - 商品ID
body - 商品描述
outTradeNo - 商户内部唯一订单号
totalFee - 商品总额 单位元
notifyUrl - 支付回调URL
createIp - 订单生成的机器 IP
attach - 附加数据 非必填
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 - 商品ID
body - 商品描述
outTradeNo - 商户内部唯一订单号
totalFee - 商品总额 单位元
notifyUrl - 支付回调URL
createIp - 订单生成的机器 IP
attach - 附加数据 非必填
Returns:
Native支付对象
Throws:
WeixinException
See Also:
NATIVEPayRequest, 扫码支付 , 模式二

createAppPayRequest

public MchPayRequest createAppPayRequest(String body,
                                         String outTradeNo,
                                         double totalFee,
                                         String notifyUrl,
                                         String createIp,
                                         String attach)
                                  throws WeixinException
创建APP支付请求对象

Parameters:
body - 商品描述
outTradeNo - 商户内部唯一订单号
totalFee - 商品总额 单位元
notifyUrl - 支付回调URL
createIp - 订单生成的机器 IP
attach - 附加数据 非必填
Returns:
APP支付对象
Throws:
WeixinException
See Also:
APPPayRequest, APP支付

createWapPayRequest

public MchPayRequest createWapPayRequest(String body,
                                         String outTradeNo,
                                         double totalFee,
                                         String notifyUrl,
                                         String createIp,
                                         String attach)
                                  throws WeixinException
创建WAP支付请求对象:正常流程用户支付完成后会返回至发起支付的页面,如需返回至指定页面, 则可以在MWEB_URL后拼接上redirect_url参数,来指定回调页面

Parameters:
body - 商品描述
outTradeNo - 商户内部唯一订单号
totalFee - 商品总额 单位元
notifyUrl - 支付回调URL
createIp - 订单生成的机器 IP
attach - 附加数据 非必填
Returns:
WAP支付对象
Throws:
WeixinException
See Also:
WAPPayRequest, WAP支付

createMicroPayRequest

public MchPayRequest createMicroPayRequest(String authCode,
                                           String body,
                                           String outTradeNo,
                                           double totalFee,
                                           String createIp,
                                           String attach)
                                    throws WeixinException
提交被扫支付

Parameters:
authCode - 扫码支付授权码 ,设备读取用户微信中的条码或者二维码信息
body - 商品描述
outTradeNo - 商户内部唯一订单号
totalFee - 商品总额 单位元
createIp - 订单生成的机器 IP
attach - 附加数据 非必填
Returns:
支付的订单信息
Throws:
WeixinException
See Also:
MICROPayRequest, Order, 提交被扫支付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
申请退款(请求需要双向证书)

当交易发生之后一段时间内,由于买家或者卖家的原因需要退款时,卖家可以通过退款接口将支付款退还给买家,微信支付将在收到退款请求并且验证成功之后, 按照退款规则将支付款按原路退到买家帐号上。

1.交易时间超过半年的订单无法提交退款; 2.微信支付退款支持单笔交易分多次退款,多次退款需要提交原支付订单的商户订单号和设置不同的退款单号。一笔退款失败后重新提交 ,要采用原来的退款单号。总退款金额不能超过用户实际支付金额。

Parameters:
idQuery - 商户系统内部的订单号, transaction_id 、 out_trade_no 二选一,如果同时存在优先级: transaction_id> out_trade_no
outRefundNo - 商户系统内部的退款单号,商 户系统内部唯一,同一退款单号多次请求只退一笔
totalFee - 订单总金额,单位为元
refundFee - 退款总金额,单位为元,可以做部分退款
refundFeeType - 货币类型,符合ISO 4217标准的三位字母代码,默认人民币:CNY
opUserId - 操作员帐号, 默认为商户号
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_no
outRefundNo - 商户系统内部的退款单号,商 户系统内部唯一,同一退款单号多次请求只退一笔
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/unifiedorder
executeTime - 接口耗时情况,单位为毫秒
outTradeNo - 商户系统内部的订单号,商 户可以在上报时提供相关商户订单号方便微信支付更好 的提高服务质量。
ip - 发起接口调用时的机器 IP
time - 商户调用该接口时商户自己 系统的时间
returnXml - 调用接口返回的基本数据
Returns:
处理结果
Throws:
WeixinException
See Also:
交易保障

authCode2openId

public OpenIdResult authCode2openId(String authCode)
                             throws WeixinException
授权码查询OPENID接口

Parameters:
authCode - 扫码支付授权码,设备读取用户微信中的条码或者二维码信息
Returns:
查询结果
Throws:
WeixinException
See Also:
OpenIdResult, 授权码查询OPENID


Copyright © 2014–2017. All rights reserved.