WxPayService.java 66 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495969798991001011021031041051061071081091101111121131141151161171181191201211221231241251261271281291301311321331341351361371381391401411421431441451461471481491501511521531541551561571581591601611621631641651661671681691701711721731741751761771781791801811821831841851861871881891901911921931941951961971981992002012022032042052062072082092102112122132142152162172182192202212222232242252262272282292302312322332342352362372382392402412422432442452462472482492502512522532542552562572582592602612622632642652662672682692702712722732742752762772782792802812822832842852862872882892902912922932942952962972982993003013023033043053063073083093103113123133143153163173183193203213223233243253263273283293303313323333343353363373383393403413423433443453463473483493503513523533543553563573583593603613623633643653663673683693703713723733743753763773783793803813823833843853863873883893903913923933943953963973983994004014024034044054064074084094104114124134144154164174184194204214224234244254264274284294304314324334344354364374384394404414424434444454464474484494504514524534544554564574584594604614624634644654664674684694704714724734744754764774784794804814824834844854864874884894904914924934944954964974984995005015025035045055065075085095105115125135145155165175185195205215225235245255265275285295305315325335345355365375385395405415425435445455465475485495505515525535545555565575585595605615625635645655665675685695705715725735745755765775785795805815825835845855865875885895905915925935945955965975985996006016026036046056066076086096106116126136146156166176186196206216226236246256266276286296306316326336346356366376386396406416426436446456466476486496506516526536546556566576586596606616626636646656666676686696706716726736746756766776786796806816826836846856866876886896906916926936946956966976986997007017027037047057067077087097107117127137147157167177187197207217227237247257267277287297307317327337347357367377387397407417427437447457467477487497507517527537547557567577587597607617627637647657667677687697707717727737747757767777787797807817827837847857867877887897907917927937947957967977987998008018028038048058068078088098108118128138148158168178188198208218228238248258268278288298308318328338348358368378388398408418428438448458468478488498508518528538548558568578588598608618628638648658668678688698708718728738748758768778788798808818828838848858868878888898908918928938948958968978988999009019029039049059069079089099109119129139149159169179189199209219229239249259269279289299309319329339349359369379389399409419429439449459469479489499509519529539549559569579589599609619629639649659669679689699709719729739749759769779789799809819829839849859869879889899909919929939949959969979989991000100110021003100410051006100710081009101010111012101310141015101610171018101910201021102210231024102510261027102810291030103110321033103410351036103710381039104010411042104310441045104610471048104910501051105210531054105510561057105810591060106110621063106410651066106710681069107010711072107310741075107610771078107910801081108210831084108510861087108810891090109110921093109410951096109710981099110011011102110311041105110611071108110911101111111211131114111511161117111811191120112111221123112411251126112711281129113011311132113311341135113611371138113911401141114211431144114511461147114811491150115111521153115411551156115711581159116011611162116311641165116611671168116911701171117211731174117511761177117811791180118111821183118411851186118711881189119011911192119311941195119611971198119912001201120212031204120512061207120812091210121112121213121412151216121712181219122012211222122312241225122612271228122912301231123212331234123512361237123812391240124112421243124412451246124712481249125012511252125312541255125612571258125912601261126212631264126512661267126812691270127112721273127412751276127712781279128012811282128312841285128612871288128912901291129212931294129512961297129812991300130113021303130413051306130713081309131013111312131313141315131613171318131913201321132213231324132513261327132813291330133113321333133413351336133713381339134013411342134313441345134613471348134913501351135213531354135513561357135813591360136113621363136413651366136713681369137013711372137313741375137613771378137913801381138213831384138513861387138813891390139113921393139413951396139713981399140014011402140314041405140614071408140914101411141214131414141514161417141814191420142114221423142414251426142714281429143014311432143314341435143614371438143914401441144214431444144514461447144814491450145114521453145414551456145714581459146014611462146314641465146614671468146914701471147214731474147514761477147814791480
  1. package com.github.binarywang.wxpay.service;
  2. import com.github.binarywang.wxpay.bean.WxPayApiData;
  3. import com.github.binarywang.wxpay.bean.coupon.*;
  4. import com.github.binarywang.wxpay.bean.notify.*;
  5. import com.github.binarywang.wxpay.bean.request.*;
  6. import com.github.binarywang.wxpay.bean.result.*;
  7. import com.github.binarywang.wxpay.bean.result.enums.PartnerTradeTypeEnum;
  8. import com.github.binarywang.wxpay.bean.result.enums.TradeTypeEnum;
  9. import com.github.binarywang.wxpay.config.WxPayConfig;
  10. import com.github.binarywang.wxpay.constant.WxPayConstants;
  11. import com.github.binarywang.wxpay.exception.WxPayException;
  12. import org.apache.http.client.methods.HttpPost;
  13. import org.apache.http.client.methods.HttpRequestBase;
  14. import java.io.File;
  15. import java.io.InputStream;
  16. import java.util.Date;
  17. import java.util.Map;
  18. /**
  19. * <pre>
  20. * 微信支付相关接口.
  21. * Created by Binary Wang on 2016/7/28.
  22. * </pre>
  23. *
  24. * @author <a href="https://github.com/binarywang">Binary Wang</a>
  25. */
  26. public interface WxPayService {
  27. /**
  28. * 获取微信支付请求url前缀,沙箱环境可能不一样.
  29. *
  30. * @return the pay base url
  31. */
  32. String getPayBaseUrl();
  33. /**
  34. * Map里 加入新的 {@link WxPayConfig},适用于动态添加新的微信商户配置.
  35. *
  36. * @param mchId 商户id
  37. * @param wxPayConfig 新的微信配置
  38. */
  39. void addConfig(String mchId, WxPayConfig wxPayConfig);
  40. /**
  41. * 从 Map中 移除 {@link String mchId} 所对应的 {@link WxPayConfig},适用于动态移除微信商户配置.
  42. *
  43. * @param mchId 对应商户的标识
  44. */
  45. void removeConfig(String mchId);
  46. /**
  47. * 注入多个 {@link WxPayConfig} 的实现. 并为每个 {@link WxPayConfig} 赋予不同的 {@link String mchId} 值
  48. * 随机采用一个{@link String mchId}进行Http初始化操作
  49. *
  50. * @param wxPayConfigs WxPayConfig map
  51. */
  52. void setMultiConfig(Map<String, WxPayConfig> wxPayConfigs);
  53. /**
  54. * 注入多个 {@link WxPayConfig} 的实现. 并为每个 {@link WxPayConfig} 赋予不同的 {@link String label} 值
  55. *
  56. * @param wxPayConfigs WxPayConfig map
  57. * @param defaultMchId 设置一个{@link WxPayConfig} 所对应的{@link String mchId}进行Http初始化
  58. */
  59. void setMultiConfig(Map<String, WxPayConfig> wxPayConfigs, String defaultMchId);
  60. /**
  61. * 进行相应的商户切换.
  62. *
  63. * @param mchId 商户标识
  64. * @return 切换是否成功 boolean
  65. */
  66. boolean switchover(String mchId);
  67. /**
  68. * 进行相应的商户切换.
  69. *
  70. * @param mchId 商户标识
  71. * @return 切换成功 ,则返回当前对象,方便链式调用,否则抛出异常
  72. */
  73. WxPayService switchoverTo(String mchId);
  74. /**
  75. * 发送post请求,得到响应字节数组.
  76. *
  77. * @param url 请求地址
  78. * @param requestStr 请求信息
  79. * @param useKey 是否使用证书
  80. * @return 返回请求结果字节数组 byte [ ]
  81. * @throws WxPayException the wx pay exception
  82. */
  83. byte[] postForBytes(String url, String requestStr, boolean useKey) throws WxPayException;
  84. /**
  85. * 发送post请求,得到响应字符串.
  86. *
  87. * @param url 请求地址
  88. * @param requestStr 请求信息
  89. * @param useKey 是否使用证书
  90. * @return 返回请求结果字符串 string
  91. * @throws WxPayException the wx pay exception
  92. */
  93. String post(String url, String requestStr, boolean useKey) throws WxPayException;
  94. /**
  95. * 发送post请求,得到响应字符串.
  96. *
  97. * @param url 请求地址
  98. * @param requestStr 请求信息
  99. * @return 返回请求结果字符串 string
  100. * @throws WxPayException the wx pay exception
  101. */
  102. String postV3(String url, String requestStr) throws WxPayException;
  103. /**
  104. * 发送patch请求,得到响应字符串.
  105. *
  106. * @param url 请求地址
  107. * @param requestStr 请求信息
  108. * @return 返回请求结果字符串 string
  109. * @throws WxPayException the wx pay exception
  110. */
  111. String patchV3(String url, String requestStr) throws WxPayException;
  112. /**
  113. * 发送post请求,得到响应字符串.
  114. * <p>
  115. * 部分字段会包含敏感信息,所以在提交前需要在请求头中会包含"Wechatpay-Serial"信息
  116. *
  117. * @param url 请求地址
  118. * @param requestStr 请求信息
  119. * @return 返回请求结果字符串 string
  120. * @throws WxPayException the wx pay exception
  121. */
  122. String postV3WithWechatpaySerial(String url, String requestStr) throws WxPayException;
  123. /**
  124. * 发送post请求,得到响应字符串.
  125. *
  126. * @param url 请求地址
  127. * @param httpPost 请求信息
  128. * @return 返回请求结果字符串 string
  129. * @throws WxPayException the wx pay exception
  130. */
  131. String postV3(String url, HttpPost httpPost) throws WxPayException;
  132. /**
  133. * 发送http请求,得到响应字符串.
  134. *
  135. * @param url 请求地址
  136. * @param httpRequest 请求信息,可以是put,post,get,delete等请求
  137. * @return 返回请求结果字符串 string
  138. * @throws WxPayException the wx pay exception
  139. */
  140. String requestV3(String url, HttpRequestBase httpRequest) throws WxPayException;
  141. /**
  142. * 发送get V3请求,得到响应字符串.
  143. *
  144. * @param url 请求地址
  145. * @return 返回请求结果字符串 string
  146. * @throws WxPayException the wx pay exception
  147. */
  148. String getV3(String url) throws WxPayException;
  149. /**
  150. * 发送get请求,得到响应字符串.
  151. * <p>
  152. * 部分字段会包含敏感信息,所以在提交前需要在请求头中会包含"Wechatpay-Serial"信息
  153. *
  154. * @param url 请求地址
  155. * @return 返回请求结果字符串 string
  156. * @throws WxPayException the wx pay exception
  157. */
  158. String getV3WithWechatPaySerial(String url) throws WxPayException;
  159. /**
  160. * 发送下载 V3请求,得到响应流.
  161. *
  162. * @param url 请求地址
  163. * @return 返回请求响应流 input stream
  164. * @throws WxPayException the wx pay exception
  165. */
  166. InputStream downloadV3(String url) throws WxPayException;
  167. /**
  168. * 发送put V3请求,得到响应字符串.
  169. *
  170. * @param url 请求地址
  171. * @param requestStr 请求数据
  172. * @return 返回请求结果字符串 string
  173. * @throws WxPayException the wx pay exception
  174. */
  175. String putV3(String url, String requestStr) throws WxPayException;
  176. /**
  177. * 发送delete V3请求,得到响应字符串.
  178. *
  179. * @param url 请求地址
  180. * @return 返回请求结果字符串 string
  181. * @throws WxPayException the wx pay exception
  182. */
  183. String deleteV3(String url) throws WxPayException;
  184. /**
  185. * 获取微信签约代扣服务类
  186. *
  187. * @return entrust service
  188. */
  189. WxEntrustPapService getWxEntrustPapService();
  190. /**
  191. * 获取批量转账到零钱服务类.
  192. *
  193. * @return the Batch transfer to change service
  194. */
  195. PartnerTransferService getPartnerTransferService();
  196. /**
  197. * 微工卡
  198. *
  199. * @return the micro card
  200. */
  201. PayrollService getPayrollService();
  202. /**
  203. * 获取企业付款服务类.
  204. *
  205. * @return the ent pay service
  206. */
  207. EntPayService getEntPayService();
  208. /**
  209. * 获取红包接口服务类.
  210. *
  211. * @return . redpack service
  212. */
  213. RedpackService getRedpackService();
  214. /**
  215. * 获取分账服务类.
  216. * <p>
  217. * V3接口 {@link WxPayService#getProfitSharingV3Service()}
  218. * </p>
  219. *
  220. * @return the ent pay service
  221. */
  222. ProfitSharingService getProfitSharingService();
  223. /**
  224. * 获取V3分账服务类.
  225. *
  226. * @return the ent pay service
  227. */
  228. ProfitSharingV3Service getProfitSharingV3Service();
  229. /**
  230. * 获取支付分服务类.
  231. *
  232. * @return the ent pay service
  233. */
  234. PayScoreService getPayScoreService();
  235. /**
  236. * 获取电商收付通服务类
  237. *
  238. * @return the ecommerce service
  239. */
  240. EcommerceService getEcommerceService();
  241. /**
  242. * 获取微信支付智慧商圈服务类
  243. *
  244. * @return the business circle service
  245. */
  246. BusinessCircleService getBusinessCircleService();
  247. /**
  248. * 获取微信支付通用媒体服务类
  249. *
  250. * @return the merchant media service
  251. */
  252. MerchantMediaService getMerchantMediaService();
  253. /**
  254. * 获取微信支付营销媒体服务类
  255. *
  256. * @return the marketing media service
  257. */
  258. MarketingMediaService getMarketingMediaService();
  259. /**
  260. * 获取微信支付营销代金券服务类
  261. *
  262. * @return the marketing favor service
  263. */
  264. MarketingFavorService getMarketingFavorService();
  265. /**
  266. * 获取微信支付营销商家券服务类
  267. *
  268. * @return the marketing favor service
  269. */
  270. MarketingBusiFavorService getMarketingBusiFavorService();
  271. /**
  272. * 获取商家转账到零钱服务类
  273. *
  274. * @return the merchant transfer service
  275. */
  276. MerchantTransferService getMerchantTransferService();
  277. /**
  278. * 获取品牌红包商家转账到零钱服务类
  279. *
  280. * @return the brand merchant transfer service
  281. */
  282. BrandMerchantTransferService getBrandMerchantTransferService();
  283. /**
  284. * 设置企业付款服务类,允许开发者自定义实现类.
  285. *
  286. * @param entPayService the ent pay service
  287. */
  288. void setEntPayService(EntPayService entPayService);
  289. /**
  290. * <pre>
  291. * 查询订单.
  292. * 详见https://pay.weixin.qq.com/wiki/doc/api/jsapi.php?chapter=9_2
  293. * 该接口提供所有微信支付订单的查询,商户可以通过查询订单接口主动查询订单状态,完成下一步的业务逻辑。
  294. * 需要调用查询接口的情况:
  295. * ◆ 当商户后台、网络、服务器等出现异常,商户系统最终未接收到支付通知;
  296. * ◆ 调用支付接口后,返回系统错误或未知交易状态情况;
  297. * ◆ 调用被扫支付API,返回USERPAYING的状态;
  298. * ◆ 调用关单或撤销接口API之前,需确认支付状态;
  299. * 接口地址:https://api.mch.weixin.qq.com/pay/orderquery
  300. * </pre>
  301. *
  302. * @param transactionId 微信订单号
  303. * @param outTradeNo 商户系统内部的订单号,当没提供transactionId时需要传这个。
  304. * @return the wx pay order query result
  305. * @throws WxPayException the wx pay exception
  306. */
  307. WxPayOrderQueryResult queryOrder(String transactionId, String outTradeNo) throws WxPayException;
  308. /**
  309. * <pre>
  310. * 查询订单(适合于需要自定义子商户号和子商户appid的情形).
  311. * 详见https://pay.weixin.qq.com/wiki/doc/api/jsapi.php?chapter=9_2
  312. * 该接口提供所有微信支付订单的查询,商户可以通过查询订单接口主动查询订单状态,完成下一步的业务逻辑。
  313. * 需要调用查询接口的情况:
  314. * ◆ 当商户后台、网络、服务器等出现异常,商户系统最终未接收到支付通知;
  315. * ◆ 调用支付接口后,返回系统错误或未知交易状态情况;
  316. * ◆ 调用被扫支付API,返回USERPAYING的状态;
  317. * ◆ 调用关单或撤销接口API之前,需确认支付状态;
  318. * 接口地址:https://api.mch.weixin.qq.com/pay/orderquery
  319. * </pre>
  320. *
  321. * @param request 查询订单请求对象
  322. * @return the wx pay order query result
  323. * @throws WxPayException the wx pay exception
  324. */
  325. WxPayOrderQueryResult queryOrder(WxPayOrderQueryRequest request) throws WxPayException;
  326. /**
  327. * <pre>
  328. * 查询订单
  329. * 详见 <a href="https://pay.weixin.qq.com/wiki/doc/apiv3/apis/chapter3_1_2.shtml">https://pay.weixin.qq.com/wiki/doc/apiv3/apis/chapter3_1_2.shtml</a>
  330. * 商户可以通过查询订单接口主动查询订单状态,完成下一步的业务逻辑。查询订单状态可通过微信支付订单号或商户订单号两种方式查询
  331. * 注意:
  332. * 查询订单可通过微信支付订单号和商户订单号两种方式查询,两种查询方式返回结果相同
  333. * 需要调用查询接口的情况:
  334. * ◆ 当商户后台、网络、服务器等出现异常,商户系统最终未接收到支付通知。
  335. * ◆ 调用支付接口后,返回系统错误或未知交易状态情况。
  336. * ◆ 调用付款码支付API,返回USERPAYING的状态。
  337. * ◆ 调用关单或撤销接口API之前,需确认支付状态。
  338. * 接口地址:
  339. * https://api.mch.weixin.qq.com/v3/pay/transactions/id/{transaction_id}
  340. * https://api.mch.weixin.qq.com/v3/pay/transactions/out-trade-no/{out_trade_no}
  341. * </pre>
  342. *
  343. * @param transactionId 微信订单号
  344. * @param outTradeNo 商户系统内部的订单号,当没提供transactionId时需要传这个。
  345. * @return the wx pay order query result
  346. * @throws WxPayException the wx pay exception
  347. */
  348. WxPayOrderQueryV3Result queryOrderV3(String transactionId, String outTradeNo) throws WxPayException;
  349. /**
  350. * <pre>
  351. * 查询订单
  352. * 详见 <a href="https://pay.weixin.qq.com/wiki/doc/apiv3/apis/chapter3_1_2.shtml">https://pay.weixin.qq.com/wiki/doc/apiv3/apis/chapter3_1_2.shtml</a>
  353. * 商户可以通过查询订单接口主动查询订单状态,完成下一步的业务逻辑。查询订单状态可通过微信支付订单号或商户订单号两种方式查询
  354. * 注意:
  355. * 查询订单可通过微信支付订单号和商户订单号两种方式查询,两种查询方式返回结果相同
  356. * 需要调用查询接口的情况:
  357. * ◆ 当商户后台、网络、服务器等出现异常,商户系统最终未接收到支付通知。
  358. * ◆ 调用支付接口后,返回系统错误或未知交易状态情况。
  359. * ◆ 调用付款码支付API,返回USERPAYING的状态。
  360. * ◆ 调用关单或撤销接口API之前,需确认支付状态。
  361. * 接口地址:
  362. * https://api.mch.weixin.qq.com/v3/pay/transactions/id/{transaction_id}
  363. * https://api.mch.weixin.qq.com/v3/pay/transactions/out-trade-no/{out_trade_no}
  364. * </pre>
  365. *
  366. * @param request 查询订单请求对象
  367. * @return the wx pay order query result
  368. * @throws WxPayException the wx pay exception
  369. */
  370. WxPayOrderQueryV3Result queryOrderV3(WxPayOrderQueryV3Request request) throws WxPayException;
  371. /**
  372. * <pre>
  373. * 合单查询订单API
  374. * 请求URL: https://api.mch.weixin.qq.com/v3/combine-transactions/out-trade-no/{combine_out_trade_no}
  375. * 文档地址: <a href="https://pay.weixin.qq.com/wiki/doc/apiv3/apis/chapter5_1_11.shtml">https://pay.weixin.qq.com/wiki/doc/apiv3/apis/chapter5_1_11.shtml</a>
  376. * </pre>
  377. *
  378. * @param combineOutTradeNo 合单商户订单号
  379. * @return 合单支付订单信息 combine query result
  380. * @throws WxPayException the wx pay exception
  381. */
  382. CombineQueryResult queryCombine(String combineOutTradeNo) throws WxPayException;
  383. /**
  384. * <pre>
  385. * 关闭订单.
  386. * 应用场景
  387. * 以下情况需要调用关单接口:
  388. * 1. 商户订单支付失败需要生成新单号重新发起支付,要对原订单号调用关单,避免重复支付;
  389. * 2. 系统下单后,用户支付超时,系统退出不再受理,避免用户继续,请调用关单接口。
  390. * 注意:订单生成后不能马上调用关单接口,最短调用时间间隔为5分钟。
  391. * 接口地址:https://api.mch.weixin.qq.com/pay/closeorder
  392. * 是否需要证书: 不需要。
  393. * </pre>
  394. *
  395. * @param outTradeNo 商户系统内部的订单号
  396. * @return the wx pay order close result
  397. * @throws WxPayException the wx pay exception
  398. */
  399. WxPayOrderCloseResult closeOrder(String outTradeNo) throws WxPayException;
  400. /**
  401. * <pre>
  402. * 关闭订单(适合于需要自定义子商户号和子商户appid的情形).
  403. * 应用场景
  404. * 以下情况需要调用关单接口:
  405. * 1. 商户订单支付失败需要生成新单号重新发起支付,要对原订单号调用关单,避免重复支付;
  406. * 2. 系统下单后,用户支付超时,系统退出不再受理,避免用户继续,请调用关单接口。
  407. * 注意:订单生成后不能马上调用关单接口,最短调用时间间隔为5分钟。
  408. * 接口地址:https://api.mch.weixin.qq.com/pay/closeorder
  409. * 是否需要证书: 不需要。
  410. * </pre>
  411. *
  412. * @param request 关闭订单请求对象
  413. * @return the wx pay order close result
  414. * @throws WxPayException the wx pay exception
  415. */
  416. WxPayOrderCloseResult closeOrder(WxPayOrderCloseRequest request) throws WxPayException;
  417. /**
  418. * <pre>
  419. * 关闭订单
  420. * 应用场景
  421. * 以下情况需要调用关单接口:
  422. * 1、商户订单支付失败需要生成新单号重新发起支付,要对原订单号调用关单,避免重复支付;
  423. * 2、系统下单后,用户支付超时,系统退出不再受理,避免用户继续,请调用关单接口。
  424. * 注意:关单没有时间限制,建议在订单生成后间隔几分钟(最短5分钟)再调用关单接口,避免出现订单状态同步不及时导致关单失败。
  425. * 接口地址:https://pay.weixin.qq.com/wiki/doc/apiv3/apis/chapter3_1_3.shtml
  426. * </pre>
  427. *
  428. * @param outTradeNo 商户系统内部的订单号
  429. * @return the wx pay order close result
  430. * @throws WxPayException the wx pay exception
  431. */
  432. void closeOrderV3(String outTradeNo) throws WxPayException;
  433. /**
  434. * <pre>
  435. * 服务商关闭订单
  436. * 应用场景
  437. * 以下情况需要调用关单接口:
  438. * 1、商户订单支付失败需要生成新单号重新发起支付,要对原订单号调用关单,避免重复支付;
  439. * 2、系统下单后,用户支付超时,系统退出不再受理,避免用户继续,请调用关单接口。
  440. * 注意:关单没有时间限制,建议在订单生成后间隔几分钟(最短5分钟)再调用关单接口,避免出现订单状态同步不及时导致关单失败。
  441. * 接口地址:https://pay.weixin.qq.com/wiki/doc/apiv3/apis/chapter3_1_3.shtml
  442. * </pre>
  443. *
  444. * @param outTradeNo 商户系统内部的订单号
  445. * @return the wx pay order close result
  446. * @throws WxPayException the wx pay exception
  447. */
  448. void closePartnerOrderV3(String outTradeNo) throws WxPayException;
  449. /**
  450. * <pre>
  451. * 关闭订单
  452. * 应用场景
  453. * 以下情况需要调用关单接口:
  454. * 1、商户订单支付失败需要生成新单号重新发起支付,要对原订单号调用关单,避免重复支付;
  455. * 2、系统下单后,用户支付超时,系统退出不再受理,避免用户继续,请调用关单接口。
  456. * 注意:关单没有时间限制,建议在订单生成后间隔几分钟(最短5分钟)再调用关单接口,避免出现订单状态同步不及时导致关单失败。
  457. * 接口地址:https://pay.weixin.qq.com/wiki/doc/apiv3/apis/chapter3_1_3.shtml
  458. * </pre>
  459. *
  460. * @param request 关闭订单请求对象
  461. * @return the wx pay order close result
  462. * @throws WxPayException the wx pay exception
  463. */
  464. void closeOrderV3(WxPayOrderCloseV3Request request) throws WxPayException;
  465. /**
  466. * <pre>
  467. * 服务商关闭订单
  468. * 应用场景
  469. * 以下情况需要调用关单接口:
  470. * 1、商户订单支付失败需要生成新单号重新发起支付,要对原订单号调用关单,避免重复支付;
  471. * 2、系统下单后,用户支付超时,系统退出不再受理,避免用户继续,请调用关单接口。
  472. * 注意:关单没有时间限制,建议在订单生成后间隔几分钟(最短5分钟)再调用关单接口,避免出现订单状态同步不及时导致关单失败。
  473. * 接口地址:https://pay.weixin.qq.com/wiki/doc/apiv3/apis/chapter3_1_3.shtml
  474. * </pre>
  475. *
  476. * @param request 关闭订单请求对象
  477. * @return the wx pay order close result
  478. * @throws WxPayException the wx pay exception
  479. */
  480. void closePartnerOrderV3(WxPayPartnerOrderCloseV3Request request) throws WxPayException;
  481. /**
  482. * <pre>
  483. * 合单关闭订单API
  484. * 请求URL: https://api.mch.weixin.qq.com/v3/combine-transactions/out-trade-no/{combine_out_trade_no}/close
  485. * 文档地址: <a href="https://pay.weixin.qq.com/wiki/doc/apiv3/apis/chapter5_1_12.shtml">https://pay.weixin.qq.com/wiki/doc/apiv3/apis/chapter5_1_12.shtml</a>
  486. * </pre>
  487. *
  488. * @param request 请求对象
  489. * @throws WxPayException the wx pay exception
  490. */
  491. void closeCombine(CombineCloseRequest request) throws WxPayException;
  492. /**
  493. * 调用统一下单接口,并组装生成支付所需参数对象.
  494. *
  495. * @param <T> 请使用{@link com.github.binarywang.wxpay.bean.order}包下的类
  496. * @param request 统一下单请求参数
  497. * @return 返回 {@link com.github.binarywang.wxpay.bean.order}包下的类对象
  498. * @throws WxPayException the wx pay exception
  499. */
  500. <T> T createOrder(WxPayUnifiedOrderRequest request) throws WxPayException;
  501. /**
  502. * 调用统一下单接口,并组装生成支付所需参数对象.
  503. *
  504. * @param <T> the type parameter
  505. * @param specificTradeType 将使用的交易方式,不能为 null
  506. * @param request 统一下单请求参数,设定的 tradeType 及配置里的 tradeType 将被忽略,转而使用 specificTradeType
  507. * @return 返回 {@link WxPayConstants.TradeType.Specific} 指定的类
  508. * @throws WxPayException the wx pay exception
  509. * @see WxPayService#createOrder(WxPayUnifiedOrderRequest) WxPayService#createOrder(WxPayUnifiedOrderRequest)WxPayService#createOrder(WxPayUnifiedOrderRequest)
  510. */
  511. <T> T createOrder(WxPayConstants.TradeType.Specific<T> specificTradeType, WxPayUnifiedOrderRequest request) throws WxPayException;
  512. /**
  513. * 统一下单(详见https://pay.weixin.qq.com/wiki/doc/api/app/app.php?chapter=9_1)
  514. * 在发起微信支付前,需要调用统一下单接口,获取"预支付交易会话标识"
  515. * 接口地址:https://api.mch.weixin.qq.com/pay/unifiedorder
  516. *
  517. * @param request 请求对象,注意一些参数如appid、mchid等不用设置,方法内会自动从配置对象中获取到(前提是对应配置中已经设置)
  518. * @return the wx pay unified order result
  519. * @throws WxPayException the wx pay exception
  520. */
  521. WxPayUnifiedOrderResult unifiedOrder(WxPayUnifiedOrderRequest request) throws WxPayException;
  522. /**
  523. * 调用统一下单接口,并组装生成支付所需参数对象.
  524. *
  525. * @param <T> 请使用{@link com.github.binarywang.wxpay.bean.result.WxPayUnifiedOrderV3Result}里的内部类或字段
  526. * @param tradeType the trade type
  527. * @param request 统一下单请求参数
  528. * @return 返回 {@link com.github.binarywang.wxpay.bean.result.WxPayUnifiedOrderV3Result}里的内部类或字段
  529. * @throws WxPayException the wx pay exception
  530. */
  531. <T> T createOrderV3(TradeTypeEnum tradeType, WxPayUnifiedOrderV3Request request) throws WxPayException;
  532. /**
  533. * 服务商模式调用统一下单接口,并组装生成支付所需参数对象.
  534. *
  535. * @param <T> 请使用{@link com.github.binarywang.wxpay.bean.result.WxPayUnifiedOrderV3Result}里的内部类或字段
  536. * @param tradeType the trade type
  537. * @param request 统一下单请求参数
  538. * @return 返回 {@link com.github.binarywang.wxpay.bean.result.WxPayUnifiedOrderV3Result}里的内部类或字段
  539. * @throws WxPayException the wx pay exception
  540. */
  541. <T> T createPartnerOrderV3(PartnerTradeTypeEnum tradeType, WxPayPartnerUnifiedOrderV3Request request) throws WxPayException;
  542. /**
  543. * 在发起微信支付前,需要调用统一下单接口,获取"预支付交易会话标识"
  544. *
  545. * @param tradeType the trade type
  546. * @param request 请求对象,注意一些参数如spAppid、spMchid等不用设置,方法内会自动从配置对象中获取到(前提是对应配置中已经设置)
  547. * @return the wx pay unified order result
  548. * @throws WxPayException the wx pay exception
  549. */
  550. WxPayUnifiedOrderV3Result unifiedPartnerOrderV3(PartnerTradeTypeEnum tradeType, WxPayPartnerUnifiedOrderV3Request request) throws WxPayException;
  551. /**
  552. * 在发起微信支付前,需要调用统一下单接口,获取"预支付交易会话标识"
  553. *
  554. * @param tradeType the trade type
  555. * @param request 请求对象,注意一些参数如appid、mchid等不用设置,方法内会自动从配置对象中获取到(前提是对应配置中已经设置)
  556. * @return the wx pay unified order result
  557. * @throws WxPayException the wx pay exception
  558. */
  559. WxPayUnifiedOrderV3Result unifiedOrderV3(TradeTypeEnum tradeType, WxPayUnifiedOrderV3Request request) throws WxPayException;
  560. /**
  561. * <pre>
  562. * 合单支付API(APP支付、JSAPI支付、H5支付、NATIVE支付).
  563. * 请求URL:
  564. * https://api.mch.weixin.qq.com/v3/combine-transactions/app
  565. * https://api.mch.weixin.qq.com/v3/combine-transactions/h5
  566. * https://api.mch.weixin.qq.com/v3/combine-transactions/jsapi
  567. * https://api.mch.weixin.qq.com/v3/combine-transactions/native
  568. * 文档地址: <a href="https://pay.weixin.qq.com/wiki/doc/apiv3/open/pay/chapter2_9_3.shtml">https://pay.weixin.qq.com/wiki/doc/apiv3/open/pay/chapter2_9_3.shtml</a>
  569. * </pre>
  570. *
  571. * @param tradeType 支付方式
  572. * @param request 请求对象
  573. * @return 微信合单支付返回 combine transactions result
  574. * @throws WxPayException the wx pay exception
  575. */
  576. CombineTransactionsResult combine(TradeTypeEnum tradeType, CombineTransactionsRequest request) throws WxPayException;
  577. /**
  578. * <pre>
  579. * 合单支付API(APP支付、JSAPI支付、H5支付、NATIVE支付).
  580. * 请求URL:
  581. * https://api.mch.weixin.qq.com/v3/combine-transactions/app
  582. * https://api.mch.weixin.qq.com/v3/combine-transactions/h5
  583. * https://api.mch.weixin.qq.com/v3/combine-transactions/jsapi
  584. * https://api.mch.weixin.qq.com/v3/combine-transactions/native
  585. * 文档地址: <a href="https://pay.weixin.qq.com/wiki/doc/apiv3/open/pay/chapter2_9_3.shtml">https://pay.weixin.qq.com/wiki/doc/apiv3/open/pay/chapter2_9_3.shtml</a>
  586. * </pre>
  587. *
  588. * @param <T> the type parameter
  589. * @param tradeType 支付方式
  590. * @param request 请求对象
  591. * @return 调起支付需要的参数 t
  592. * @throws WxPayException the wx pay exception
  593. */
  594. <T> T combineTransactions(TradeTypeEnum tradeType, CombineTransactionsRequest request) throws WxPayException;
  595. /**
  596. * 该接口调用“统一下单”接口,并拼装发起支付请求需要的参数.
  597. * 详见https://pay.weixin.qq.com/wiki/doc/api/app/app.php?chapter=8_5
  598. *
  599. * @param request 请求对象,注意一些参数如appid、mchid等不用设置,方法内会自动从配置对象中获取到(前提是对应配置中已经设置)
  600. * @return the pay info
  601. * @throws WxPayException the wx pay exception
  602. * @deprecated 建议使用 {@link WxPayService#createOrder(WxPayUnifiedOrderRequest)}
  603. */
  604. @Deprecated
  605. Map<String, String> getPayInfo(WxPayUnifiedOrderRequest request) throws WxPayException;
  606. /**
  607. * 获取配置.
  608. *
  609. * @return the config
  610. */
  611. WxPayConfig getConfig();
  612. /**
  613. * 设置配置对象.
  614. *
  615. * @param config the config
  616. */
  617. void setConfig(WxPayConfig config);
  618. /**
  619. * <pre>
  620. * 微信支付-申请退款.
  621. * 详见 <a href="https://pay.weixin.qq.com/wiki/doc/api/jsapi.php?chapter=9_4">https://pay.weixin.qq.com/wiki/doc/api/jsapi.php?chapter=9_4</a>
  622. * 接口链接:https://api.mch.weixin.qq.com/secapi/pay/refund
  623. * </pre>
  624. *
  625. * @param request 请求对象
  626. * @return 退款操作结果 wx pay refund result
  627. * @throws WxPayException the wx pay exception
  628. */
  629. WxPayRefundResult refund(WxPayRefundRequest request) throws WxPayException;
  630. /**
  631. * <pre>
  632. * 申请退款API(支持单品).
  633. * 详见 <a href="https://pay.weixin.qq.com/wiki/doc/api/danpin.php?chapter=9_103&index=3">https://pay.weixin.qq.com/wiki/doc/api/danpin.php?chapter=9_103&index=3</a>
  634. *
  635. * 应用场景
  636. * 当交易发生之后一段时间内,由于买家或者卖家的原因需要退款时,卖家可以通过退款接口将支付款退还给买家,微信支付将在收到退款请求并且验证成功之后,按照退款规则将支付款按原路退到买家帐号上。
  637. *
  638. * 注意:
  639. * 1、交易时间超过一年的订单无法提交退款;
  640. * 2、微信支付退款支持单笔交易分多次退款,多次退款需要提交原支付订单的商户订单号和设置不同的退款单号。申请退款总金额不能超过订单金额。 一笔退款失败后重新提交,请不要更换退款单号,请使用原商户退款单号。
  641. * 3、请求频率限制:150qps,即每秒钟正常的申请退款请求次数不超过150次
  642. * 错误或无效请求频率限制:6qps,即每秒钟异常或错误的退款申请请求不超过6次
  643. * 4、每个支付订单的部分退款次数不能超过50次
  644. * 5、本接口支持单品优惠订单全额退款和单品优惠订单部分退款,推荐使用本接口,如果使用不支持单品优惠部分退款的历史接口,请看https://pay.weixin.qq.com/wiki/doc/api/jsapi_sl.php?chapter=9_4
  645. *
  646. * 接口地址
  647. * https://api.mch.weixin.qq.com/secapi/pay/refundv2
  648. * https://api2.mch.weixin.qq.com/secapi/pay/refundv2(备用域名)见跨城冗灾方案
  649. * </pre>
  650. *
  651. * @param request 请求对象
  652. * @return 退款操作结果 wx pay refund result
  653. * @throws WxPayException the wx pay exception
  654. */
  655. WxPayRefundResult refundV2(WxPayRefundRequest request) throws WxPayException;
  656. /**
  657. * <pre>
  658. * 申请退款API(支持单品).
  659. * 详见 <a href="https://pay.weixin.qq.com/wiki/doc/apiv3/apis/chapter3_1_9.shtml">https://pay.weixin.qq.com/wiki/doc/apiv3/apis/chapter3_1_9.shtml</a>
  660. *
  661. * 应用场景
  662. * 当交易发生之后一年内,由于买家或者卖家的原因需要退款时,卖家可以通过退款接口将支付金额退还给买家,微信支付将在收到退款请求并且验证成功之后,将支付款按原路退还至买家账号上。
  663. *
  664. * 注意:
  665. * 1、交易时间超过一年的订单无法提交退款
  666. * 2、微信支付退款支持单笔交易分多次退款(不超50次),多次退款需要提交原支付订单的商户订单号和设置不同的退款单号。申请退款总金额不能超过订单金额。 一笔退款失败后重新提交,请不要更换退款单号,请使用原商户退款单号
  667. * 3、错误或无效请求频率限制:6qps,即每秒钟异常或错误的退款申请请求不超过6次
  668. * 4、每个支付订单的部分退款次数不能超过50次
  669. * 5、如果同一个用户有多笔退款,建议分不同批次进行退款,避免并发退款导致退款失败
  670. * 6、申请退款接口的返回仅代表业务的受理情况,具体退款是否成功,需要通过退款查询接口获取结果
  671. * 7、一个月之前的订单申请退款频率限制为:5000/min
  672. *
  673. * 接口地址
  674. * https://api.mch.weixin.qq.com/v3/refund/domestic/refunds
  675. * </pre>
  676. *
  677. * @param request 请求对象
  678. * @return 退款操作结果 wx pay refund result
  679. * @throws WxPayException the wx pay exception
  680. */
  681. WxPayRefundV3Result refundV3(WxPayRefundV3Request request) throws WxPayException;
  682. /**
  683. * <pre>
  684. * 微信支付-查询退款.
  685. * 应用场景:
  686. * 提交退款申请后,通过调用该接口查询退款状态。退款有一定延时,用零钱支付的退款20分钟内到账,
  687. * 银行卡支付的退款3个工作日后重新查询退款状态。
  688. * 详见 <a href="https://pay.weixin.qq.com/wiki/doc/api/jsapi.php?chapter=9_5">https://pay.weixin.qq.com/wiki/doc/api/jsapi.php?chapter=9_5</a>
  689. * 接口链接:https://api.mch.weixin.qq.com/pay/refundquery
  690. * </pre>
  691. * 以下四个参数四选一
  692. *
  693. * @param transactionId 微信订单号
  694. * @param outTradeNo 商户订单号
  695. * @param outRefundNo 商户退款单号
  696. * @param refundId 微信退款单号
  697. * @return 退款信息 wx pay refund query result
  698. * @throws WxPayException the wx pay exception
  699. */
  700. WxPayRefundQueryResult refundQuery(String transactionId, String outTradeNo, String outRefundNo, String refundId)
  701. throws WxPayException;
  702. /**
  703. * <pre>
  704. * 微信支付-查询退款(适合于需要自定义子商户号和子商户appid的情形).
  705. * 应用场景:
  706. * 提交退款申请后,通过调用该接口查询退款状态。退款有一定延时,用零钱支付的退款20分钟内到账,
  707. * 银行卡支付的退款3个工作日后重新查询退款状态。
  708. * 详见 <a href="https://pay.weixin.qq.com/wiki/doc/api/jsapi.php?chapter=9_5">https://pay.weixin.qq.com/wiki/doc/api/jsapi.php?chapter=9_5</a>
  709. * 接口链接:https://api.mch.weixin.qq.com/pay/refundquery
  710. * </pre>
  711. *
  712. * @param request 微信退款单号
  713. * @return 退款信息 wx pay refund query result
  714. * @throws WxPayException the wx pay exception
  715. */
  716. WxPayRefundQueryResult refundQuery(WxPayRefundQueryRequest request) throws WxPayException;
  717. /**
  718. * <pre>
  719. * 微信支付-查询退款API(支持单品).
  720. * 应用场景
  721. * 提交退款申请后,通过调用该接口查询退款状态。退款有一定延时,用零钱支付的退款20分钟内到账,银行卡支付的退款3个工作日后重新查询退款状态。
  722. * 注意:
  723. * 1、本接口支持查询单品优惠相关退款信息,且仅支持按微信退款单号或商户退款单号查询,若继续调用老查询退款接口,
  724. * 请见https://pay.weixin.qq.com/wiki/doc/api/jsapi_sl.php?chapter=9_5
  725. * 2、请求频率限制:300qps,即每秒钟正常的退款查询请求次数不超过300次
  726. * 3、错误或无效请求频率限制:6qps,即每秒钟异常或错误的退款查询请求不超过6次
  727. *
  728. * 接口地址
  729. * https://api.mch.weixin.qq.com/pay/refundqueryv2
  730. * https://api2.mch.weixin.qq.com/pay/refundqueryv2(备用域名)见跨城冗灾方案
  731. * 详见 <a href="https://pay.weixin.qq.com/wiki/doc/api/danpin.php?chapter=9_104&index=4">https://pay.weixin.qq.com/wiki/doc/api/danpin.php?chapter=9_104&index=4</a>
  732. * </pre>
  733. *
  734. * @param request 微信退款单号
  735. * @return 退款信息 wx pay refund query result
  736. * @throws WxPayException the wx pay exception
  737. */
  738. WxPayRefundQueryResult refundQueryV2(WxPayRefundQueryRequest request) throws WxPayException;
  739. /**
  740. * <pre>
  741. * 微信支付-查询退款
  742. * 应用场景:
  743. * 提交退款申请后,通过调用该接口查询退款状态。退款有一定延时,建议在提交退款申请后1分钟发起查询退款状态,一般来说零钱支付的退款5分钟内到账,银行卡支付的退款1-3个工作日到账。
  744. * 详见 <a href="https://pay.weixin.qq.com/wiki/doc/apiv3/apis/chapter3_1_10.shtml">https://pay.weixin.qq.com/wiki/doc/apiv3/apis/chapter3_1_10.shtml</a>
  745. * 接口链接:https://api.mch.weixin.qq.com/v3/refund/domestic/refunds/{out_refund_no}
  746. * </pre>
  747. *
  748. * @param outRefundNo 商户退款单号
  749. * @return 退款信息 wx pay refund query result
  750. * @throws WxPayException the wx pay exception
  751. */
  752. WxPayRefundQueryV3Result refundQueryV3(String outRefundNo) throws WxPayException;
  753. /**
  754. * <pre>
  755. * 微信支付-查询退款
  756. * 应用场景:
  757. * 提交退款申请后,通过调用该接口查询退款状态。退款有一定延时,建议在提交退款申请后1分钟发起查询退款状态,一般来说零钱支付的退款5分钟内到账,银行卡支付的退款1-3个工作日到账。
  758. * 详见 <a href="https://pay.weixin.qq.com/wiki/doc/apiv3/apis/chapter3_1_10.shtml">https://pay.weixin.qq.com/wiki/doc/apiv3/apis/chapter3_1_10.shtml</a>
  759. * 接口链接:https://api.mch.weixin.qq.com/v3/refund/domestic/refunds/{out_refund_no}
  760. * </pre>
  761. *
  762. * @param request 微信退款单号
  763. * @return 退款信息 wx pay refund query result
  764. * @throws WxPayException the wx pay exception
  765. */
  766. WxPayRefundQueryV3Result refundQueryV3(WxPayRefundQueryV3Request request) throws WxPayException;
  767. /**
  768. * 解析支付结果通知.
  769. * 详见https://pay.weixin.qq.com/wiki/doc/api/jsapi.php?chapter=9_7
  770. *
  771. * @param xmlData the xml data
  772. * @return the wx pay order notify result
  773. * @throws WxPayException the wx pay exception
  774. */
  775. WxPayOrderNotifyResult parseOrderNotifyResult(String xmlData) throws WxPayException;
  776. /**
  777. * 解析支付结果通知.
  778. * 详见https://pay.weixin.qq.com/wiki/doc/api/jsapi.php?chapter=9_7
  779. *
  780. * @param xmlData the xml data
  781. * @param signType 签名类型
  782. * @return the wx pay order notify result
  783. * @throws WxPayException the wx pay exception
  784. */
  785. WxPayOrderNotifyResult parseOrderNotifyResult(String xmlData, String signType) throws WxPayException;
  786. /**
  787. * 解析支付结果v3通知. 直连商户模式
  788. * 详见https://pay.weixin.qq.com/wiki/doc/apiv3/apis/chapter3_1_5.shtml
  789. *
  790. * @param notifyData 通知数据
  791. * @param header 通知头部数据,不传则表示不校验头
  792. * @return the wx pay order notify result
  793. * @throws WxPayException the wx pay exception
  794. */
  795. WxPayNotifyV3Result parseOrderNotifyV3Result(String notifyData, SignatureHeader header) throws WxPayException;
  796. /**
  797. * 服务商模式解析支付结果v3通知.
  798. * 详见https://pay.weixin.qq.com/wiki/doc/apiv3_partner/apis/chapter4_1_5.shtml
  799. *
  800. * @param notifyData 通知数据
  801. * @param header 通知头部数据,不传则表示不校验头
  802. * @return the wx pay order notify result
  803. * @throws WxPayException the wx pay exception
  804. */
  805. WxPayPartnerNotifyV3Result parsePartnerOrderNotifyV3Result(String notifyData, SignatureHeader header) throws WxPayException;
  806. /**
  807. * 支付服务商和直连商户两种模式
  808. * 详见https://pay.weixin.qq.com/wiki/doc/apiv3/apis/chapter3_1_5.shtml
  809. *
  810. * @param notifyData 通知数据
  811. * @param header 通知头部数据,不传则表示不校验头
  812. * @param resultType 结果类型
  813. * @param dataType 结果数据类型
  814. * @return the wx pay order notify result
  815. * @throws WxPayException the wx pay exception
  816. */
  817. <T extends WxPayBaseNotifyV3Result<E>, E> T baseParseOrderNotifyV3Result(String notifyData, SignatureHeader header, Class<T> resultType, Class<E> dataType) throws WxPayException;
  818. /**
  819. * <pre>
  820. * 合单支付通知回调数据处理
  821. * 文档地址: <a href="https://pay.weixin.qq.com/wiki/doc/apiv3/apis/chapter5_1_13.shtml">https://pay.weixin.qq.com/wiki/doc/apiv3/apis/chapter5_1_13.shtml</a>
  822. * </pre>
  823. *
  824. * @param notifyData 通知数据
  825. * @param header 通知头部数据,不传则表示不校验头
  826. * @return 解密后通知数据 combine transactions notify result
  827. * @throws WxPayException the wx pay exception
  828. */
  829. CombineNotifyResult parseCombineNotifyResult(String notifyData, SignatureHeader header) throws WxPayException;
  830. /**
  831. * 解析退款结果通知
  832. * 详见https://pay.weixin.qq.com/wiki/doc/api/jsapi.php?chapter=9_16&index=9
  833. *
  834. * @param xmlData the xml data
  835. * @return the wx pay refund notify result
  836. * @throws WxPayException the wx pay exception
  837. */
  838. WxPayRefundNotifyResult parseRefundNotifyResult(String xmlData) throws WxPayException;
  839. /**
  840. * 解析直连商户退款结果通知
  841. * 详见https://pay.weixin.qq.com/wiki/doc/api/jsapi.php?chapter=9_16&index=9
  842. *
  843. * @param notifyData 通知数据
  844. * @param header 通知头部数据,不传则表示不校验头
  845. * @return the wx pay refund notify result
  846. * @throws WxPayException the wx pay exception
  847. */
  848. WxPayRefundNotifyV3Result parseRefundNotifyV3Result(String notifyData, SignatureHeader header) throws WxPayException;
  849. /**
  850. * 解析服务商模式退款结果通知
  851. * 详见https://pay.weixin.qq.com/wiki/doc/apiv3_partner/apis/chapter4_1_11.shtml
  852. *
  853. * @param notifyData 通知数据
  854. * @param header 通知头部数据,不传则表示不校验头
  855. * @return the wx pay refund notify result
  856. * @throws WxPayException the wx pay exception
  857. */
  858. WxPayPartnerRefundNotifyV3Result parsePartnerRefundNotifyV3Result(String notifyData, SignatureHeader header) throws WxPayException;
  859. /**
  860. * 解析扫码支付回调通知
  861. * 详见https://pay.weixin.qq.com/wiki/doc/api/native.php?chapter=6_4
  862. *
  863. * @param xmlData the xml data
  864. * @param signType 签名类型
  865. * @return the wx scan pay notify result
  866. * @throws WxPayException the wx pay exception
  867. */
  868. WxScanPayNotifyResult parseScanPayNotifyResult(String xmlData, String signType) throws WxPayException;
  869. /**
  870. * 解析扫码支付回调通知
  871. * 详见https://pay.weixin.qq.com/wiki/doc/api/native.php?chapter=6_4
  872. *
  873. * @param xmlData the xml data
  874. * @return the wx scan pay notify result
  875. * @throws WxPayException the wx pay exception
  876. */
  877. WxScanPayNotifyResult parseScanPayNotifyResult(String xmlData) throws WxPayException;
  878. /**
  879. * <pre>
  880. * 扫码支付模式一生成二维码的方法。
  881. * 二维码中的内容为链接,形式为:
  882. * weixin://wxpay/bizpayurl?sign=XXXXX&appid=XXXXX&mch_id=XXXXX&product_id=XXXXXX&time_stamp=XXXXXX&nonce_str=XXXXX
  883. * 其中XXXXX为商户需要填写的内容,商户将该链接生成二维码,如需要打印发布二维码,需要采用此格式。商户可调用第三方库生成二维码图片。
  884. * 文档详见: <a href="https://pay.weixin.qq.com/wiki/doc/api/native.php?chapter=6_4">https://pay.weixin.qq.com/wiki/doc/api/native.php?chapter=6_4</a>
  885. * </pre>
  886. *
  887. * @param productId 产品Id
  888. * @param logoFile 商户logo图片的文件对象,可以为空
  889. * @param sideLength 要生成的二维码的边长,如果为空,则取默认值400
  890. * @return 生成的二维码的字节数组 byte [ ]
  891. */
  892. byte[] createScanPayQrcodeMode1(String productId, File logoFile, Integer sideLength);
  893. /**
  894. * <pre>
  895. * 扫码支付模式一生成二维码的方法.
  896. * 二维码中的内容为链接,形式为:
  897. * weixin://wxpay/bizpayurl?sign=XXXXX&appid=XXXXX&mch_id=XXXXX&product_id=XXXXXX&time_stamp=XXXXXX&nonce_str=XXXXX
  898. * 其中XXXXX为商户需要填写的内容,商户将该链接生成二维码,如需要打印发布二维码,需要采用此格式。商户可调用第三方库生成二维码图片。
  899. * 文档详见: <a href="https://pay.weixin.qq.com/wiki/doc/api/native.php?chapter=6_4">https://pay.weixin.qq.com/wiki/doc/api/native.php?chapter=6_4</a>
  900. * </pre>
  901. *
  902. * @param productId 产品Id
  903. * @return 生成的二维码URL连接 string
  904. */
  905. String createScanPayQrcodeMode1(String productId);
  906. /**
  907. * <pre>
  908. * 扫码支付模式二生成二维码的方法.
  909. * 对应链接格式:weixin://wxpay/bizpayurl?sr=XXXXX。请商户调用第三方库将code_url生成二维码图片。
  910. * 该模式链接较短,生成的二维码打印到结账小票上的识别率较高。
  911. * 文档详见: <a href="https://pay.weixin.qq.com/wiki/doc/api/native.php?chapter=6_5">https://pay.weixin.qq.com/wiki/doc/api/native.php?chapter=6_5</a>
  912. * </pre>
  913. *
  914. * @param codeUrl 微信返回的交易会话的二维码链接
  915. * @param logoFile 商户logo图片的文件对象,可以为空
  916. * @param sideLength 要生成的二维码的边长,如果为空,则取默认值400
  917. * @return 生成的二维码的字节数组 byte [ ]
  918. */
  919. byte[] createScanPayQrcodeMode2(String codeUrl, File logoFile, Integer sideLength);
  920. /**
  921. * <pre>
  922. * 交易保障.
  923. * 应用场景:
  924. * 商户在调用微信支付提供的相关接口时,会得到微信支付返回的相关信息以及获得整个接口的响应时间。
  925. * 为提高整体的服务水平,协助商户一起提高服务质量,微信支付提供了相关接口调用耗时和返回信息的主动上报接口,
  926. * 微信支付可以根据商户侧上报的数据进一步优化网络部署,完善服务监控,和商户更好的协作为用户提供更好的业务体验。
  927. * 接口地址: <a href="https://api.mch.weixin.qq.com/payitil/report">https://api.mch.weixin.qq.com/payitil/report</a>
  928. * 是否需要证书:不需要
  929. * </pre>
  930. *
  931. * @param request the request
  932. * @throws WxPayException the wx pay exception
  933. */
  934. void report(WxPayReportRequest request) throws WxPayException;
  935. /**
  936. * <pre>
  937. * 下载对账单.
  938. * 商户可以通过该接口下载历史交易清单。比如掉单、系统错误等导致商户侧和微信侧数据不一致,通过对账单核对后可校正支付状态。
  939. * 注意:
  940. * 1、微信侧未成功下单的交易不会出现在对账单中。支付成功后撤销的交易会出现在对账单中,跟原支付单订单号一致,bill_type为REVOKED;
  941. * 2、微信在次日9点启动生成前一天的对账单,建议商户10点后再获取;
  942. * 3、对账单中涉及金额的字段单位为“元”。
  943. * 4、对账单接口只能下载三个月以内的账单。
  944. * 接口链接:<a href="https://api.mch.weixin.qq.com/pay/downloadbill">https://api.mch.weixin.qq.com/pay/downloadbill</a>
  945. * 详情请见: <a href="https://pay.weixin.qq.com/wiki/doc/api/jsapi.php?chapter=9_6">下载对账单</a>
  946. * </pre>
  947. *
  948. * @param billDate 对账单日期 bill_date 下载对账单的日期,格式:20140603
  949. * @param billType 账单类型 bill_type ALL,返回当日所有订单信息,默认值,SUCCESS,返回当日成功支付的订单,REFUND,返回当日退款订单
  950. * @param tarType 压缩账单 tar_type 非必传参数,固定值:GZIP,返回格式为.gzip的压缩包账单。不传则默认为数据流形式。
  951. * @param deviceInfo 设备号 device_info 非必传参数,终端设备号
  952. * @return 对账内容原始字符串 string
  953. * @throws WxPayException the wx pay exception
  954. */
  955. String downloadRawBill(String billDate, String billType, String tarType, String deviceInfo) throws WxPayException;
  956. /**
  957. * <pre>
  958. * 下载对账单(适合于需要自定义子商户号和子商户appid的情形).
  959. * 商户可以通过该接口下载历史交易清单。比如掉单、系统错误等导致商户侧和微信侧数据不一致,通过对账单核对后可校正支付状态。
  960. * 注意:
  961. * 1、微信侧未成功下单的交易不会出现在对账单中。支付成功后撤销的交易会出现在对账单中,跟原支付单订单号一致,bill_type为REVOKED;
  962. * 2、微信在次日9点启动生成前一天的对账单,建议商户10点后再获取;
  963. * 3、对账单中涉及金额的字段单位为“元”。
  964. * 4、对账单接口只能下载三个月以内的账单。
  965. * 接口链接:https://api.mch.weixin.qq.com/pay/downloadbill
  966. * 详情请见: <a href="https://pay.weixin.qq.com/wiki/doc/api/jsapi.php?chapter=9_6">下载对账单</a>
  967. * </pre>
  968. *
  969. * @param request 下载对账单请求
  970. * @return 对账内容原始字符串 string
  971. * @throws WxPayException the wx pay exception
  972. */
  973. String downloadRawBill(WxPayDownloadBillRequest request) throws WxPayException;
  974. /**
  975. * <pre>
  976. * 下载对账单.
  977. * 商户可以通过该接口下载历史交易清单。比如掉单、系统错误等导致商户侧和微信侧数据不一致,通过对账单核对后可校正支付状态。
  978. * 注意:
  979. * 1、微信侧未成功下单的交易不会出现在对账单中。支付成功后撤销的交易会出现在对账单中,跟原支付单订单号一致,bill_type为REVOKED;
  980. * 2、微信在次日9点启动生成前一天的对账单,建议商户10点后再获取;
  981. * 3、对账单中涉及金额的字段单位为“元”。
  982. * 4、对账单接口只能下载三个月以内的账单。
  983. * 接口链接:https://api.mch.weixin.qq.com/pay/downloadbill
  984. * 详情请见: <a href="https://pay.weixin.qq.com/wiki/doc/api/jsapi.php?chapter=9_6">下载对账单</a>
  985. * </pre>
  986. *
  987. * @param billDate 对账单日期 bill_date 下载对账单的日期,格式:20140603
  988. * @param billType 账单类型 bill_type ALL,返回当日所有订单信息,默认值,SUCCESS,返回当日成功支付的订单,REFUND,返回当日退款订单
  989. * @param tarType 压缩账单 tar_type 非必传参数,固定值:GZIP,返回格式为.gzip的压缩包账单。不传则默认为数据流形式。
  990. * @param deviceInfo 设备号 device_info 非必传参数,终端设备号
  991. * @return WxPayBillResult对象 wx pay bill result
  992. * @throws WxPayException the wx pay exception
  993. */
  994. WxPayBillResult downloadBill(String billDate, String billType, String tarType, String deviceInfo) throws WxPayException;
  995. /**
  996. * <pre>
  997. * 下载对账单(适合于需要自定义子商户号和子商户appid的情形).
  998. * 商户可以通过该接口下载历史交易清单。比如掉单、系统错误等导致商户侧和微信侧数据不一致,通过对账单核对后可校正支付状态。
  999. * 注意:
  1000. * 1、微信侧未成功下单的交易不会出现在对账单中。支付成功后撤销的交易会出现在对账单中,跟原支付单订单号一致,bill_type为REVOKED;
  1001. * 2、微信在次日9点启动生成前一天的对账单,建议商户10点后再获取;
  1002. * 3、对账单中涉及金额的字段单位为“元”。
  1003. * 4、对账单接口只能下载三个月以内的账单。
  1004. * 接口链接:https://api.mch.weixin.qq.com/pay/downloadbill
  1005. * 详情请见: <a href="https://pay.weixin.qq.com/wiki/doc/api/jsapi.php?chapter=9_6">下载对账单</a>
  1006. * </pre>
  1007. *
  1008. * @param request 下载对账单请求
  1009. * @return WxPayBillResult对象 wx pay bill result
  1010. * @throws WxPayException the wx pay exception
  1011. */
  1012. WxPayBillResult downloadBill(WxPayDownloadBillRequest request) throws WxPayException;
  1013. /**
  1014. * <pre>
  1015. * 下载资金账单.
  1016. * 商户可以通过该接口下载自2017年6月1日起 的历史资金流水账单。
  1017. * 注意:
  1018. * 1、资金账单中的数据反映的是商户微信账户资金变动情况;
  1019. * 2、当日账单在次日上午9点开始生成,建议商户在上午10点以后获取;
  1020. * 3、资金账单中涉及金额的字段单位为“元”。
  1021. * 接口链接:https://api.mch.weixin.qq.com/pay/downloadfundflow
  1022. * 详情请见: <a href="https://pay.weixin.qq.com/wiki/doc/api/jsapi.php?chapter=9_18">下载对账单</a>
  1023. * </pre>
  1024. *
  1025. * @param billDate 资金账单日期 bill_date 下载对账单的日期,格式:20140603
  1026. * @param accountType 资金账户类型 account_type Basic,基本账户,Operation,运营账户,Fees,手续费账户
  1027. * @param tarType 压缩账单 tar_type 非必传参数,固定值:GZIP,返回格式为.gzip的压缩包账单。不传则默认为数据流形式。
  1028. * @return WxPayFundFlowResult对象 wx pay fund flow result
  1029. * @throws WxPayException the wx pay exception
  1030. */
  1031. WxPayFundFlowResult downloadFundFlow(String billDate, String accountType, String tarType) throws WxPayException;
  1032. /**
  1033. * <pre>
  1034. * 下载资金账单.
  1035. * 商户可以通过该接口下载自2017年6月1日起 的历史资金流水账单。
  1036. * 注意:
  1037. * 1、资金账单中的数据反映的是商户微信账户资金变动情况;
  1038. * 2、当日账单在次日上午9点开始生成,建议商户在上午10点以后获取;
  1039. * 3、资金账单中涉及金额的字段单位为“元”。
  1040. * 接口链接:https://api.mch.weixin.qq.com/pay/downloadfundflow
  1041. * 详情请见: <a href="https://pay.weixin.qq.com/wiki/doc/api/jsapi.php?chapter=9_18">下载对账单</a>
  1042. * </pre>
  1043. *
  1044. * @param request 下载资金流水请求
  1045. * @return WxPayFundFlowResult对象 wx pay fund flow result
  1046. * @throws WxPayException the wx pay exception
  1047. */
  1048. WxPayFundFlowResult downloadFundFlow(WxPayDownloadFundFlowRequest request) throws WxPayException;
  1049. /**
  1050. * <pre>
  1051. * 申请交易账单API
  1052. * 微信支付按天提供交易账单文件,商户可以通过该接口获取账单文件的下载地址。文件内包含交易相关的金额、时间、营销等信息,供商户核对订单、退款、银行到账等情况。
  1053. * 注意:
  1054. * • 微信侧未成功下单的交易不会出现在对账单中。支付成功后撤销的交易会出现在对账单中,跟原支付单订单号一致;
  1055. * • 对账单中涉及金额的字段单位为“元”;
  1056. * • 对账单接口只能下载三个月以内的账单。
  1057. * 接口链接:<a href="https://api.mch.weixin.qq.com/v3/bill/tradebill">https://api.mch.weixin.qq.com/v3/bill/tradebill</a>
  1058. * 详情请见: <a href="https://pay.weixin.qq.com/wiki/doc/apiv3/apis/chapter3_1_6.shtml">申请交易账单</a>
  1059. * </pre>
  1060. *
  1061. * @param request 申请账单请求
  1062. * @return Result对象 apply trade bill result
  1063. * @throws WxPayException the wx pay exception
  1064. */
  1065. WxPayApplyBillV3Result applyTradeBill(WxPayApplyTradeBillV3Request request) throws WxPayException;
  1066. /**
  1067. * <pre>
  1068. * 申请资金账单API
  1069. * 微信支付按天提供微信支付账户的资金流水账单文件,商户可以通过该接口获取账单文件的下载地址。文件内包含该账户资金操作相关的业务单号、收支金额、记账时间等信息,供商户进行核对。
  1070. * 注意:
  1071. * • 资金账单中的数据反映的是商户微信支付账户资金变动情况;
  1072. * • 对账单中涉及金额的字段单位为“元”。
  1073. * 接口链接:<a href="https://api.mch.weixin.qq.com/v3/bill/fundflowbill">https://api.mch.weixin.qq.com/v3/bill/fundflowbill</a>
  1074. * 详情请见: <a href="https://pay.weixin.qq.com/wiki/doc/apiv3/apis/chapter3_1_7.shtml">申请资金账单</a>
  1075. * </pre>
  1076. *
  1077. * @param request 申请账单请求
  1078. * @return Result对象 apply fund flow bill result
  1079. * @throws WxPayException the wx pay exception
  1080. */
  1081. WxPayApplyBillV3Result applyFundFlowBill(WxPayApplyFundFlowBillV3Request request) throws WxPayException;
  1082. /**
  1083. * <pre>
  1084. * 下载账单API
  1085. * 下载账单API为通用接口,交易/资金账单都可以通过该接口获取到对应的账单。
  1086. * 注意:
  1087. * • 账单文件的下载地址的有效时间为30s。
  1088. * • 强烈建议商户将实际账单文件的哈希值和之前从接口获取到的哈希值进行比对,以确认数据的完整性。
  1089. * • 该接口响应的信息请求头中不包含微信接口响应的签名值,因此需要跳过验签的流程
  1090. * 接口链接:通过申请账单接口获取到“download_url”,URL有效期30s
  1091. * 详情请见: <a href="https://pay.weixin.qq.com/wiki/doc/apiv3/apis/chapter3_1_8.shtml">下载账单</a>
  1092. * </pre>
  1093. *
  1094. * @param url 微信返回的账单地址。
  1095. * @return 返回数据 return input stream
  1096. * @throws WxPayException the wx pay exception
  1097. */
  1098. InputStream downloadBill(String url) throws WxPayException;
  1099. /**
  1100. * <pre>
  1101. * 提交付款码支付.
  1102. * 文档地址:<a href="https://pay.weixin.qq.com/wiki/doc/api/micropay.php?chapter=9_10&index=1">https://pay.weixin.qq.com/wiki/doc/api/micropay.php?chapter=9_10&index=1</a>
  1103. * 应用场景:
  1104. * 收银员使用扫码设备读取微信用户刷卡授权码以后,二维码或条码信息传送至商户收银台,由商户收银台或者商户后台调用该接口发起支付。
  1105. * 提醒1:提交支付请求后微信会同步返回支付结果。当返回结果为“系统错误”时,商户系统等待5秒后调用【查询订单API】,查询支付实际交易结果;当返回结果为“USERPAYING”时,商户系统可设置间隔时间(建议10秒)重新查询支付结果,直到支付成功或超时(建议30秒);
  1106. * 提醒2:在调用查询接口返回后,如果交易状况不明晰,请调用【撤销订单API】,此时如果交易失败则关闭订单,该单不能再支付成功;如果交易成功,则将扣款退回到用户账户。当撤销无返回或错误时,请再次调用。注意:请勿扣款后立即调用【撤销订单API】,建议至少15秒后再调用。撤销订单API需要双向证书。
  1107. * 接口地址: <a href="https://api.mch.weixin.qq.com/pay/micropay">https://api.mch.weixin.qq.com/pay/micropay</a>
  1108. * 是否需要证书:不需要。
  1109. * </pre>
  1110. *
  1111. * @param request the request
  1112. * @return the wx pay micropay result
  1113. * @throws WxPayException the wx pay exception
  1114. */
  1115. WxPayMicropayResult micropay(WxPayMicropayRequest request) throws WxPayException;
  1116. /**
  1117. * <pre>
  1118. * 撤销订单API.
  1119. * 文档地址:https://pay.weixin.qq.com/wiki/doc/api/micropay.php?chapter=9_11&index=3
  1120. * 应用场景:
  1121. * 支付交易返回失败或支付系统超时,调用该接口撤销交易。如果此订单用户支付失败,微信支付系统会将此订单关闭;
  1122. * 如果用户支付成功,微信支付系统会将此订单资金退还给用户。
  1123. * 注意:7天以内的交易单可调用撤销,其他正常支付的单如需实现相同功能请调用申请退款API。
  1124. * 提交支付交易后调用【查询订单API】,没有明确的支付结果再调用【撤销订单API】。
  1125. * 调用支付接口后请勿立即调用撤销订单API,建议支付后至少15s后再调用撤销订单接口。
  1126. * 接口链接 :https://api.mch.weixin.qq.com/secapi/pay/reverse
  1127. * 是否需要证书:请求需要双向证书。
  1128. * </pre>
  1129. *
  1130. * @param request the request
  1131. * @return the wx pay order reverse result
  1132. * @throws WxPayException the wx pay exception
  1133. */
  1134. WxPayOrderReverseResult reverseOrder(WxPayOrderReverseRequest request) throws WxPayException;
  1135. /**
  1136. * <pre>
  1137. * 转换短链接.
  1138. * 文档地址:
  1139. * <a href="https://pay.weixin.qq.com/wiki/doc/api/micropay.php?chapter=9_9&index=8">https://pay.weixin.qq.com/wiki/doc/api/micropay.php?chapter=9_9&index=8</a>
  1140. * 应用场景:
  1141. * 该接口主要用于扫码原生支付模式一中的二维码链接转成短链接(weixin://wxpay/s/XXXXXX),减小二维码数据量,提升扫描速度和精确度。
  1142. * 接口地址:<a href="https://api.mch.weixin.qq.com/tools/shorturl">https://api.mch.weixin.qq.com/tools/shorturl</a>
  1143. * 是否需要证书:否
  1144. * </pre>
  1145. *
  1146. * @param request 请求对象
  1147. * @return the string
  1148. * @throws WxPayException the wx pay exception
  1149. */
  1150. String shorturl(WxPayShorturlRequest request) throws WxPayException;
  1151. /**
  1152. * <pre>
  1153. * 转换短链接.
  1154. * </pre>
  1155. *
  1156. * @param longUrl 需要被压缩的网址
  1157. * @return the string
  1158. * @throws WxPayException the wx pay exception
  1159. * @see WxPayService#shorturl(WxPayShorturlRequest) WxPayService#shorturl(WxPayShorturlRequest)WxPayService#shorturl(WxPayShorturlRequest)WxPayService#shorturl(WxPayShorturlRequest)
  1160. */
  1161. String shorturl(String longUrl) throws WxPayException;
  1162. /**
  1163. * <pre>
  1164. * 授权码查询OPENID接口.
  1165. * 通过授权码查询公众号Openid,调用查询后,该授权码只能由此商户号发起扣款,直至授权码更新。
  1166. * 文档地址:
  1167. * <a href="https://pay.weixin.qq.com/wiki/doc/api/micropay.php?chapter=9_13&index=9">https://pay.weixin.qq.com/wiki/doc/api/micropay.php?chapter=9_13&index=9</a>
  1168. * 接口链接:
  1169. * https://api.mch.weixin.qq.com/tools/authcodetoopenid
  1170. * </pre>
  1171. *
  1172. * @param request 请求对象
  1173. * @return openid string
  1174. * @throws WxPayException the wx pay exception
  1175. */
  1176. String authcode2Openid(WxPayAuthcode2OpenidRequest request) throws WxPayException;
  1177. /**
  1178. * <pre>
  1179. * 授权码查询OPENID接口.
  1180. * </pre>
  1181. *
  1182. * @param authCode 授权码
  1183. * @return openid string
  1184. * @throws WxPayException the wx pay exception
  1185. * @see WxPayService#authcode2Openid(WxPayAuthcode2OpenidRequest) WxPayService#authcode2Openid(WxPayAuthcode2OpenidRequest)WxPayService#authcode2Openid(WxPayAuthcode2OpenidRequest)WxPayService#authcode2Openid(WxPayAuthcode2OpenidRequest)
  1186. */
  1187. String authcode2Openid(String authCode) throws WxPayException;
  1188. /**
  1189. * <pre>
  1190. * 获取仿真测试系统的验签密钥.
  1191. * 请求Url: https://api.mch.weixin.qq.com/xdc/apiv2getsignkey/sign/getsignkey
  1192. * 是否需要证书: 否
  1193. * 请求方式: POST
  1194. * 文档地址:https://pay.weixin.qq.com/wiki/doc/api/jsapi.php?chapter=23_1
  1195. * </pre>
  1196. *
  1197. * @return the sandbox sign key
  1198. * @throws WxPayException the wx pay exception
  1199. */
  1200. String getSandboxSignKey() throws WxPayException;
  1201. /**
  1202. * <pre>
  1203. * 发放代金券
  1204. * 接口请求链接:https://api.mch.weixin.qq.com/mmpaymkttransfers/send_coupon
  1205. * 是否需要证书:请求需要双向证书。
  1206. * 文档地址:https://pay.weixin.qq.com/wiki/doc/api/tools/sp_coupon.php?chapter=12_3
  1207. * </pre>
  1208. *
  1209. * @param request the request
  1210. * @return the wx pay coupon send result
  1211. * @throws WxPayException the wx pay exception
  1212. */
  1213. WxPayCouponSendResult sendCoupon(WxPayCouponSendRequest request) throws WxPayException;
  1214. /**
  1215. * <pre>
  1216. * 查询代金券批次.
  1217. * 接口请求链接:https://api.mch.weixin.qq.com/mmpaymkttransfers/query_coupon_stock
  1218. * 文档地址:https://pay.weixin.qq.com/wiki/doc/api/tools/sp_coupon.php?chapter=12_4
  1219. * </pre>
  1220. *
  1221. * @param request the request
  1222. * @return the wx pay coupon stock query result
  1223. * @throws WxPayException the wx pay exception
  1224. */
  1225. WxPayCouponStockQueryResult queryCouponStock(WxPayCouponStockQueryRequest request) throws WxPayException;
  1226. /**
  1227. * <pre>
  1228. * 查询代金券信息.
  1229. * 接口请求链接:https://api.mch.weixin.qq.com/mmpaymkttransfers/querycouponsinfo
  1230. * 文档地址:https://pay.weixin.qq.com/wiki/doc/api/tools/sp_coupon.php?chapter=12_5
  1231. * </pre>
  1232. *
  1233. * @param request the request
  1234. * @return the wx pay coupon info query result
  1235. * @throws WxPayException the wx pay exception
  1236. */
  1237. WxPayCouponInfoQueryResult queryCouponInfo(WxPayCouponInfoQueryRequest request) throws WxPayException;
  1238. /**
  1239. * 获取微信请求数据,方便接口调用方获取处理.
  1240. *
  1241. * @return the wx api data
  1242. */
  1243. WxPayApiData getWxApiData();
  1244. /**
  1245. * <pre>
  1246. * 拉取订单评价数据.
  1247. * 商户可以通过该接口拉取用户在微信支付交易记录中针对你的支付记录进行的评价内容。商户可结合商户系统逻辑对该内容数据进行存储、分析、展示、客服回访以及其他使用。如商户业务对评价内容有依赖,可主动引导用户进入微信支付交易记录进行评价。
  1248. * 注意:
  1249. * 1. 该内容所有权为提供内容的微信用户,商户在使用内容的过程中应遵从用户意愿
  1250. * 2. 一次最多拉取200条评价数据,可根据时间区间分批次拉取
  1251. * 3. 接口只能拉取最近三个月以内的评价数据
  1252. * 接口链接:https://api.mch.weixin.qq.com/billcommentsp/batchquerycomment
  1253. * 是否需要证书:需要
  1254. * 文档地址:https://pay.weixin.qq.com/wiki/doc/api/jsapi.php?chapter=9_17&index=10
  1255. * </pre>
  1256. *
  1257. * @param beginDate 开始时间
  1258. * @param endDate 结束时间
  1259. * @param offset 位移
  1260. * @param limit 条数,建议填null,否则接口会报签名错误
  1261. * @return the string
  1262. * @throws WxPayException the wx pay exception
  1263. */
  1264. String queryComment(Date beginDate, Date endDate, Integer offset, Integer limit) throws WxPayException;
  1265. /**
  1266. * <pre>
  1267. * 拉取订单评价数据.
  1268. * 商户可以通过该接口拉取用户在微信支付交易记录中针对你的支付记录进行的评价内容。商户可结合商户系统逻辑对该内容数据进行存储、分析、展示、客服回访以及其他使用。如商户业务对评价内容有依赖,可主动引导用户进入微信支付交易记录进行评价。
  1269. * 注意:
  1270. * 1. 该内容所有权为提供内容的微信用户,商户在使用内容的过程中应遵从用户意愿
  1271. * 2. 一次最多拉取200条评价数据,可根据时间区间分批次拉取
  1272. * 3. 接口只能拉取最近三个月以内的评价数据
  1273. * 接口链接:https://api.mch.weixin.qq.com/billcommentsp/batchquerycomment
  1274. * 是否需要证书:需要
  1275. * 文档地址:https://pay.weixin.qq.com/wiki/doc/api/jsapi.php?chapter=9_17&index=10
  1276. * </pre>
  1277. *
  1278. * @param request 查询请求
  1279. * @return the string
  1280. * @throws WxPayException the wx pay exception
  1281. */
  1282. String queryComment(WxPayQueryCommentRequest request) throws WxPayException;
  1283. /**
  1284. * <pre>
  1285. * 获取微信刷脸支付凭证.
  1286. * 接口请求链接:https://payapp.weixin.qq.com/face/get_wxpayface_authinfo
  1287. * 文档地址:https://pay.weixin.qq.com/wiki/doc/api/tools/sp_coupon.php?chapter=12_5
  1288. * </pre>
  1289. *
  1290. * @param request the request
  1291. * @return the wx pay get face authinfo result
  1292. * @throws WxPayException the wx pay exception
  1293. */
  1294. WxPayFaceAuthInfoResult getWxPayFaceAuthInfo(WxPayFaceAuthInfoRequest request) throws WxPayException;
  1295. /**
  1296. * <pre>
  1297. * 提交刷脸支付.
  1298. * 文档地址:https://share.weiyun.com/5dxUgCw
  1299. * 应用场景:
  1300. * 用户在商超,便利店,餐饮等场景,在屏幕上通过刷脸完成支付。
  1301. * 步骤1:用户在自助收银机上点击“刷脸支付”;
  1302. * 步骤2:发起人脸识别,摄像头自动抓取识别用户人脸,提示用户输入11位手机号码;
  1303. * 步骤3:商户收银系统提交刷脸支付;
  1304. * 步骤4:微信支付后台收到支付请求,验证人脸信息,返回支付结果给商户收银系统。
  1305. * 是否需要证书:不需要。
  1306. * </pre>
  1307. *
  1308. * @param request the request
  1309. * @return the wx pay facepay result
  1310. * @throws WxPayException the wx pay exception
  1311. */
  1312. WxPayFacepayResult facepay(WxPayFacepayRequest request) throws WxPayException;
  1313. /**
  1314. * 查询汇率
  1315. * <pre>
  1316. * 应用场景:商户网站的商品以外币标价时,通过该接口可以实时查询到微信使用的转换汇率。汇率更新时间为北京时间上午10:00,一天更新一次。
  1317. * 文档地址:https://pay.weixin.qq.com/wiki/doc/api/app/app_jw.php?chapter=9_15&index=12
  1318. * 接口链接:https://api.mch.weixin.qq.com/pay/queryexchagerate
  1319. * </pre>
  1320. *
  1321. * @param feeType 外币币种
  1322. * @param date 日期,格式为yyyyMMdd,如2009年12月25日表示为20091225。时区为GMT+8 beijing
  1323. * @return . wx pay query exchange rate result
  1324. * @throws WxPayException .
  1325. */
  1326. WxPayQueryExchangeRateResult queryExchangeRate(String feeType, String date) throws WxPayException;
  1327. /**
  1328. * 解析投诉通知
  1329. * 详见https://pay.weixin.qq.com/wiki/doc/apiv3/apis/chapter10_2_16.shtml
  1330. *
  1331. * @param notifyData 通知数据
  1332. * @param header 通知头部数据,不传则表示不校验头
  1333. * @return the wx pay refund notify result
  1334. * @throws WxPayException the wx pay exception
  1335. */
  1336. ComplaintNotifyResult parseComplaintNotifyResult(String notifyData, SignatureHeader header) throws WxPayException;
  1337. /**
  1338. * 获取消费者投诉服务类.
  1339. *
  1340. * @return the complaints service
  1341. */
  1342. ComplaintService getComplaintsService();
  1343. /**
  1344. * 获取银行组件服务
  1345. *
  1346. * @return 银行组件服务
  1347. */
  1348. BankService getBankService();
  1349. /**
  1350. * 获取商家转账到零钱服务类.
  1351. *
  1352. * @return the transfers service
  1353. */
  1354. TransferService getTransferService();
  1355. /**
  1356. * 获取服务商支付分服务类
  1357. *
  1358. * @return the partner pay score service
  1359. */
  1360. PartnerPayScoreService getPartnerPayScoreService();
  1361. }