Без лишних слов просто посмотрите на код.
RequestHandler requestHandler = new RequestHandler (super.getRequest (), super.getResponse ()); // получить токен // Действительно в течение двух часов и повторно поместите токен через два часа = requestHandler.getToken (); // Обновить токен для приложения requestHandler.getTokenReal (); System.out.println ("WeChat Pay Get Token =============================================== // requestHandler инициализировать requestHandler.init (); requestHandler.init (Appid, AppSecret, Appkey, PartnerKey, Key); Код: локальная система генерирует заказы
// Установить параметры заказа пакета SortedMap <String, String> PackageParams = new TreeMap <String, String> (); packageparams.put ("bank_type", "wx"); // Тип платежа packageparams.put ("body", "xxxx"); // Описание продукта packageparams.put ("fee_type", "1"); // банковская валюта Packageparams.put ("input_charset", "UTF-8"); // SET SET PACKERAMPARMS.PUT ("notify_url", "http://xxxx.com/xxxx/wxcallback"); // Адрес уведомления здесь тестируется с использованием внешнего сетевого адреса и обратите внимание на то, открыт ли порт 80. packageparams.put ("out_trade_no", no); // Номер продавца Packageparams.put («Партнер», Partnerrid); // Установить номер торговых номеров packageparams.put ("spbill_create_ip", super.getRequest (). GetRemotehost ()); // Машина IP, сгенерированная заказом, относится к ip package пользователя Packageparams.put ("total_fee", string.valueof (rstotal)); // Общая сумма продукта разделена на единицы // Установить параметры платежей SortedMap <String, String> SignParams = new TreeMap <String, String> (); signparams.put ("appid", appid); signparams.put ("noncestr", noncestr); signparams.put ("traceid", propertiesutils.getorderno ()); signparams.put ("timeStamp", TimeStamp); signparams.put ("package", packagevalue); signparams.put ("appkey", this.appkey); // Чтобы сгенерировать подпись платежей, для алгоритма SHA1 необходимо использовать исходное значение Urlencoder! String sign = ""; try {sign = sha1util.createsha1sign (signparams); } catch (Exception e) {e.printstackTrace (); } // Добавить дополнительные параметры для непартийных подписей в signparams.put ("sign_method", "sha1"); signparams.put ("app_signature", sign); // Оплата API заканчивается --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- Код: сгенерировать предоплату быстрого заказа
// Сгенерируйте предоплаченный быстрый заказ, чтобы завершить, вернуться в Android, iOS и отбросить необходимые параметры для WeChat. SortedMap <String, String> PayParams = new TreeMap <String, String> (); payparams.put ("appid", appid); payparams.put ("noncestr", noncest); payparams.put ("пакет", "sign = wxpay"); payparams.put ("partnerid", partnerrid); payparams.put ("Predayid", подготовьте); payparams.put ("appkey", this.appkey); // Разница здесь составляет 1000 из -за предела длины параметра. int time = (int) (System.CurrentTimeMillis () / 1000); payparams.put ("timestamp", string.valueof (time)); System.out.println ("TimeStamp:" + Time); // подпись строки paysign = ""; try {paysign = sha1util.createsha1sign (payparams); } catch (Exception e) {e.printstackTrace (); } payparams.put ("sign", paysign); // Ссылка JSON Данные возвращаются в клиент BasicDBobject BackObject = new BasicDBobject (); backobject.put ("appid", appid); backobject.put ("noncestr", payparams.get ("unncestr")); backobject.put ("пакет", "sign = wxpay"); backobject.put ("partnerid", payparams.get ("partnerid")); backobject.put ("Predayid", payparams.get ("Predayid")); backobject.put ("appkey", this.appkey); backobject.put ("timeStamp", payparams.get ("timeStamp")); backobject.put ("sign", payparams.get ("sign")); String backstr = dataObject.toString (); System.out.println ("Backstr:" + Backstr); вернуть Backstr; До настоящего времени был сгенерирован приказ о предоплате и был возвращен клиенту, ожидая уведомления сервера WeChat. Адрес уведомления - уведомление velify_url, который генерирует порядок предоплаты.
Responsehandler reshandler = new RecsionHandler (запрос, ответ); reshandler.setkey (partnerkey); // Создать объект запроса // requestHandler QueryReq = new RequestHandler (запрос, ответ); //queryreq.init (); if (reshandler.istenpaysign () == true) {// Номер продавца string out_trade_no = reshandler.getParameter ("out_trade_no"); System.out.println ("out_trade_no:" + out_trade_no); // номер порядка заказа Tenpay string transaction_id = reshandler.getParameter ("transaction_id"); System.out.println ("transaction_id:" + transaction_id); // Сумма, в единицах деления string ottor_fee = reshandler.getParameter ("total_fee"); // Если используется купон скидки, скидка имеет значение, total_fee+discount = исходная запрошенная строка total_fee discount = reshandler.getParameter ("Discount"); // Результат платежей строки trade_state = reshandler.getParameter ("trade_state"); // судить подпись и результат if ("0" .equals (trade_state)) { // ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- // Отправить успешное сообщение в систему Tenpay. Система Tenpay больше не будет предоставлять последующие уведомления после получения этого результата reshandler.sendtocft («успех»); // Вернуть успех на сервер WeChat иначе 8 уведомлений за 30 минут возврат «успех»; } else {System.out.println ("Уведомление о проверке подписи не удалось"); reshandler.sendtocft ("Fail"); response.setcharacterencoding ("UTF-8"); }} else {System.out.println ("fail -md5 не удастся"); }Выше приведено код, который Java реализует WeChat Payment Server. Я надеюсь, что все будут внимательно изучать это, чтобы реализовать оплату.