Cet article partage le code spécifique de Java à l'aide d'Alipay pour scanner le code pour le paiement, pour votre référence, le contenu spécifique est le suivant
Préparation
Tout d'abord, ouvrez le compte de test Alipay Sandbox, qui comprendra des comptes de consommation et des comptes du bénéficiaire
Scannez le code QR pour télécharger l'application mobile
Configuration de base
Package de pot requis
Alipayconfig
Package com.alipay.config; Importer java.io.filewriter; Importer java.io.ioException; Importer java.util.resourcebundle; / * * * Nom de classe: AlipayConfig * Fonction: Configuration de base Classe * Détails: Définir les informations apparentées aux comptes et le chemin de retour * Date de code pour les tests de mercre pour les tests Merchant. Les commerçants peuvent écrire en fonction des besoins de leur propre site Web et selon des documents techniques, et il n'est pas nécessaire d'utiliser ce code. * Ce code est pour l'apprentissage et la recherche de l'interface Alipay uniquement et n'est fourni qu'en référence. * / classe publique AlipayConfig {// ↓ aisselles d'heure d'attente atten AlipayConfig {// ↓ ↓. // Clé privée marchande, votre format PKCS8 RSA2 Clé privé public String statique Merchant_private_key = "Miievaid2TulssMawg5 + F4nzBexpnxi8nkqjpzeeaa =="; // Clé publique Alipay, consultez l'adresse: https://openhome.alipay.com/platform/keymanage.htm la clé publique Alipay correspondante sous l'Apid. chaîne statique publique Alipay_public_key = "miBijt26tltkar8s1erdwi25vibcmz7plmxvvumhf5tdbwfbmhus3qidaqab"; // Le chemin de la page de notification asynchrone du serveur nécessite le chemin complet du format de http: // et ne peut pas ajouter de paramètres personnalisés comme? Id = 123. Il doit être accessible normalement par le réseau externe. chaîne statique publique notify_url = "http: // localhost: 8080 / alipay.trade.page.pay-java-utf-8 / notify_url.jsp"; // PAGE JUMP SYNCHRONE NOTIFICE PAGE Le chemin nécessite le chemin complet du format http: //. Les paramètres personnalisés tels que id = 123 ne peuvent pas être ajoutés. String statique publique return_url = "http: // localhost: 8080 / exam / index / goumai"; // Méthode de signature publique statique String Sign_Type = "RSA2"; // Format de codage de caractères public String static string charset = "utf-8"; // Alipay Gateway public static string gatewayurl = "https://openapi.alipaydev.com/gateway.do"; // Alipay Gateway Public Static String log_path = "e: //"; // ↑↑↑↑rêchelots Ici / ** * Écrivez des journaux pour des tests faciles (voir les exigences du site Web, vous pouvez également Configurer vos informations de base dans la base de données) * @param Sword pour écrire du contenu texte dans le log * / public static Void Logreult (STRING SWORD) {Filewriter Writer = Null; try {writer = new FileWriter (log_path + "alipay_log_" + system.currenttimemillis () + ". txt"); écrivain.write (épée); } catch (exception e) {e.printStackTrace (); } enfin {if (writer! = null) {try {writer.close (); } catch (ioException e) {e.printStackTrace (); }}}}}}Contrôleur
// générer une page avec un code QR qui peut être utilisé pour scanner le code pour payer le paiement @RequestMapping (Value = "Alipay") Public String Alipay (HttpservletResponse Response, ModelMap Map, String ChapterID, httpservletquest request, widout_trade_no, thorwe AlipayApiexception {// String A, String UrlName, String NAVAME ... + "& a =" + a + "& urlname =" + urlname + "& couname =" + couname // get initialized alilipayClient alipayClient alipayClient = new defaultalipayClient (AlipayCor AlipayConfig.Merchant_Private_Key, "JSON", AlipayConfig.Charset, AlipayConfig.alipay_public_key, AlipayConfig.sign_type); // Définissez le paramètre de demande AlipayTradePagePayRequest AlipayRequest = new AlipayTradePagePayRequest (); AlipayRequest.SetReturnUrl (AlipayConfig.return_url + "? ChapterId =" + ChapterId); AlipayRequest.SetNotifyUrl (AlipayConfig.Notify_Url); // Pay ID, string requis out_trade_no = widout_trade_no; // Pay Montant, chaîne requise total_amount = widtotal_amount; total_amount = urldecoder.decode (total_amount, "utf-8"); // transcoding // nom d'ordre, la chaîne requise sujets = widSubject; sujet = urlDEcoder.decode (sujet, "UTF-8"); // Description du produit, Null String Body = widbody; AlipayRequest.SetBizContent ("{/" out_trade_no / ": /" + out_trade_no + "/", "+" / "total_amount /": / "+ total_amount +" / "," + "/" sujet / ": /" + sujet + "/", "+" / "body /": / "+ body +" / "," / "+" "/" timeout_express / ": /" 1m / "," + "/" product_code / ": /" fast_instant_trade_pay / "}"); // demande la chaîne de résultats = alipayClient.PageExECUTE (AlipayRequest) .getBody (); Response.SetContentType ("Text / HTML; charSet = UTF-8"); Printwriter out = réponse.getWriter (); out.println (résultat); retourner null; }Payer avec succès et retourner la page (return_url)
Le chemin de retour après le succès est pris, accédez au contrôleur, consultez la configuration dans AlipayConfig pour plus de détails
// Cliquez pour acheter et enregistrer le cours dans la table d'achat @RequestMapping (value = "goumai") @ResponseBody public ModelandView Goumai (String ChapterId, httpservletRequest req, String A, String UrlName, String compatin, modelmap map) {ModelandView Mav = new ModelView (); Map <string, string> map1 = new hashmap <string, string> (); // sysusersertab login_user = sysuserservice.getSySuserById (userid); HttpSession Session = req.getSession (); Sysusersertab login_user1 = (sysusersertab) session.getAttribute ("login_user"); String userid = login_user1.getUserId (); // session.setAttribute ("login_user", login_user); map1.put ("userId", userId); map1.put ("ChapterId", ChapterID); int num = sysBuyService.getBcuCount (MAPP1); if (num == 0) {mapp1.put ("BuyId", uUid.randomuuid (). toString (). Remplace ("-", "")); sysbuyservice.insertbuy (MAPP1); } // Content du cours de requête // String fanhui = showfh (req, ChapterId, UrlName, NAVAME, MAP, A); mav.setViewName ("jsp / pay / paysuccess"); retourner mav; }Une fois le paiement réussi, la page saute sur la page PaySuccess.jsp.
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.