Использование WeChat Red Conventes уже очень широкое. В этой статье представлены примеры отправки красных конвертов на WeChat. Вам нужен сертифицированный общественный счет, и вы можете открыть платежную платформу WeChat и торговую платформу и разрешить разрешения Cash Red Convelope.
https://pay.weixin.qq.com Адрес торгового входа в систему. Выберите просмотреть денежные пакеты в маркетинговом центре
https://pay.weixin.qq.com/wiki/doc/api/tools/cash_coupon.php?chapter=13_1 Официальный документ Документ Описание Красного Красного конверта.
Давайте сначала посмотрим на несколько простых тестов. Предпосылка в том, что вам нужно сначала перезарядиться на торговой платформе. Предоплата не поддерживается. Эта статья только суммирует вызовы и реализацию интерфейса конверта WeChat Cash Red. В частности, вам нужно реализовать, как называть этот интерфейс на основе вашего собственного бизнеса.
https://pay.weixin.qq.com/wiki/doc/api/tools/cash_coupon.php?chapter=13_4&index=3 В документе есть все объяснения для обычных красных конвертов. Вызов должен иметь сертификат с торговой платформы.
Требуемые параметры также перечислены. Решите в соответствии с вашими потребностями.
1. Ява инкапсулирует объект красной конверты
/*** Объект Red Convelope* @author Xiao Shuai Shuai* @Date 2016-8-17 11:12:19 AM* @Open Source China http://my.oschina.net/xshuai*/public Class Redpack реализует сериализируемый {приватный строковый знак; // проверка, сгенерированная на основе атрибутов частной строки mch_billno; // номер заказа частной строки MCH_ID; // Торговый номер частная строка wxappid; // weChat Appid Private String Send_Name; // Имя торговли частная строка re_openid; // пользователь opend private string total_amount; // Сумма платежа Private String total_num; // Количество Red e -revelope получатели Cash Red Callop Private String nonce_str; // Случайная строка // set ate опущен} 2. Требуемый класс инструментов CreateBillno - это генерировать номер торгового заказа. Официальные требования к документу веб -сайта следующие:
/** * Red envelope tool class* @author Xiao Shuai Shuai* @date 2016-8-17 11:12:19 am * @Open Source China http://my.oschina.net/xshuai */public class RedPackUtil { /** * Generate merchant order number* @param mch_id Merchant number* @param userId userID of this user * @return */ public Статическая строка createBillno () {// Композиция: MCH_ID+yyyyMmdd+10-значные числа, которые нельзя повторить в течение одного дня // 10-значных чисел, которые нельзя повторить в течение одного дня, следующие: // Поскольку каждый пользователь связан с пользователем, их указание различна, плюс случайно сгенерированные (10-й длиной)), чтобы обеспечить, чтобы они были разными. SimpleDateFormat df = new SimpleDateFormat ("yyyyMmdd"); String nowtime = df.format (dt); int длина = 10; return wxconstants.mch_id + сейчас время + getrandomnum (длина); } / ** * Сгенерировать случайные числа с конкретными цифрами * @param length * @return * / public Static String getRandomnum (int length) {string val = ""; Случайный случайный = new Random (); for (int i = 0; i <length; i ++) {val+= string.valueof (random.nextint (10)); } return val; }} 3. Предыдущая работа очень проста и требует сертификата и торгового номера. И если торговая платформа имеет сумму, вы можете проверить интерфейс Cash Red Overvelope
Redpack Pack = new Redpack (null // В первый раз пуст, redpackutil.createbillno () // Номер продавца, «Ваш собственный торговый номер», «Аппид официальной учетной записи», «Имя», «OpenD of пользователя, чтобы быть отправленным», «9.0». «Имя деятельности», «Примечание», «Случайная строка»);
За исключением знаки в тесте, он пуст. Все остальное может быть заполнено. Теперь мы генерируем подпись знака; генерировать знак в соответствии с параметрами в объекте Pack;
Конкретный алгоритм подписи https://pay.weixin.qq.com/wiki/doc/api/tools/cash_coupon.php?chapter=4_3, указанный на официальном веб -сайте
https://pay.weixin.qq.com/wiki/tools/signverify/ Вы можете сравнить его на этой тестовой странице, чтобы увидеть, является ли шифрование согласованным.
String Signs = signature.getSign (pack); // Сгенерированный сигнал упакован в pack object.setsign (Знаки); // Конвертировать объект в формат XML WeChat требует xml format string xml = xmlutil.objtoxml (pack, Redpack.class, "xml");
4. Отправить красные пакеты
RedpackService Service = new RedPacService (); String result = service.redpackorder (xml); // возвращаются ли данные по запросу?
Общедоступный класс RedPackService {/*** Адрес интерфейса красного пакета*/Приватная конечная статическая строка REDP_ORDE_PATH = "https://api.mch.weixin.qq.com/mmpaymkttransfers/sendredpack"; / *** Красный пакет* Требуется сертификат* @param paramxml* @return*/ public Static String Redpackorder (String paramxml) {try {wxbaseservice service = new wxbaseservice (redp_order_path); return service.sendpost (paramxml); } catch (Exception e) {log.error (e.toString ()); } return null; }} / ** * Перейдите в API Post XML Data через https * * @param url api адрес * @param xmlobj xml объект данных, чтобы отправить * @return api возвращать фактические данные пакета * @throws ioexception * @throws storeexception * @throwseablexexcept sendpost (string url, string postdataxml) бросает ioException, keyStoreException, UncoverableKeyException, nosuchalgorithmexception, KeyManagementException {if (! hasInit) {init (); } String result = null; Httppost httppost = new httppost (url); // Решить ошибку двойных подчеркиваний для XStream // xstream xstreamforrequestpostdata = new Xstream (new Domdriver ("UTF-8", новый XMLFriendlyNameCoder ("-_", "_"))); // Конвертировать объект данных, чтобы отправить в API в Post Data Post в формате XML в API // String postDAtAxml = xstreamForRequestPostData.toxml (xmlobj); Util.log ("API, прошлые данные POST:"); Util.log (postdataxml); // Это должно указывать на то, что используется кодирование UTF-8, в противном случае китайский текст на сервер API XML не может быть успешно идентифицирован строгим postentity = new строгость (postdataxml, "utf-8"); httppost.addheader ("content-type", "text/xml"); httppost.setentity (postentity); // Установить конфигурацию запроса httppost.setConfig (requestConfig); Util.log ("выполнение запроса" + httppost.getRequestline ()); try {httpresponse response = httpclient.execute (httppost); Httpentity entity = response.getentity (); result = entityutils.tostring (Entity, "UTF-8"); } catch (connectionPooltimeOutexception e) {log.e ("http get throw connectionpooltimeoutexception (время ожидания)"); } 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 throw throw Exception"); } наконец {httppost.abort (); } return Result; } 5. Возвращенный XML успешно. Поскольку это только зарядилось 1 юань, он был протестирован и отправлен несколько дней назад. Таким образом, возвращается следующая информация.
<xml> <return_code> <! [cdata [success]]>> </return_code> <return_msg> <! [cdata [баланс учетной записи недостаточен, пожалуйста, перезарядите на торговой платформе и попробуйте Еще раз]]> </return_msg> <sulte_code> <! [cdata [fail]]>> </result_code> <err_code> <! _billno> <! [CDATA [1371729102201629220149762756]]> </mch_billno> <mch_id> <! Appid]]]> </wxappid> <Re_openid> <! [CDATA [OD5QQW8E_LBIAW9SZZUD-2XHTMVX Это opend пользователя]]>> </re_openid> <total_amount> 100 </total_amount> </xml>
Выше всего содержание этой статьи. Я надеюсь, что это будет полезно для каждого обучения, и я надеюсь, что все будут поддерживать Wulin.com больше.