Cet article partage le code spécifique pour les commandes de clôture de paiement Java WeChat pour votre référence. Le contenu spécifique est le suivant
Documentation officielle
1. Scénarios d'application
Le paiement de la commande du marchand a échoué et doit générer un nouveau numéro de commande et recommencer le paiement. Vous devez appeler la commande du chronomètre pour le numéro de commande d'origine afin d'éviter le temps mort de paiement du système de paiement répété, et la sortie du système ne sera plus acceptée. Pour éviter la commande de l'utilisateur, veuillez appeler l'interface de la commande d'échange.
Remarque: L'interface de commande ne peut pas être appelée immédiatement après la génération de la commande et l'intervalle de temps d'appel minimum est de 5 minutes.
2. Adresse d'interface
https://api.mch.weixin.qq.com/pay/closeOrder
3. Demande les paramètres
Fermer uniquement selon le numéro de commande de votre système marchand
package com.phil.wechatpay.model.rep; import java.io.serializable; / ** * Paramètres de demande de commande rapprochés (XML normal) * @Author Phil * @Date 25 juillet 2017 * * / Classe publique CloseOrderAms étend AbstractPayParams implémente sérialisable {/ ** * * / private static final SerialVersionUID = -42064642880382724L; chaîne privée out_trade_no; // Numéro de commande de marchand public String Getout_trade_no () {return out_trade_no; } public void setout_trade_no (String out_trade_no) {this.out_trade_no = out_trade_no; }}4. Renvoyez le résultat
package com.phil.wechatpay.model.resp; import java.io.serializable; import com.phil.common.annotation.notrequire; / ** * Paramètre de retour d'ordre rapproché (avec <! [Cdata []]> Format XML) * * @author phil * @date 25 juillet 2017 * * / public class closeOrderResult étend AbstractPayResult implémente Serializable {private static final SerialVersionUid = -1996103742747816922L; chaîne privée return_code; // return Status Code Success / Fail @NotReQuire Private String return_msg; // RETOUR Informations / **** return_code est un succès **** / private String result_code; // Résultat commercial STRING PRIVATE RESTULT_MSG; // Résultat des affaires Description @NotRequire Private String err_code; // Erreur Retour Information Description @NotRequire Private String Err_Code_Des; // Erreur Retour des informations Description}5. Fermez la commande
package com.phil.wechatpay.Controller; Importer javax.servlet.http.httpservletRequest; import javax.servlet.http.httpservletResponse; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.sterreotype.Controller; import org.springframework.web.bind.annotation.requestmapping; import org.springframework.web.bind.annotation.ResponseBody; import com.phil.common.config.wechatconfig; import com.phil.common.util.httprequtitil; import com.phil.common.util.payutil; import com.phil.common.util.signatureUtil; import com.phil.common.util.xmlutil; import com.phil.wechatpay.model.rep.closeOrderParams; import com.phil.wechatpay.model.rep.closeOrderResult; import com.phil.wechatpay.service.wechatpayService; / ** * Close Order * @Author Phil * @Date 25 juillet 2017 * * / @Controller @RequestMapping ("/ wxpay /") Classe publique WeChatPayCloseOrderController {@autowired private WeChatPayService WeChatPayService; @ResponseBody @RequestMapping ("closeOrder") public closeOrderResult closeOrder (requête httpservletRequest, réponse httpservletResponse) exception {closeOrderResult closeOrderResult = null; CloseOrderParams CloseOrderAms = new CloseOrderParams (); closeOrderParams.setAppid (wechatconfig.app_id); closeOrderParams.setmch_id (wechatconfig.mch_id); closeOrderParams.setNonce_str (PayUtil.CreateNonCetr ()); closeOrderParams.setout_trade_no (""); // passe // chaîne XML demandée closeOrderXml = wechatpayService.abstractPayToxml (closeOrderParams); // fusionner la signature en service // return xml dans <! [CDATA [Success]]> Format String closeOrderResultXml = Httprequtil.httpsdefaultExECUTE (httprequtitil.post_method, wechatconfig.close_order_url, null, closeOrderXml); // Effectuer la vérification de la signature if (signatureUtil.CheckisSignValidFromWeixin (closeOrderResultXml)) {closeOrderResult = xmlutil.getObjectFromXml (closeOrderResultXml, closeOrderResult.class); } return CloseOrderResult; }}Ce qui précède est tout le contenu de cet article. J'espère que cela sera utile à l'apprentissage de tous et j'espère que tout le monde soutiendra davantage Wulin.com.