989 lines
34 KiB
Java
989 lines
34 KiB
Java
package com.foxinmy.weixin4j.payment;
|
||
|
||
import java.io.File;
|
||
import java.io.FileInputStream;
|
||
import java.io.IOException;
|
||
import java.io.InputStream;
|
||
import java.util.Date;
|
||
|
||
import com.foxinmy.weixin4j.api.CashApi;
|
||
import com.foxinmy.weixin4j.api.CouponApi;
|
||
import com.foxinmy.weixin4j.api.CustomsApi;
|
||
import com.foxinmy.weixin4j.api.PayApi;
|
||
import com.foxinmy.weixin4j.exception.WeixinException;
|
||
import com.foxinmy.weixin4j.http.weixin.XmlResult;
|
||
import com.foxinmy.weixin4j.model.Pageable;
|
||
import com.foxinmy.weixin4j.model.WeixinPayAccount;
|
||
import com.foxinmy.weixin4j.payment.coupon.CouponDetail;
|
||
import com.foxinmy.weixin4j.payment.coupon.CouponResult;
|
||
import com.foxinmy.weixin4j.payment.coupon.CouponStock;
|
||
import com.foxinmy.weixin4j.payment.mch.CorpPayment;
|
||
import com.foxinmy.weixin4j.payment.mch.CorpPaymentRecord;
|
||
import com.foxinmy.weixin4j.payment.mch.CorpPaymentResult;
|
||
import com.foxinmy.weixin4j.payment.mch.CustomsOrder;
|
||
import com.foxinmy.weixin4j.payment.mch.CustomsOrderRecord;
|
||
import com.foxinmy.weixin4j.payment.mch.CustomsOrderResult;
|
||
import com.foxinmy.weixin4j.payment.mch.MchPayPackage;
|
||
import com.foxinmy.weixin4j.payment.mch.MchPayRequest;
|
||
import com.foxinmy.weixin4j.payment.mch.MerchantResult;
|
||
import com.foxinmy.weixin4j.payment.mch.NativePayResponse;
|
||
import com.foxinmy.weixin4j.payment.mch.OpenIdResult;
|
||
import com.foxinmy.weixin4j.payment.mch.Order;
|
||
import com.foxinmy.weixin4j.payment.mch.PrePay;
|
||
import com.foxinmy.weixin4j.payment.mch.Redpacket;
|
||
import com.foxinmy.weixin4j.payment.mch.RedpacketRecord;
|
||
import com.foxinmy.weixin4j.payment.mch.RedpacketSendResult;
|
||
import com.foxinmy.weixin4j.payment.mch.RefundRecord;
|
||
import com.foxinmy.weixin4j.payment.mch.RefundResult;
|
||
import com.foxinmy.weixin4j.payment.mch.SettlementRecord;
|
||
import com.foxinmy.weixin4j.type.BillType;
|
||
import com.foxinmy.weixin4j.type.CurrencyType;
|
||
import com.foxinmy.weixin4j.type.CustomsCity;
|
||
import com.foxinmy.weixin4j.type.IdQuery;
|
||
import com.foxinmy.weixin4j.type.TradeType;
|
||
import com.foxinmy.weixin4j.util.Weixin4jSettings;
|
||
|
||
/**
|
||
* 微信支付接å<C2A5>£å®žçް
|
||
*
|
||
* @className WeixinPayProxy
|
||
* @author jinyu(foxinmy@gmail.com)
|
||
* @date 2015年1月3日
|
||
* @since JDK 1.6
|
||
* @see <a href="http://pay.weixin.qq.com/wiki/doc/api/index.html">商户平å<C2B3>°æ”¯ä»˜API</a>
|
||
*/
|
||
public class WeixinPayProxy {
|
||
|
||
/**
|
||
* 微信支付API:js支付ã€<C3A3>扫ç <C3A7>æ”¯ä»˜ç‰æŽ¥å<C2A5>£
|
||
*/
|
||
private final PayApi payApi;
|
||
/**
|
||
* 代金券API
|
||
*/
|
||
private final CouponApi couponApi;
|
||
/**
|
||
* 现金API
|
||
*/
|
||
private final CashApi cashApi;
|
||
/**
|
||
* æµ·å…³API
|
||
*/
|
||
private final CustomsApi customsApi;
|
||
/**
|
||
* é…<C3A9>置信æ<C2A1>¯
|
||
*/
|
||
private final Weixin4jSettings settings;
|
||
|
||
/**
|
||
* 使用weixin4j.propertiesé…<C3A9>置的支付账å<C2A6>·ä¿¡æ<C2A1>¯
|
||
*/
|
||
public WeixinPayProxy() {
|
||
this(new Weixin4jSettings());
|
||
}
|
||
|
||
/**
|
||
*
|
||
* @param settings
|
||
* 支付相关é…<C3A9>置信æ<C2A1>¯
|
||
* @see com.foxinmy.weixin4j.util.Weixin4jSettings
|
||
*/
|
||
public WeixinPayProxy(Weixin4jSettings settings) {
|
||
this.settings = settings;
|
||
this.payApi = new PayApi(settings.getWeixinPayAccount());
|
||
this.couponApi = new CouponApi(settings.getWeixinPayAccount());
|
||
this.cashApi = new CashApi(settings.getWeixinPayAccount());
|
||
this.customsApi = new CustomsApi(settings.getWeixinPayAccount());
|
||
}
|
||
|
||
/**
|
||
* 获å<C2B7>–微信商户支付信æ<C2A1>¯
|
||
*
|
||
* @return
|
||
*/
|
||
public WeixinPayAccount getPayAccount() {
|
||
return this.settings.getWeixinPayAccount();
|
||
}
|
||
|
||
/**
|
||
* 统一下å<E280B9>•接å<C2A5>£</br>
|
||
* 除被扫支付场景以外,商户系统先调用该接å<C2A5>£åœ¨å¾®ä¿¡æ”¯ä»˜æœ<C3A6>务å<C2A1>Žå<C5BD>°ç”Ÿæˆ<C3A6>预支付交易å<E2809C>•,返回æ£ç¡®çš„预支付交易回è¯<C3A8>æ ‡è¯†å<E280A0>Žå†<C3A5>按扫ç <C3A7>ã€<C3A3>JSAPI
|
||
* ã€<C3A3>APPç‰ä¸<C3A4>å<EFBFBD>Œåœºæ™¯ç”Ÿæˆ<C3A6>交易串调起支付。
|
||
*
|
||
* @param payPackage
|
||
* 包å<E280A6>«è®¢å<C2A2>•ä¿¡æ<C2A1>¯çš„对象
|
||
* @see com.foxinmy.weixin4j.api.PayApi
|
||
* @see com.foxinmy.weixin4j.payment.mch.MchPayPackage
|
||
* @see com.foxinmy.weixin4j.payment.mch.PrePay
|
||
* @see <a href=
|
||
* "http://pay.weixin.qq.com/wiki/doc/api/jsapi.php?chapter=9_1">统一下å<E280B9>•接å<C2A5>£
|
||
* </a>
|
||
* @return 预支付对象
|
||
*/
|
||
public PrePay createPrePay(MchPayPackage payPackage) throws WeixinException {
|
||
return payApi.createPrePay(payPackage);
|
||
}
|
||
|
||
/**
|
||
* 创建支付请求对象
|
||
*
|
||
* @param payPackage
|
||
* 支付详情
|
||
* @return 支付请求对象
|
||
* @see com.foxinmy.weixin4j.api.PayApi
|
||
* @see com.foxinmy.weixin4j.payment.mch.JSAPIPayRequest JS支付
|
||
* @see com.foxinmy.weixin4j.payment.mch.NATIVEPayRequest 扫ç <C3A7>支付
|
||
* @see com.foxinmy.weixin4j.payment.mch.MICROPayRequest 刷å<C2B7>¡æ”¯ä»˜
|
||
* @see com.foxinmy.weixin4j.payment.mch.APPPayRequest APP支付
|
||
* @see com.foxinmy.weixin4j.payment.mch.WAPPayRequest WAP支付
|
||
* @throws WeixinException
|
||
*/
|
||
public MchPayRequest createPayRequest(MchPayPackage payPackage)
|
||
throws WeixinException {
|
||
return payApi.createPayRequest(payPackage);
|
||
}
|
||
|
||
/**
|
||
* 创建支付请求对象ã€<C3A3>完整å<C2B4>‚数】
|
||
*
|
||
* @param body
|
||
* 商å“<C3A5>æ<EFBFBD><C3A6>è¿° <font color="red">必填项</font>
|
||
* @param detail
|
||
* 商å“<C3A5>å<EFBFBD><C3A5>称明细列表 é<>žå¿…填项
|
||
* @param outTradeNo
|
||
* 商户内部唯一订å<C2A2>•å<E280A2>· <font color="red">必填项</font>
|
||
* @param totalFee
|
||
* 商å“<C3A5>总é¢<C3A9> å<>•ä½<C3A4>å…ƒ <font color="red">必填项</font>
|
||
* @param notifyUrl
|
||
* 支付回调URL <font color="red">必填项</font>
|
||
* @param createIp
|
||
* 订å<C2A2>•生æˆ<C3A6>的机器IP <font color="red">必填项</font>
|
||
* @param tradeType
|
||
* 交易类型 <font color="red">必填项</font>
|
||
* @param openId
|
||
* 用户ID <font color="red">tradeType=JSAPI时必填</font>
|
||
* @param productId
|
||
* 产å“<C3A5>ID <font color="red">tradeType=NATIVEæ—¶å¿…å¡«</font>
|
||
* @param attach
|
||
* é™„åŠ æ•°æ<C2B0>®ï¼Œåœ¨æŸ¥è¯¢API和支付通知ä¸åŽŸæ ·è¿”å›žï¼Œè¯¥å—æ®µä¸»è¦<C3A8>用于商户æ<C2B7>ºå¸¦è®¢å<C2A2>•的自定义数æ<C2B0>® é<>žå¿…填项
|
||
* @param timeStart
|
||
* 订å<C2A2>•生æˆ<C3A6>æ—¶é—´ï¼Œæ ¼å¼<C3A5>为yyyyMMddHHmmss é<>žå¿…填项
|
||
* @param timeExpire
|
||
* 订å<C2A2>•å¤±æ•ˆæ—¶é—´ï¼Œæ ¼å¼<C3A5>为yyyyMMddHHmmss;注æ„<C3A6>:最çŸå¤±æ•ˆæ—¶é—´é—´éš”必须大于5分钟 é<>žå¿…填项
|
||
* @param goodsTag
|
||
* 商å“<C3A5>æ ‡è®°ï¼Œä»£é‡‘åˆ¸æˆ–ç«‹å‡<C3A5>ä¼˜æƒ åŠŸèƒ½çš„å<E2809E>‚æ•° é<>žå¿…填项
|
||
* @param limitPay
|
||
* 指定支付方å¼<C3A5>:no_credit--指定ä¸<C3A4>能使用信用å<C2A8>¡æ”¯ä»˜ é<>žå¿…填项
|
||
* @param subOpenId
|
||
* 用户在å<C3A5>商户appidä¸‹çš„å”¯ä¸€æ ‡è¯† é<>žå¿…å¡«
|
||
* openidå’Œsub_openidå<64>¯ä»¥é€‰ä¼ å…¶ä¸ä¹‹ä¸€ï¼Œå¦‚æžœé€‰æ‹©ä¼ sub_openid ,åˆ™å¿…é¡»ä¼ sub_appid
|
||
* @see com.foxinmy.weixin4j.api.PayApi
|
||
* @see com.foxinmy.weixin4j.payment.mch.JSAPIPayRequest JS支付
|
||
* @see com.foxinmy.weixin4j.payment.mch.NATIVEPayRequest 扫ç <C3A7>支付
|
||
* @see com.foxinmy.weixin4j.payment.mch.MICROPayRequest 刷å<C2B7>¡æ”¯ä»˜
|
||
* @see com.foxinmy.weixin4j.payment.mch.APPPayRequest APP支付
|
||
* @see com.foxinmy.weixin4j.payment.mch.WAPPayRequest WAP支付
|
||
* @throws WeixinException
|
||
*/
|
||
public MchPayRequest createPayRequest(String body, String detail,
|
||
String outTradeNo, double totalFee, String notifyUrl,
|
||
String createIp, TradeType tradeType, String openId,
|
||
String productId, String attach, Date timeStart, Date timeExpire,
|
||
String goodsTag, String limitPay, String subOpenId)
|
||
throws WeixinException {
|
||
return payApi.createPayRequest(body, detail, outTradeNo, totalFee,
|
||
notifyUrl, createIp, tradeType, openId, productId, attach,
|
||
timeStart, timeExpire, goodsTag, limitPay, subOpenId);
|
||
}
|
||
|
||
/**
|
||
* 创建JSAPI支付请求对象
|
||
*
|
||
* @param openId
|
||
* 用户ID
|
||
* @param body
|
||
* 订å<C2A2>•æ<E280A2><C3A6>è¿°
|
||
* @param outTradeNo
|
||
* 订å<C2A2>•å<E280A2>·
|
||
* @param totalFee
|
||
* 订å<C2A2>•总é¢<C3A9> 按实际金é¢<C3A9>ä¼ å…¥å<C2A5>³å<C2B3>¯(å…ƒ) æž„é€ å‡½æ•°ä¼šè½¬æ<C2AC>¢ä¸ºåˆ†
|
||
* @param notifyUrl
|
||
* 支付通知地å<C2B0>€
|
||
* @param createIp
|
||
* ip地å<C2B0>€
|
||
* @param attach
|
||
* é™„åŠ æ•°æ<C2B0>® é<>žå¿…å¡«
|
||
* @see com.foxinmy.weixin4j.api.PayApi
|
||
* @see com.foxinmy.weixin4j.payment.mch.JSAPIPayRequest
|
||
* @return JSAPI支付对象
|
||
* @throws WeixinException
|
||
*/
|
||
public MchPayRequest createJSPayRequest(String openId, String body,
|
||
String outTradeNo, double totalFee, String notifyUrl,
|
||
String createIp, String attach) throws WeixinException {
|
||
return payApi.createJSPayRequest(openId, body, outTradeNo, totalFee,
|
||
notifyUrl, createIp, attach);
|
||
}
|
||
|
||
/**
|
||
* <p>
|
||
* 生æˆ<C3A6>编辑地å<C2B0>€è¯·æ±‚
|
||
* </p>
|
||
*
|
||
* err_msg edit_address:ok获å<C2B7>–编辑收货地å<C2B0>€æˆ<C3A6>功</br> edit_address:fail获å<C2B7>–编辑收货地å<C2B0>€å¤±è´¥</br>
|
||
* userName 收货人姓å<E2809C><C3A5></br> telNumber 收货人电è¯<C3A8></br> addressPostalCode 邮编</br>
|
||
* proviceFirstStageName å›½æ ‡æ”¶è´§åœ°å<C2B0>€ç¬¬ä¸€çº§åœ°å<C2B0>€</br> addressCitySecondStageName
|
||
* å›½æ ‡æ”¶è´§åœ°å<C2B0>€ç¬¬äºŒçº§åœ°å<C2B0>€</br> addressCountiesThirdStageName å›½æ ‡æ”¶è´§åœ°å<C2B0>€ç¬¬ä¸‰çº§åœ°å<C2B0>€</br>
|
||
* addressDetailInfo 详细收货地å<C2B0>€ä¿¡æ<C2A1>¯</br> nationalCode 收货地å<C2B0>€å›½å®¶ç <C3A7></br>
|
||
*
|
||
* @param url
|
||
* 当å‰<C3A5>访问页的URL
|
||
* @param oauthToken
|
||
* oauth授æ<CB86>ƒæ—¶äº§ç”Ÿçš„token
|
||
* @see com.foxinmy.weixin4j.api.PayApi
|
||
* @see <a href=
|
||
* "https://pay.weixin.qq.com/wiki/doc/api/jsapi.php?chapter=7_8&index=7">
|
||
* 收货地å<C2B0>€å…±äº«</a>
|
||
* @return 编辑地å<C2B0>€è¯·æ±‚JSON串
|
||
*/
|
||
public String createAddressRequestJSON(String url, String oauthToken) {
|
||
return payApi.createAddressRequestJSON(url, oauthToken);
|
||
}
|
||
|
||
/**
|
||
* 创建Native支付(扫ç <C3A7>支付)链接ã€<C3A3>模å¼<C3A5>一】
|
||
*
|
||
* @param productId
|
||
* 与订å<C2A2>•IDç‰ä»·
|
||
* @return 支付链接
|
||
* @see com.foxinmy.weixin4j.api.PayApi
|
||
* @see <a href=
|
||
* "https://pay.weixin.qq.com/wiki/doc/api/native.php?chapter=6_1">扫ç <C3A7>支付
|
||
* </a>
|
||
* @see <a href=
|
||
* "https://pay.weixin.qq.com/wiki/doc/api/native.php?chapter=6_4">模å¼<C3A5>一
|
||
* </a>
|
||
*/
|
||
public String createNativePayRequestURL(String productId) {
|
||
return payApi.createNativePayRequestURL(productId);
|
||
}
|
||
|
||
/**
|
||
* 创建Native支付(扫ç <C3A7>支付)回调对象ã€<C3A3>模å¼<C3A5>一】
|
||
*
|
||
* @param productId
|
||
* 商å“<C3A5>ID
|
||
* @param body
|
||
* 商å“<C3A5>æ<EFBFBD><C3A6>è¿°
|
||
* @param outTradeNo
|
||
* 商户内部唯一订å<C2A2>•å<E280A2>·
|
||
* @param totalFee
|
||
* 商å“<C3A5>总é¢<C3A9> å<>•ä½<C3A4>å…ƒ
|
||
* @param notifyUrl
|
||
* 支付回调URL
|
||
* @param createIp
|
||
* 订å<C2A2>•生æˆ<C3A6>的机器 IP
|
||
* @param attach
|
||
* é™„åŠ æ•°æ<C2B0>® é<>žå¿…å¡«
|
||
* @return Native回调对象
|
||
* @see com.foxinmy.weixin4j.api.PayApi
|
||
* @see com.foxinmy.weixin4j.payment.mch.NativePayResponse
|
||
* @see <a href=
|
||
* "https://pay.weixin.qq.com/wiki/doc/api/native.php?chapter=6_1">扫ç <C3A7>支付
|
||
* </a>
|
||
* @see <a href=
|
||
* "https://pay.weixin.qq.com/wiki/doc/api/native.php?chapter=6_4">模å¼<C3A5>一
|
||
* </a>
|
||
* @throws WeixinException
|
||
*/
|
||
public NativePayResponse createNativePayResponse(String productId,
|
||
String body, String outTradeNo, double totalFee, String notifyUrl,
|
||
String createIp, String attach) throws WeixinException {
|
||
return payApi.createNativePayResponse(productId, body, outTradeNo,
|
||
totalFee, notifyUrl, createIp, attach);
|
||
}
|
||
|
||
/**
|
||
* 创建Native支付(扫ç <C3A7>支付)链接ã€<C3A3>模å¼<C3A5>二】
|
||
*
|
||
* @param productId
|
||
* 商å“<C3A5>ID
|
||
* @param body
|
||
* 商å“<C3A5>æ<EFBFBD><C3A6>è¿°
|
||
* @param outTradeNo
|
||
* 商户内部唯一订å<C2A2>•å<E280A2>·
|
||
* @param totalFee
|
||
* 商å“<C3A5>总é¢<C3A9> å<>•ä½<C3A4>å…ƒ
|
||
* @param notifyUrl
|
||
* 支付回调URL
|
||
* @param createIp
|
||
* 订å<C2A2>•生æˆ<C3A6>的机器 IP
|
||
* @param attach
|
||
* é™„åŠ æ•°æ<C2B0>® é<>žå¿…å¡«
|
||
* @return Native支付对象
|
||
* @see com.foxinmy.weixin4j.api.PayApi
|
||
* @see com.foxinmy.weixin4j.payment.mch.NATIVEPayRequest
|
||
* @see <a href=
|
||
* "https://pay.weixin.qq.com/wiki/doc/api/native.php?chapter=6_1">扫ç <C3A7>支付
|
||
* </a>
|
||
* @see <a href=
|
||
* "https://pay.weixin.qq.com/wiki/doc/api/native.php?chapter=6_5">模å¼<C3A5>二
|
||
* </a>
|
||
* @throws WeixinException
|
||
*/
|
||
public MchPayRequest createNativePayRequest(String productId, String body,
|
||
String outTradeNo, double totalFee, String notifyUrl,
|
||
String createIp, String attach) throws WeixinException {
|
||
return payApi.createNativePayRequest(productId, body, outTradeNo,
|
||
totalFee, notifyUrl, createIp, attach);
|
||
}
|
||
|
||
/**
|
||
* 创建APP支付请求对象
|
||
*
|
||
* @param body
|
||
* 商å“<C3A5>æ<EFBFBD><C3A6>è¿°
|
||
* @param outTradeNo
|
||
* 商户内部唯一订å<C2A2>•å<E280A2>·
|
||
* @param totalFee
|
||
* 商å“<C3A5>总é¢<C3A9> å<>•ä½<C3A4>å…ƒ
|
||
* @param notifyUrl
|
||
* 支付回调URL
|
||
* @param createIp
|
||
* 订å<C2A2>•生æˆ<C3A6>的机器 IP
|
||
* @param attach
|
||
* é™„åŠ æ•°æ<C2B0>® é<>žå¿…å¡«
|
||
* @return APP支付对象
|
||
* @see com.foxinmy.weixin4j.api.PayApi
|
||
* @see com.foxinmy.weixin4j.payment.mch.APPPayRequest
|
||
* @see <a href=
|
||
* "https://pay.weixin.qq.com/wiki/doc/api/app/app.php?chapter=8_1">
|
||
* APP支付</a>
|
||
* @throws WeixinException
|
||
*/
|
||
public MchPayRequest createAppPayRequest(String body, String outTradeNo,
|
||
double totalFee, String notifyUrl, String createIp, String attach)
|
||
throws WeixinException {
|
||
return payApi.createAppPayRequest(body, outTradeNo, totalFee,
|
||
notifyUrl, createIp, attach);
|
||
}
|
||
|
||
/**
|
||
* 创建WAP支付请求对象
|
||
*
|
||
* @param body
|
||
* 商å“<C3A5>æ<EFBFBD><C3A6>è¿°
|
||
* @param outTradeNo
|
||
* 商户内部唯一订å<C2A2>•å<E280A2>·
|
||
* @param totalFee
|
||
* 商å“<C3A5>总é¢<C3A9> å<>•ä½<C3A4>å…ƒ
|
||
* @param notifyUrl
|
||
* 支付回调URL
|
||
* @param createIp
|
||
* 订å<C2A2>•生æˆ<C3A6>的机器 IP
|
||
* @param attach
|
||
* é™„åŠ æ•°æ<C2B0>® é<>žå¿…å¡«
|
||
* @return WAP支付对象
|
||
* @see com.foxinmy.weixin4j.api.PayApi
|
||
* @see com.foxinmy.weixin4j.payment.mch.WAPPayRequest
|
||
* @see <a href=
|
||
* "https://pay.weixin.qq.com/wiki/doc/api/wap.php?chapter=15_1">WAP支付
|
||
* </a>
|
||
* @throws WeixinException
|
||
*/
|
||
public MchPayRequest createWAPPayRequest(String body, String outTradeNo,
|
||
double totalFee, String notifyUrl, String createIp, String attach)
|
||
throws WeixinException {
|
||
return payApi.createWAPPayRequest(body, outTradeNo, totalFee,
|
||
notifyUrl, createIp, attach);
|
||
}
|
||
|
||
/**
|
||
* æ<><C3A6>交被扫支付
|
||
*
|
||
* @param authCode
|
||
* 扫ç <C3A7>支付授æ<CB86>ƒç <C3A7> ,设备读å<C2BB>–用户微信ä¸çš„æ<E2809E>¡ç <C3A7>或者二维ç <C3A7>ä¿¡æ<C2A1>¯
|
||
* @param body
|
||
* 商å“<C3A5>æ<EFBFBD><C3A6>è¿°
|
||
* @param outTradeNo
|
||
* 商户内部唯一订å<C2A2>•å<E280A2>·
|
||
* @param totalFee
|
||
* 商å“<C3A5>总é¢<C3A9> å<>•ä½<C3A4>å…ƒ
|
||
* @param createIp
|
||
* 订å<C2A2>•生æˆ<C3A6>的机器 IP
|
||
* @param attach
|
||
* é™„åŠ æ•°æ<C2B0>® é<>žå¿…å¡«
|
||
* @return 支付的订å<C2A2>•ä¿¡æ<C2A1>¯
|
||
* @see com.foxinmy.weixin4j.api.PayApi
|
||
* @see com.foxinmy.weixin4j.payment.mch.MICROPayRequest
|
||
* @see com.foxinmy.weixin4j.payment.mch.Order
|
||
* @see <a href=
|
||
* "http://pay.weixin.qq.com/wiki/doc/api/micropay.php?chapter=9_10">
|
||
* æ<><C3A6>交被扫支付API</a>
|
||
* @throws WeixinException
|
||
*/
|
||
public MchPayRequest createMICROPayRequest(String authCode, String body,
|
||
String outTradeNo, double totalFee, String createIp, String attach)
|
||
throws WeixinException {
|
||
return payApi.createMICROPayRequest(authCode, body, outTradeNo,
|
||
totalFee, createIp, attach);
|
||
}
|
||
|
||
/**
|
||
* 订å<C2A2>•查询
|
||
* <p>
|
||
* 当商户å<C2B7>Žå<C5BD>°ã€<C3A3>网络ã€<C3A3>æœ<C3A6>务器ç‰å‡ºçŽ°å¼‚å¸¸ï¼Œå•†æˆ·ç³»ç»Ÿæœ€ç»ˆæœªæŽ¥æ”¶åˆ°æ”¯ä»˜é€šçŸ¥ï¼›</br> 调用支付接å<C2A5>£å<C2A3>Žï¼Œè¿”回系统错误或未知交易状æ€<C3A6>情况;</br>
|
||
* 调用被扫支付API,返回USERPAYING的状æ€<C3A6>ï¼›</br> 调用关å<C2B3>•或撤销接å<C2A5>£API之å‰<C3A5>,需确认支付状æ€<C3A6>ï¼›
|
||
* </P>
|
||
*
|
||
* @param idQuery
|
||
* 商户系统内部的订å<C2A2>•å<E280A2>·, transaction_idã€<C3A3>out_trade_no 二 选一,如果å<C593>Œæ—¶å˜åœ¨ä¼˜å…ˆçº§:
|
||
* transaction_id> out_trade_no
|
||
* @since V3
|
||
* @see com.foxinmy.weixin4j.payment.mch.Order
|
||
* @see com.foxinmy.weixin4j.api.PayApi
|
||
* @see <a href=
|
||
* "http://pay.weixin.qq.com/wiki/doc/api/jsapi.php?chapter=9_2">
|
||
* 订å<C2A2>•查询API</a>
|
||
* @return 订å<C2A2>•详情
|
||
* @throws WeixinException
|
||
*/
|
||
public Order queryOrder(IdQuery idQuery) throws WeixinException {
|
||
return payApi.queryOrder(idQuery);
|
||
}
|
||
|
||
/**
|
||
* 申请退款(请求需è¦<C3A8>å<EFBFBD>Œå<C592>‘è¯<C3A8>书)</br>
|
||
* <p>
|
||
* 当交易å<E2809C>‘生之å<E280B9>Žä¸€æ®µæ—¶é—´å†…,由于买家或者å<E280A6>–å®¶çš„åŽŸå› éœ€è¦<C3A8>退款时,å<C592>–å®¶å<C2B6>¯ä»¥é€šè¿‡é€€æ¬¾æŽ¥å<C2A5>£å°†æ”¯ä»˜æ¬¾é€€è¿˜ç»™ä¹°å®¶ï¼Œå¾®ä¿¡æ”¯ä»˜å°†åœ¨æ”¶åˆ°é€€æ¬¾è¯·æ±‚并且验è¯<C3A8>æˆ<C3A6>功之å<E280B9>Žï¼Œ
|
||
* 按照退款规则将支付款按原路退到买家å¸<C3A5>å<EFBFBD>·ä¸Šã€‚
|
||
* </p>
|
||
* <p style="color:red">
|
||
* 1.交易时间超过å<E280A1>Šå¹´çš„订å<C2A2>•æ— æ³•æ<E280A2><C3A6>交退款;
|
||
* 2.微信支付退款支æŒ<C3A6>å<EFBFBD>•笔交易分多次退款,多次退款需è¦<C3A8>æ<EFBFBD><C3A6>交原支付订å<C2A2>•的商户订å<C2A2>•å<E280A2>·å’Œè®¾ç½®ä¸<C3A4>å<EFBFBD>Œçš„退款å<C2BE>•å<E280A2>·ã€‚一笔退款失败å<C2A5>Žé‡<C3A9>æ–°æ<C2B0><C3A6>交
|
||
* ,è¦<C3A8>采用原æ<C5B8>¥çš„退款å<C2BE>•å<E280A2>·ã€‚总退款金é¢<C3A9>ä¸<C3A4>能超过用户实际支付金é¢<C3A9>。
|
||
* </p>
|
||
*
|
||
* @param certificate
|
||
* å<>Žç¼€ä¸º*.p12çš„è¯<C3A8>书文件
|
||
* @param idQuery
|
||
* 商户系统内部的订å<C2A2>•å<E280A2>·, transaction_id ã€<C3A3> out_trade_no 二选一,如果å<C593>Œæ—¶å˜åœ¨ä¼˜å…ˆçº§:
|
||
* transaction_id> out_trade_no
|
||
* @param outRefundNo
|
||
* 商户系统内部的退款å<C2BE>•å<E280A2>·,商 户系统内部唯一,å<>Œä¸€é€€æ¬¾å<C2BE>•å<E280A2>·å¤šæ¬¡è¯·æ±‚å<E2809A>ªé€€ä¸€ç¬”
|
||
* @param totalFee
|
||
* 订å<C2A2>•总金é¢<C3A9>,å<>•ä½<C3A4>为元
|
||
* @param refundFee
|
||
* 退款总金é¢<C3A9>,å<>•ä½<C3A4>为元,å<>¯ä»¥å<C2A5>šéƒ¨åˆ†é€€æ¬¾
|
||
* @param refundFeeType
|
||
* è´§å¸<C3A5>类型,符å<C2A6>ˆISO 4217æ ‡å‡†çš„ä¸‰ä½<C3A4>å—æ¯<C3A6>代ç <C3A7>,默认人民å¸<C3A5>:CNY
|
||
* @param opUserId
|
||
* æ“<C3A6>作员å¸<C3A5>å<EFBFBD>·, 默认为商户å<C2B7>·
|
||
*
|
||
* @return 退款申请结果
|
||
* @see com.foxinmy.weixin4j.payment.mch.RefundResult
|
||
* @see com.foxinmy.weixin4j.api.PayApi
|
||
* @see <a href=
|
||
* "http://pay.weixin.qq.com/wiki/doc/api/jsapi.php?chapter=9_4">
|
||
* 申请退款API</a>
|
||
* @since V3
|
||
* @throws WeixinException
|
||
*/
|
||
public RefundResult applyRefund(InputStream certificate, IdQuery idQuery,
|
||
String outRefundNo, double totalFee, double refundFee,
|
||
CurrencyType refundFeeType, String opUserId) throws WeixinException {
|
||
return payApi.applyRefund(certificate, idQuery, outRefundNo, totalFee,
|
||
refundFee, refundFeeType, opUserId);
|
||
}
|
||
|
||
/**
|
||
* 退款申请(å…¨é¢<C3A9>退款)
|
||
*
|
||
* @throws IOException
|
||
*
|
||
* @see {@link #applyRefund(InputStream, IdQuery, String, double, double, String,CurrencyType)}
|
||
*/
|
||
public RefundResult applyRefund(IdQuery idQuery, String outRefundNo,
|
||
double totalFee) throws WeixinException, IOException {
|
||
return payApi.applyRefund(
|
||
new FileInputStream(settings.getCertificateFile0()), idQuery,
|
||
outRefundNo, totalFee);
|
||
}
|
||
|
||
/**
|
||
* 退款查询
|
||
* <p>
|
||
* æ<><C3A6>交退款申请å<C2B7>Žï¼Œé€šè¿‡è°ƒç”¨è¯¥æŽ¥å<C2A5>£æŸ¥è¯¢é€€æ¬¾çжæ€<C3A6>。退款有一定延时,用零钱支付的退款20分钟内到账,银行å<C592>¡æ”¯ä»˜çš„退款3个工作日å<C2A5>Žé‡<C3A9>新查询退款状æ€<C3A6>。
|
||
* </p>
|
||
*
|
||
* @param idQuery
|
||
* å<>•å<E280A2>· refund_idã€<C3A3>out_refund_noã€<C3A3> out_trade_no ã€<C3A3> transaction_id
|
||
* 四个å<C2AA>‚数必填一个,优先级为:
|
||
* refund_id>out_refund_no>transaction_id>out_trade_no
|
||
* @return 退款记录
|
||
* @see com.foxinmy.weixin4j.api.PayApi
|
||
* @see com.foxinmy.weixin4j.payment.mch.RefundRecord
|
||
* @see <a href=
|
||
* "http://pay.weixin.qq.com/wiki/doc/api/jsapi.php?chapter=9_5">
|
||
* 退款查询API</a>
|
||
* @since V3
|
||
* @throws WeixinException
|
||
*/
|
||
public RefundRecord queryRefund(IdQuery idQuery) throws WeixinException {
|
||
return payApi.queryRefund(idQuery);
|
||
}
|
||
|
||
/**
|
||
* 下载对账å<C2A6>•<br>
|
||
* 1.微信侧未æˆ<C3A6>功下å<E280B9>•的交易ä¸<C3A4>会出现在对账å<C2A6>•ä¸ã€‚支付æˆ<C3A6>功å<C5B8>Žæ’¤é”€çš„交易会出现在对账 å<>•ä¸,跟原支付å<CB9C>•订å<C2A2>•å<E280A2>·ä¸€è‡´,bill_type 为
|
||
* REVOKED;<br>
|
||
* 2.微信在次日 9 点å<C2B9>¯åŠ¨ç”Ÿæˆ<C3A6>å‰<C3A5>一天的对账å<C2A6>•,建议商户 9 点å<C2B9>Šå<C5A0>Žå†<C3A5>获å<C2B7>–;<br>
|
||
* 3.对账å<C2A6>•䏿¶‰å<E280B0>Šé‡‘é¢<C3A9>çš„å—æ®µå<C2B5>•ä½<C3A4>为“元â€<C3A2>。<br>
|
||
*
|
||
* @param billDate
|
||
* 下载对账å<C2A6>•的日期
|
||
* @param billType
|
||
* 下载对账å<C2A6>•的类型 ALL,返回当日所有订å<C2A2>•ä¿¡æ<C2A1>¯, 默认值 SUCCESS,返回当日æˆ<C3A6>功支付的订å<C2A2>•
|
||
* REFUND,返回当日退款订å<C2A2>•
|
||
* @return excelè¡¨æ ¼
|
||
* @since V2 & V3
|
||
* @see com.foxinmy.weixin4j.api.PayApi
|
||
* @see <a href=
|
||
* "http://pay.weixin.qq.com/wiki/doc/api/jsapi.php?chapter=9_6">
|
||
* 下载对账å<C2A6>•API</a>
|
||
* @throws WeixinException
|
||
*/
|
||
public File downloadBill(Date billDate, BillType billType)
|
||
throws WeixinException {
|
||
return payApi.downloadBill(billDate, billType, settings.getTmpdir0());
|
||
}
|
||
|
||
/**
|
||
* 冲æ£è®¢å<C2A2>•(需è¦<C3A8>è¯<C3A8>书)</br> 当支付返回失败,或收银系统超时需è¦<C3A8>å<EFBFBD>–消交易,å<>¯ä»¥è°ƒç”¨è¯¥æŽ¥å<C2A5>£</br> 接å<C2A5>£é€»è¾‘:支
|
||
* 付失败的关å<C2B3>•,支付æˆ<C3A6>功的撤销支付</br> <font color="red">7天以内的å<E2809E>•å<E280A2>¯æ’¤é”€,å…¶ä»–æ£å¸¸æ”¯ä»˜çš„å<E2809E>•
|
||
* 如需实现相å<C2B8>ŒåŠŸèƒ½è¯·è°ƒç”¨é€€æ¬¾æŽ¥å<C2A5>£</font></br> <font
|
||
* color="red">调用扣款接å<C2A5>£å<C2A3>Žè¯·å‹¿ç«‹å<E280B9>³è°ƒç”¨æ’¤é”€,需è¦<C3A8>ç‰å¾…5秒以上。先调用查å<C2A5>•接å<C2A5>£,如果没有确切的返回,å†<C3A5>调用撤销</font> </br>
|
||
*
|
||
* @param certificate
|
||
* è¯<C3A8>书文件(V2版本å<C2AC>Žç¼€ä¸º*.pfx,V3版本å<C2AC>Žç¼€ä¸º*.p12)
|
||
* @param idQuery
|
||
* 商户系统内部的订å<C2A2>•å<E280A2>·, transaction_id ã€<C3A3> out_trade_no 二选一,如果å<C593>Œæ—¶å˜åœ¨ä¼˜å…ˆçº§:
|
||
* transaction_id> out_trade_no
|
||
* @return 撤销结果
|
||
* @see com.foxinmy.weixin4j.api.PayApi
|
||
* @since V3
|
||
* @throws WeixinException
|
||
*/
|
||
public MerchantResult reverseOrder(InputStream certificate, IdQuery idQuery)
|
||
throws WeixinException {
|
||
return payApi.reverseOrder(certificate, idQuery);
|
||
}
|
||
|
||
/**
|
||
* å†²æ£æ’¤é”€
|
||
*
|
||
* @param idQuery
|
||
* transaction_idã€<C3A3>out_trade_no 二选一
|
||
* @return 撤销结果
|
||
* @see {@link #reverseOrder(InputStream, IdQuery)}
|
||
* @throws WeixinException
|
||
* @throws IOException
|
||
*/
|
||
public MerchantResult reverseOrder(IdQuery idQuery) throws WeixinException,
|
||
IOException {
|
||
return payApi.reverseOrder(
|
||
new FileInputStream(settings.getCertificateFile0()), idQuery);
|
||
}
|
||
|
||
/**
|
||
* å…³é—订å<C2A2>•
|
||
* <p>
|
||
* 商户订å<C2A2>•支付失败需è¦<C3A8>生æˆ<C3A6>æ–°å<C2B0>•å<E280A2>·é‡<C3A9>æ–°å<C2B0>‘起支付,è¦<C3A8>对原订å<C2A2>•å<E280A2>·è°ƒç”¨å…³å<C2B3>•,é<C592>¿å…<C3A5>é‡<C3A9>å¤<C3A5>支付;系统下å<E280B9>•å<E280A2>Žï¼Œç”¨æˆ·æ”¯ä»˜è¶…时,系统退出ä¸<C3A4>å†<C3A5>å<EFBFBD>—ç<E28094>†ï¼Œé<C592>¿å…<C3A5>用户继ç»
|
||
* ,请调用关å<C2B3>•接å<C2A5>£,如果关å<C2B3>•失败,返回已完 æˆ<C3A6>支付请按æ£å¸¸æ”¯ä»˜å¤„ç<E2809E>†ã€‚如果出现银行掉å<E280B0>•,调用关å<C2B3>•æˆ<C3A6>功å<C5B8>Ž,微信å<C2A1>Žå<C5BD>°ä¼šä¸»åЍå<C2A8>‘起退款。
|
||
* </p>
|
||
*
|
||
* @param outTradeNo
|
||
* 商户系统内部的订å<C2A2>•å<E280A2>·
|
||
* @return 执行结果
|
||
* @see com.foxinmy.weixin4j.api.PayApi
|
||
* @since V3
|
||
* @throws WeixinException
|
||
* @see <a href=
|
||
* "http://pay.weixin.qq.com/wiki/doc/api/jsapi.php?chapter=9_3">
|
||
* å…³é—订å<C2A2>•API</a>
|
||
*/
|
||
public MerchantResult closeOrder(String outTradeNo) throws WeixinException {
|
||
return payApi.closeOrder(outTradeNo);
|
||
}
|
||
|
||
/**
|
||
* native支付URL转çŸé“¾æŽ¥:用于扫ç <C3A7>原生支付模å¼<C3A5>一ä¸çš„二维ç <C3A7>链接转æˆ<C3A6>çŸé“¾æŽ¥(weixin://wxpay/s/XXXXXX),å‡<C3A5>å°<C3A5>二维ç <C3A7>æ•°æ<C2B0>®é‡<C3A9>
|
||
* ,æ<C592><C3A6>å<EFBFBD>‡æ‰«æ<C2AB><C3A6>速度和精确度。
|
||
*
|
||
* @param url
|
||
* 具有nativeæ ‡è¯†çš„æ”¯ä»˜URL
|
||
* @return 转æ<C2AC>¢å<C2A2>Žçš„çŸé“¾æŽ¥
|
||
* @see com.foxinmy.weixin4j.api.PayApi
|
||
* @see <a href=
|
||
* "http://pay.weixin.qq.com/wiki/doc/api/jsapi.php?chapter=9_9">
|
||
* 转æ<C2AC>¢çŸé“¾æŽ¥API</a>
|
||
* @since V3
|
||
* @throws WeixinException
|
||
*/
|
||
public String getPayShorturl(String url) throws WeixinException {
|
||
return payApi.getShorturl(url);
|
||
}
|
||
|
||
/**
|
||
* 接å<C2A5>£ä¸ŠæŠ¥
|
||
*
|
||
* @param interfaceUrl
|
||
* 上报对应的接å<C2A5>£çš„完整 URL, 类似: https://api.mch.weixin.q
|
||
* q.com/pay/unifiedorder
|
||
* @param executeTime
|
||
* 接å<C2A5>£è€—时情况,å<>•ä½<C3A4>为毫秒
|
||
* @param outTradeNo
|
||
* 商户系统内部的订å<C2A2>•å<E280A2>·,商 户å<C2B7>¯ä»¥åœ¨ä¸ŠæŠ¥æ—¶æ<C2B6><C3A6>供相关商户订å<C2A2>•å<E280A2>·æ–¹ä¾¿å¾®ä¿¡æ”¯ä»˜æ›´å¥½ çš„æ<E2809E><C3A6>高æœ<C3A6>务质é‡<C3A9>。
|
||
* @param ip
|
||
* å<>‘起接å<C2A5>£è°ƒç”¨æ—¶çš„æœºå™¨ IP
|
||
* @param time
|
||
* 商户调用该接å<C2A5>£æ—¶å•†æˆ·è‡ªå·± 系统的时间
|
||
* @param returnXml
|
||
* 调用接å<C2A5>£è¿”回的基本数æ<C2B0>®
|
||
* @return 处ç<E2809E>†ç»“æžœ
|
||
* @see com.foxinmy.weixin4j.api.PayApi
|
||
* @see <a href=
|
||
* "http://pay.weixin.qq.com/wiki/doc/api/jsapi.php?chapter=9_8">
|
||
* 接å<C2A5>£æµ‹è¯•上报API</a>
|
||
* @throws WeixinException
|
||
*/
|
||
public XmlResult interfaceReport(String interfaceUrl, int executeTime,
|
||
String outTradeNo, String ip, Date time, XmlResult returnXml)
|
||
throws WeixinException {
|
||
return payApi.interfaceReport(interfaceUrl, executeTime, outTradeNo,
|
||
ip, time, returnXml);
|
||
}
|
||
|
||
/**
|
||
* å<>‘放代金券(需è¦<C3A8>è¯<C3A8>书)
|
||
*
|
||
* @param certificate
|
||
* å<>Žç¼€ä¸º*.p12çš„è¯<C3A8>书文件
|
||
* @param couponStockId
|
||
* 代金券批次id
|
||
* @param partnerTradeNo
|
||
* 商户å<C2B7>‘æ”¾å‡æ<C2AD>®å<C2AE>·ï¼ˆæ ¼å¼<C3A5>:商户id+日期+æµ<C3A6>æ°´å<C2B4>·ï¼‰ï¼Œå•†æˆ·ä¾§éœ€ä¿<C3A4>æŒ<C3A6>唯一性
|
||
* @param openId
|
||
* 用户的openid
|
||
* @param opUserId
|
||
* æ“<C3A6>作员å¸<C3A5>å<EFBFBD>·, 默认为商户å<C2B7>· å<>¯åœ¨å•†æˆ·å¹³å<C2B3>°é…<C3A9>ç½®æ“<C3A6>作员对应的apiæ<69>ƒé™<C3A9> å<>¯ä¸ºç©º
|
||
* @return å<>‘放结果
|
||
* @see com.foxinmy.weixin4j.api.CouponApi
|
||
* @see com.foxinmy.weixin4j.payment.coupon.CouponResult
|
||
* @see <a href=
|
||
* "https://pay.weixin.qq.com/wiki/doc/api/tools/sp_coupon.php?chapter=12_3">
|
||
* å<>‘放代金券接å<C2A5>£</a>
|
||
* @throws WeixinException
|
||
*/
|
||
public CouponResult sendCoupon(InputStream certificate,
|
||
String couponStockId, String partnerTradeNo, String openId,
|
||
String opUserId) throws WeixinException {
|
||
return couponApi.sendCoupon(certificate, couponStockId, partnerTradeNo,
|
||
openId, opUserId);
|
||
}
|
||
|
||
/**
|
||
* å<>‘放代金券
|
||
*
|
||
* @see {@link com.foxinmy.weixin4j.payment.WeixinPayProxy#sendCoupon(InputStream, String, String, String, String)}
|
||
*/
|
||
public CouponResult sendCoupon(String couponStockId, String partnerTradeNo,
|
||
String openId) throws WeixinException, IOException {
|
||
return couponApi.sendCoupon(
|
||
new FileInputStream(settings.getCertificateFile0()),
|
||
couponStockId, partnerTradeNo, openId, null);
|
||
}
|
||
|
||
/**
|
||
* 查询代金券批次
|
||
*
|
||
* @param couponStockId
|
||
* 代金券批次ID
|
||
* @return 代金券批次信æ<C2A1>¯
|
||
* @see com.foxinmy.weixin4j.api.CouponApi
|
||
* @see com.foxinmy.weixin4j.payment.coupon.CouponStock
|
||
* @see <a href=
|
||
* "https://pay.weixin.qq.com/wiki/doc/api/tools/sp_coupon.php?chapter=12_4">
|
||
* 查询代金券批次信æ<C2A1>¯æŽ¥å<C2A5>£</a>
|
||
* @throws WeixinException
|
||
*/
|
||
public CouponStock queryCouponStock(String couponStockId)
|
||
throws WeixinException {
|
||
return couponApi.queryCouponStock(couponStockId);
|
||
}
|
||
|
||
/**
|
||
* 查询代金券详细
|
||
*
|
||
* @param couponId
|
||
* 代金券ID
|
||
* @return 代金券详细信æ<C2A1>¯
|
||
* @see com.foxinmy.weixin4j.api.CouponApi
|
||
* @see com.foxinmy.weixin4j.payment.coupon.CouponDetail
|
||
* @see <a href=
|
||
* "https://pay.weixin.qq.com/wiki/doc/api/tools/sp_coupon.php?chapter=12_5">
|
||
* 查询代金券详细信æ<C2A1>¯æŽ¥å<C2A5>£</a>
|
||
* @throws WeixinException
|
||
*/
|
||
public CouponDetail queryCouponDetail(String couponId)
|
||
throws WeixinException {
|
||
return couponApi.queryCouponDetail(couponId);
|
||
}
|
||
|
||
/**
|
||
* å<>‘放红包 ä¼<C3A4>业å<C5A1>‘微信用户个人å<C2BA>‘现金红包
|
||
*
|
||
* @param certificate
|
||
* å<>Žç¼€ä¸º*.p12çš„è¯<C3A8>书文件
|
||
* @param redpacket
|
||
* 红包信æ<C2A1>¯
|
||
* @return å<>‘放结果
|
||
* @see com.foxinmy.weixin4j.api.CashApi
|
||
* @see com.foxinmy.weixin4j.payment.mch.Redpacket
|
||
* @see com.foxinmy.weixin4j.payment.mch.RedpacketSendResult
|
||
* @see <a href=
|
||
* "https://pay.weixin.qq.com/wiki/doc/api/tools/cash_coupon.php?chapter=13_5">
|
||
* å<>‘放现金红包接å<C2A5>£</a>
|
||
* @see <a href=
|
||
* "https://pay.weixin.qq.com/wiki/doc/api/tools/cash_coupon.php?chapter=16_5">
|
||
* å<>‘放裂å<E2809A>˜çº¢åŒ…接å<C2A5>£</a>
|
||
* @throws WeixinException
|
||
*/
|
||
public RedpacketSendResult sendRedpack(InputStream certificate,
|
||
Redpacket redpacket) throws WeixinException {
|
||
return cashApi.sendRedpack(certificate, redpacket);
|
||
}
|
||
|
||
/**
|
||
* å<>‘放红包
|
||
*
|
||
* @see {@link #sendRedpack(InputStream, Redpacket)}
|
||
*/
|
||
public RedpacketSendResult sendRedpack(Redpacket redpacket)
|
||
throws WeixinException, IOException {
|
||
return cashApi.sendRedpack(
|
||
new FileInputStream(settings.getCertificateFile0()), redpacket);
|
||
}
|
||
|
||
/**
|
||
* 查询红包记录
|
||
*
|
||
* @param certificate
|
||
* å<>Žç¼€ä¸º*.p12çš„è¯<C3A8>书文件
|
||
* @param outTradeNo
|
||
* 商户å<C2B7>‘放红包的商户订å<C2A2>•å<E280A2>·
|
||
* @return 红包记录
|
||
* @see com.foxinmy.weixin4j.api.CashApi
|
||
* @see com.foxinmy.weixin4j.payment.mch.RedpacketRecord
|
||
* @see <a href=
|
||
* "https://pay.weixin.qq.com/wiki/doc/api/tools/cash_coupon.php?chapter=13_7&index=6">
|
||
* 查询现金红包接å<C2A5>£</a>
|
||
* @see <a href=
|
||
* "https://pay.weixin.qq.com/wiki/doc/api/tools/cash_coupon.php?chapter=16_6">
|
||
* 查询裂å<E2809A>˜çº¢åŒ…接å<C2A5>£</a>
|
||
* @throws WeixinException
|
||
*/
|
||
public RedpacketRecord queryRedpack(InputStream certificate,
|
||
String outTradeNo) throws WeixinException {
|
||
return cashApi.queryRedpack(certificate, outTradeNo);
|
||
}
|
||
|
||
/**
|
||
* 查询红包
|
||
*
|
||
* @see {@link #queryRedpack(InputStream,String)}
|
||
*/
|
||
public RedpacketRecord queryRedpack(String outTradeNo)
|
||
throws WeixinException, IOException {
|
||
return cashApi
|
||
.queryRedpack(
|
||
new FileInputStream(settings.getCertificateFile0()),
|
||
outTradeNo);
|
||
}
|
||
|
||
/**
|
||
* ä¼<C3A4>业付款 实现ä¼<C3A4>业å<C5A1>‘个人付款,针对部分有开å<E282AC>‘能力的商户, æ<><C3A6>供通过API完æˆ<C3A6>ä¼<C3A4>业付款的功能。 比如目å‰<C3A5>çš„ä¿<C3A4>险行业å<C5A1>‘客户退ä¿<C3A4>ã€<C3A3>给付ã€<C3A3>ç<EFBFBD>†èµ”。
|
||
* <p>
|
||
* 接å<C2A5>£è°ƒç”¨è§„则:
|
||
* <p>
|
||
* <li>ç»™å<E284A2>Œä¸€ä¸ªå®žå<C5BE><C3A5>用户付款,å<C592>•笔å<E2809D>•æ—¥é™<C3A9>é¢<C3A9>2W/2W
|
||
* <li>ç»™å<E284A2>Œä¸€ä¸ªé<C2AA>žå®žå<C5BE><C3A5>用户付款,å<C592>•笔å<E2809D>•æ—¥é™<C3A9>é¢<C3A9>2000/2000
|
||
* <li>一个商户å<C2B7>Œä¸€æ—¥ä»˜æ¬¾æ€»é¢<C3A9>é™<C3A9>é¢<C3A9>100W
|
||
* <li>å<>•笔最å°<C3A5>金é¢<C3A9>默认为1å…ƒ
|
||
* <li>æ¯<C3A6>个用户æ¯<C3A6>天最多å<C5A1>¯ä»˜æ¬¾10次,å<C592>¯ä»¥åœ¨å•†æˆ·å¹³å<C2B3>°--API安全进行设置
|
||
* <li>ç»™å<E284A2>Œä¸€ä¸ªç”¨æˆ·ä»˜æ¬¾æ—¶é—´é—´éš”ä¸<C3A4>得低于15ç§’
|
||
*
|
||
* @param certificate
|
||
* å<>Žç¼€ä¸º*.p12çš„è¯<C3A8>书文件
|
||
* @param payment
|
||
* 付款信æ<C2A1>¯
|
||
* @return 付款结果
|
||
* @see com.foxinmy.weixin4j.api.CashApi
|
||
* @see com.foxinmy.weixin4j.payment.mch.CorpPayment
|
||
* @see com.foxinmy.weixin4j.payment.mch.CorpPaymentResult
|
||
* @see <a href=
|
||
* "https://pay.weixin.qq.com/wiki/doc/api/tools/mch_pay.php?chapter=14_2">
|
||
* ä¼<C3A4>业付款接å<C2A5>£</a>
|
||
* @throws WeixinException
|
||
*/
|
||
public CorpPaymentResult sendCorpPayment(InputStream certificate,
|
||
CorpPayment payment) throws WeixinException {
|
||
return cashApi.sendCorpPayment(certificate, payment);
|
||
}
|
||
|
||
/**
|
||
* ä¼<C3A4>业付款
|
||
*
|
||
* @see {@link #sendCorpPayment(InputStream, CorpPayment)}
|
||
*/
|
||
public CorpPaymentResult sendCorpPayment(CorpPayment payment)
|
||
throws WeixinException, IOException {
|
||
return cashApi.sendCorpPayment(
|
||
new FileInputStream(settings.getCertificateFile0()), payment);
|
||
}
|
||
|
||
/**
|
||
* ä¼<C3A4>业付款查询 用于商户的ä¼<C3A4>业付款æ“<C3A6>作进行结果查询,返回付款æ“<C3A6>作详细结果
|
||
*
|
||
* @param certificate
|
||
* å<>Žç¼€ä¸º*.p12çš„è¯<C3A8>书文件
|
||
* @param outTradeNo
|
||
* 商户调用ä¼<C3A4>业付款API时使用的商户订å<C2A2>•å<E280A2>·
|
||
* @return 付款记录
|
||
* @see com.foxinmy.weixin4j.api.CashApi
|
||
* @see com.foxinmy.weixin4j.payment.mch.CorpPaymentRecord
|
||
* @see <a href=
|
||
* "https://pay.weixin.qq.com/wiki/doc/api/tools/mch_pay.php?chapter=14_3">
|
||
* ä¼<C3A4>业付款查询接å<C2A5>£</a>
|
||
* @throws WeixinException
|
||
*/
|
||
public CorpPaymentRecord queryCorpPayment(InputStream certificate,
|
||
String outTradeNo) throws WeixinException {
|
||
return cashApi.queryCorpPayment(certificate, outTradeNo);
|
||
}
|
||
|
||
/**
|
||
* ä¼<C3A4>业付款查询
|
||
*
|
||
* @see {@link #CorpPaymentRecord(InputStream, String)}
|
||
*/
|
||
public CorpPaymentRecord queryCorpPayment(String outTradeNo)
|
||
throws WeixinException, IOException {
|
||
return cashApi
|
||
.queryCorpPayment(
|
||
new FileInputStream(settings.getCertificateFile0()),
|
||
outTradeNo);
|
||
}
|
||
|
||
/**
|
||
* 授æ<CB86>ƒç <C3A7>查询OPENID
|
||
*
|
||
* @param authCode
|
||
* 扫ç <C3A7>支付授æ<CB86>ƒç <C3A7>,设备读å<C2BB>–用户微信ä¸çš„æ<E2809E>¡ç <C3A7>或者二维ç <C3A7>ä¿¡æ<C2A1>¯
|
||
* @return 查询结果
|
||
* @see com.foxinmy.weixin4j.api.CashApi
|
||
* @see com.foxinmy.weixin4j.payment.mch.OpenIdResult
|
||
* @see <a href=
|
||
* "https://pay.weixin.qq.com/wiki/doc/api/micropay.php?chapter=9_13&index=9">
|
||
* 授æ<CB86>ƒç <C3A7>查询OPENID</a>
|
||
* @throws WeixinException
|
||
*/
|
||
public OpenIdResult authCode2openId(String authCode) throws WeixinException {
|
||
return payApi.authCode2openId(authCode);
|
||
}
|
||
|
||
/**
|
||
* 查询结算资金
|
||
*
|
||
* @param status
|
||
* 是å<C2AF>¦ç»“ç®—
|
||
* @param pageable
|
||
* 分页数æ<C2B0>®
|
||
* @param start
|
||
* 开始日期 æŸ¥è¯¢æœªç»“ç®—è®°å½•æ—¶ï¼Œè¯¥å—æ®µå<C2B5>¯ä¸<C3A4>ä¼
|
||
* @param end
|
||
* 结æ<E2809C>Ÿæ—¥æœŸ æŸ¥è¯¢æœªç»“ç®—è®°å½•æ—¶ï¼Œè¯¥å—æ®µå<C2B5>¯ä¸<C3A4>ä¼
|
||
* @return 结算金é¢<C3A9>记录
|
||
* @throws WeixinException
|
||
* @see com.foxinmy.weixin4j.api.CashApi
|
||
* @see com.foxinmy.weixin4j.payment.mch.SettlementRecord
|
||
* @see <a href=
|
||
* "https://pay.weixin.qq.com/wiki/doc/api/external/micropay.php?chapter=9_14&index=7">
|
||
* 查询结算资金接å<C2A5>£</a>
|
||
*/
|
||
public SettlementRecord querySettlement(boolean status, Pageable pageable,
|
||
Date start, Date end) throws WeixinException {
|
||
return cashApi.querySettlement(status, pageable, start, end);
|
||
}
|
||
|
||
/**
|
||
* 查询汇率
|
||
*
|
||
* @param currencyType
|
||
* 外å¸<C3A5>å¸<C3A5>ç§<C3A7>
|
||
* @param date
|
||
* 日期 ä¸<C3A4>填则默认当天
|
||
* @return 汇率对象
|
||
* @throws WeixinException
|
||
* @see com.foxinmy.weixin4j.api.CashApi
|
||
* @see <a href=
|
||
* "https://pay.weixin.qq.com/wiki/doc/api/external/micropay.php?chapter=9_15&index=8">
|
||
* 查询汇率接å<C2A5>£</a>
|
||
*/
|
||
public double queryExchageRate(CurrencyType currencyType, Date date)
|
||
throws WeixinException {
|
||
return cashApi.queryExchageRate(currencyType, date);
|
||
}
|
||
|
||
/**
|
||
* 订å<C2A2>•é™„åŠ ä¿¡æ<C2A1>¯æ<C2AF><C3A6>交
|
||
*
|
||
* @param customsOrder
|
||
* é™„åŠ è®¢å<C2A2>•ä¿¡æ<C2A1>¯
|
||
* @return 报关结果
|
||
* @see com.foxinmy.weixin4j.api.CustomsApi
|
||
* @see com.foxinmy.weixin4j.payment.mch.CustomsOrder
|
||
* @see com.foxinmy.weixin4j.payment.mch.CustomsOrderResult
|
||
* @see <a href=
|
||
* "https://pay.weixin.qq.com/wiki/doc/api/external/declarecustom.php?chapter=18_1">
|
||
* é™„åŠ è®¢å<C2A2>•ä¿¡æ<C2A1>¯æ<C2AF><C3A6>交接å<C2A5>£</a>
|
||
* @throws WeixinException
|
||
*/
|
||
public CustomsOrderResult declareCustomsOrder(CustomsOrder customsOrder)
|
||
throws WeixinException {
|
||
return customsApi.declareCustomsOrder(customsOrder);
|
||
}
|
||
|
||
/**
|
||
* 订å<C2A2>•é™„åŠ ä¿¡æ<C2A1>¯æŸ¥è¯¢
|
||
*
|
||
* @param idQuery
|
||
* out_trade_no,transaction_id,sub_order_no,sub_order_id四选一
|
||
* @param customsCity
|
||
* æµ·å…³
|
||
* @return 报关记录
|
||
* @see com.foxinmy.weixin4j.payment.mch.CustomsOrderRecord
|
||
* @see com.foxinmy.weixin4j.api.CustomsApi
|
||
* @see <a href=
|
||
* "https://pay.weixin.qq.com/wiki/doc/api/external/declarecustom.php?chapter=18_1">
|
||
* é™„åŠ è®¢å<C2A2>•ä¿¡æ<C2A1>¯æŸ¥è¯¢æŽ¥å<C2A5>£</a>
|
||
* @throws WeixinException
|
||
*/
|
||
public CustomsOrderRecord queryCustomsOrder(IdQuery idQuery,
|
||
CustomsCity customsCity) throws WeixinException {
|
||
return customsApi.queryCustomsOrder(idQuery, customsCity);
|
||
}
|
||
|
||
public final static String VERSION = "1.6.9";
|
||
}
|