L'utilisation des enveloppes rouges WeChat est déjà très large. Cet article présente des exemples d'envoi d'enveloppes rouges sur WeChat. Vous avez besoin d'un compte public certifié, et vous pouvez ouvrir la plate-forme de paiement et de marchand de WeChat et d'activer les autorisations d'enveloppe Red Cash Red.
https://pay.weixin.qq.com Adresse de connexion marchande. Choisissez de voir les paquets Red Cash dans le centre de marketing
https://pay.weixin.qq.com/wiki/doc/api/tools/Cash_Coupon.php?chapter=13_1 Document officiel DÉCRESSION DESCRIPTION DES ENVOLES ROUGES CASS
Regardons d'abord quelques tests simples. La prémisse est que vous devez vous recharger d'abord sur la plate-forme marchande. Le prépaiement n'est pas pris en charge. Cet article résume uniquement les appels et la mise en œuvre de l'interface WECHAT Cash Red Enveloppe. Plus précisément, vous devez implémenter comment appeler cette interface en fonction de votre propre entreprise.
https://pay.weixin.qq.com/wiki/doc/api/tools/cash_cupon.php?chapter=13_4&index=3 Il existe toutes des explications pour les enveloppes rouges ordinaires dans le document. L'appel doit avoir un certificat de la plate-forme marchande.
Les paramètres requis sont également répertoriés. Décidez en fonction de vos besoins.
1.Java encapsuler un objet d'enveloppe rouge
/ ** * Objet d'enveloppe rouge * @author xiao shuai shuai * @date 2016-8-17 11:12:19 AM * @open source china http://my.oschina.net/xshuai * / public class redpack implémente serializable {private string signe; // Vérification générée en fonction des attributs de chaîne privée mch_billno; // Numéro de commande Private String MCH_ID; // Numéro de commerçant String privé WXAppid; // wechat appid private chaîne send_name; // nom de marchand chaîne privée re_openID; // user openId private chaîne total_amount; // montant de paiement chaîne privée total_num; // le nombre de destinataires envelope rouges enveloppe en espèces enveloppant une chaîne de chaîne privée de la chaîne d'interface ACT privé String nonce_str; // chaîne aléatoire // set est omis} 2. La classe d'outils requise CreateBillNo consiste à générer le numéro de commande du marchand. Les exigences officielles du document du site Web sont les suivantes:
/ ** * Classe d'outils d'enveloppe rouge * @author xiao shuai shuai * @date 2016-8-17 11:12:19 AM * @Open Source China http://my.oschina.net/xshuai * / public class redpackutil {/ ** * générer le numéro de marchand * @Param McH_ID Merchant numéro Static String createBillno () {// Composition: mch_id + yyyymmdd + 10 chiffres qui ne peuvent pas être répétés dans un jour // les numéros à 10 chiffres qui ne peuvent pas être répétés dans un jour sont les suivants: // Parce que chaque utilisateur est lié à l'utilisateur, leur utilisateur est différent, plus la date de génération aléatoire (10 longueur)) SimpledateFormat df = new SimpledateFormat ("yyyymmdd"); String NowTime = df.format (dt); int le long = 10; return wxConstants.mch_id + maintenant + getrandomnum (longueur); } / ** * Générer des nombres aléatoires avec des chiffres spécifiques * @param longueur * @return * / public static String getrandomnum (int longueur) {String val = ""; Aléatoire aléatoire = nouveau aléatoire (); for (int i = 0; i <length; i ++) {val + = string.valueof (random.nextint (10)); } return val; }} 3. Le travail précédent est très simple et nécessite un certificat et un numéro de marchand. Et si la plate-forme marchande a un montant, vous pouvez tester l'interface de l'enveloppe rouge en espèces
Redpack pack = new redpack (null // La première fois est vide, redpackutil.createbillno () // numéro de commande marchande, "votre propre numéro de marchand", "applid du compte officiel", "nom", "openId of the User nom "," note "," chaîne aléatoire ");
Sauf pour le signe du test, il est vide. Tout le reste peut être rempli. Maintenant, nous générons une signature de signe; générer un signe en fonction des paramètres de l'objet Pack;
Algorithme de signature spécifique https://pay.weixin.qq.com/wiki/doc/api/tools/cash_cupon.php?chapter=4_3 Adresse donnée par le site officiel
https://pay.weixin.qq.com/wiki/tools/signverify/ Vous pouvez le comparer sur cette page de test pour voir si le chiffrement est cohérent.
String Signs = Signature.getSign (Pack); // Le SignSet généré est emballé dans le Pack Object.SetSign (Signs); // Convertir l'objet en Format XML WeChat nécessite du format XML String XML = XMLUTIL.OBJTOXML (Pack, Redpack.Class, "xml");
4. Envoyer des paquets rouges
RedPackService Service = new RedPacService (); String result = Service.RedPackorder (XML); // Les données sont-elles renvoyées par la demande sont-elles réussies?
classe publique RedPackService {/ ** * Adresse d'interface de paquet rouge * / chaîne statique finale privée redp_order_path = "https://api.mch.weixin.qq.com/mmpaymkttransfers/sendRedPack"; / ** * Red Packet * Certificat requis * @param paramxml * @return * / public static String redPackOrder (String paramxml) {try {wxBasesService Service = new wxBasesService (redp_order_path); return Service.SendPost (paramxml); } catch (exception e) {log.Error (e.toString ()); } return null; }} / ** * Accédez à API Post Data XML via HTTPS * * @Param URL API Adresse * @Param XMLOBJ XML DATA Objet à soumettre * @return API Renvoie les données réelles du pack SendPost (URL de chaîne, chaîne postdataxml) lève ioException, KeyStoreException, UncoverableKeyException, NosuchalgorithMexception, KeyManagementException {if (! HasInit) {init (); } String result = null; HTTPPOST HTTPPOST = NOUVEAU HTTPPOST (URL); // Résoudre le bug de doubles traits de soulignement pour xstream // xstream xstreamForRequestPostData = new Xstream (new Domdriver ("utf-8", new xmlfriendlyNameCoder ("-_", "_")))); // convertit l'objet de données pour soumettre à l'API en Post de données de format XML en API // String postdataxml = xstreamForRequestPostData.toxml (XMLOBJ); Util.log ("API, les données passées de Post sont:"); Util.log (postdataxml); // Il doit indiquer que le codage UTF-8 est utilisé, sinon le texte chinois du serveur API XML ne peut pas être identifié avec succès StronEntity possentity = new Stractity (postdataxml, "utf-8"); httppost.addheader ("contenu-type", "text / xml"); httppost.sentity (postentity); // Définissez la configuration du demandeur httppost.setConfig (requestConfig); Util.log ("Exécution de la demande" + httppost.getRequestline ()); try {httpResponse réponse = httpclient.execute (httppost); Httpentity Entity = Response.getEntity (); résultat = entityUtils.tostring (entité, "UTF-8"); } catch (ConnectionPoolTimeOutException e) {Log.e ("http get throw ConnectionPoolTimeOutException (wait time out)"); } catch (connectTimeOutException e) {log.e ("http get throw connectTimeoutException"); } catch (sockettimeoutexception e) {log.e ("http get throw sockettimeoutexception"); } catch (exception e) {Log.e ("http get get throw exception exception"); } enfin {httppost.abort (); } Retour Résultat; } 5. Le XML retourné réussit. Comme il ne recharge que 1 yuan, il a été testé et envoyé il y a quelques jours. Ainsi, les informations suivantes sont retournées.
<xml> <return_code> <! [CDATA [Success]]> </peepour_code> <fettour_msg> <! [CDATA [Le solde du compte est insuffisant, veuillez vous recharger sur la plate-forme marchande et essayer Encore une fois]]> </ return_msg> <setult_code> <! [cdata [échoué]]> </secthing_code> <rr_code> <! [CDATA [Nottenough]]> </rr_code> <rr_code_des> <! [CDATA [Balance du compte est insuffisant, veuillez rechouer sur la plate-forme Merchant et Try Again]]>> </ Err_Des> <mch sur la plateforme Merchant et Try Again]]>> _billno> <! [cdata [1371729102201629220149762756]]> </mch_billno> <mch_id> <! [CDATA [Ceci est le numéro de marchand supprimé pour la confidentialité]]> </ mch_id> <wxappid> <! [CDATA [WECHAT COMacture WECHAT appid]]> </ wxappid> <re_openID> <! [CDATA [OD5QQW8E_LBIAW9SZZUD-2XHTMVX Il s'agit de l'OpenID de l'utilisateur]> </re_openID> <tacal_amount> 100 </tacal_amount> </xml>
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.