• linkedu视频
  • 平面设计
  • 电脑入门
  • 操作系统
  • 办公应用
  • 电脑硬件
  • 动画设计
  • 3D设计
  • 网页设计
  • CAD设计
  • 影音处理
  • 数据库
  • 程序设计
  • 认证考试
  • 信息管理
  • 信息安全
菜单
linkedu.com
  • 网页制作
  • 数据库
  • 程序设计
  • 操作系统
  • CMS教程
  • 游戏攻略
  • 脚本语言
  • 平面设计
  • 软件教程
  • 网络安全
  • 电脑知识
  • 服务器
  • 视频教程
  • JavaScript
  • ASP.NET
  • PHP
  • 正则表达式
  • AJAX
  • JSP
  • ASP
  • Flex
  • XML
  • 编程技巧
  • Android
  • swift
  • C#教程
  • vb
  • vb.net
  • C语言
  • Java
  • Delphi
  • 易语言
  • vc/mfc
  • 嵌入式开发
  • 游戏开发
  • ios
  • 编程问答
  • 汇编语言
  • 微信小程序
  • 数据结构
  • OpenGL
  • 架构设计
  • qt
  • 微信公众号
您的位置:首页 > 程序设计 >微信小程序 > 小程序之红包接口开发实例代码

小程序之红包接口开发实例代码

作者:匿名 字体:[增加 减小] 来源:互联网 时间:2018-11-30

匿名通过本文主要向大家介绍了小程序,红包接口等相关知识,希望对您有所帮助,也希望大家支持linkedu.com www.linkedu.com
微信红包接口开发,其实不是很难,不要被他的表象吓到了,参考网上好几个版本的答案咯~,特地分享如下

分装 红包工具类 :

package com.tepusoft.web.weixin.utils;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.security.KeyStore;
import java.security.NoSuchAlgorithmException;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.Iterator;
import java.util.Map;
import java.util.Map.Entry;
import java.util.Random;
import java.util.Set;
import java.util.SortedMap;
import java.util.TreeMap;
import java.util.UUID;
import javax.net.ssl.SSLContext;
import org.apache.commons.codec.digest.DigestUtils;
import org.apache.http.HttpEntity;
import org.apache.http.client.methods.CloseableHttpResponse;
import org.apache.http.client.methods.HttpPost;
import org.apache.http.conn.ssl.SSLConnectionSocketFactory;
import org.apache.http.conn.ssl.SSLContexts;
import org.apache.http.entity.StringEntity;
import org.apache.http.impl.client.CloseableHttpClient;
import org.apache.http.impl.client.HttpClients;
import org.apache.http.util.EntityUtils;
/**
 * @author wangiegie
 * @date 2015年10月19日下午2:07:11
 * @description
 */
public class HongBaoUtil {
public static final String MCH_ID = ""; // 商户号
public static final String WXAPPID = ""; // 公众账号appid
public static final String NICK_NAME = "潍坊特普软件开发有限公司"; // 提供方名称
public static final String SEND_NAME = "潍坊特普软件"; // 商户名称
public static final int MIN_VALUE = ; // 红包最小金额 单位:分
public static final int MAX_VALUE = ; // 红包最大金额 单位:分
public static final int TOTAL_NUM = 1; // 红包发放人数
public static final String WISHING = "生日快乐"; // 红包祝福语
public static final String CLIENT_IP = "182.41.214.82"; // 调用接口的机器IP
public static final String ACT_NAME = "??"; // 活动名称
public static final String REMARK = "红包测试"; // 备注
public static final String KEY = ""; // 秘钥
public static final int FAIL = 0; // 领取失败
public static final int SUCCESS = 1; // 领取成功
public static final int LOCK = 2; // 已在余额表中锁定该用户的余额,防止领取的红包金额大于预算
/**
 * 对请求参数名ASCII码从小到大排序后签名
 * 
 * @param params
 */
public static void sign(SortedMap<String, String> params) {
Set<Entry<String, String>> entrys = params.entrySet();
Iterator<Entry<String, String>> it = entrys.iterator();
StringBuffer result = new StringBuffer();
while (it.hasNext()) {
Entry<String, String> entry = it.next();
result.append(entry.getKey()).append("=").append(entry.getValue()).append("&");
}
result.append("key=").append(KEY);
params.put("sign", DigestUtils.md5Hex(result.toString()));
}
/**
 * 生成提交给微信服务器的xml格式参数
 * 
 * @param params
 * @return
 */
public static String getRequestXml(SortedMap<String, String> params) {
StringBuffer sb = new StringBuffer();
sb.append("<xml>");
Set es = params.entrySet();
Iterator it = es.iterator();
while (it.hasNext()) {
Map.Entry entry = (Map.Entry) it.next();
String k = (String) entry.getKey();
String v = (String) entry.getValue();
if ("nick_name".equalsIgnoreCase(k) || "send_name".equalsIgnoreCase(k) || "wishing".equalsIgnoreCase(k)
|| "act_name".equalsIgnoreCase(k) || "remark".equalsIgnoreCase(k) || "sign".equalsIgnoreCase(k)) {
sb.append("<" + k + ">" + "<![CDATA[" + v + "]]></" + k + ">");
} else {
sb.append("<" + k + ">" + v + "</" + k + ">");
}
}
sb.append("</xml>");
return sb.toString();
}
/**
 * 创建map
 * 
 * @param billNo
 * @param openid
 * @param userId
 * @param amount
 * @return
 */
public static SortedMap<String, String> createMap(String openid, String userId, int amount) {
SortedMap<String, String> params = new TreeMap<String, String>();
params.put("wxappid", WXAPPID);
params.put("nonce_str", createNonceStr());
params.put("mch_billno", createBillNo(userId));
params.put("mch_id", MCH_ID);
params.put("nick_name", NICK_NAME);
params.put("send_name", SEND_NAME);
params.put("re_openid", openid);
params.put("total_amount", amount + "");
params.put("min_value", amount + "");
params.put("max_value", amount + "");
params.put("total_num", TOTAL_NUM + "");
params.put("wishing", WISHING);
params.put("client_ip", CLIENT_IP);
params.put("act_name", ACT_NAME);
params.put("remark", REMARK);
return params;
}
/**
 * 生成随机字符串
 * 
 * @return
 */
public static String createNonceStr() {
return UUID.randomUUID().toString().toUpperCase().replace("-", "");
}
/**
 * 生成商户订单号
 * 
 * @param mch_id
 *            商户号
 * @param userId
 *            该用户的userID
 * @return
 */
public static String createBillNo(String userId) {
// 组成: mch_id+yyyymmdd+10位一天内不能重复的数字
// 10位一天内不能重复的数字实现方法如下:
// 因为每个用户绑定了userId,他们的userId不同,加上随机生成的(10-length(userId))可保证这10位数字不一样
Date dt = new Date();
SimpleDateFormat df = new SimpleDateFormat("yyyymmdd");
String nowTime = df.format(dt);
int length = 10 - userId.length();
return MCH_ID + nowTime + userId + getRandomNum(length);
}
/**
 * 生成特定位数的随机数字
 * 
 * @param length
 * @return
 */
private static String getRandomNum(int length) {
String val = "";
Random random = new Random();
for (int i = 0; i < length; i++) {
val += String.valueOf(random.nextInt(10));
}
return val;
}
/**
 * post提交到微信服务器
 *
 * @param requestXML
 * @param instream  传入的在微信支付的PKCS12证书的位置
 * @return
 * @throws NoSuchAlgorithmException
 * @throws CertificateException
 * @throws IOException
 * @throws KeyManagementException
 * @throws UnrecoverableKeyException
 * @throws KeyStoreException
 */
public static String post(String requestXML, InputStream instream) throws Exception {
KeyStore keyStore = KeyStore.getInstance("PKCS12");
try {
keyStore.load(instream, MCH_ID.toCharArray());
} finally {
instream.close();
}
SSLContext sslcontext = SSLContexts.custom().loadKeyMaterial(keyStore, MCH_ID.toCharArray()).build();
SSLConnectionSocketFactory sslsf = new SSLConnectionSocketFactory(sslcontext, new String[] { "TLSv1" }, null,
SSLConnectionSocketFactory.BROWSER_COMPATIBLE_HOSTNAME_VERIFIER);
CloseableHttpClient httpclient = HttpClients.custom().setSSLSocketFactory(sslsf).build();
String result = "";
try {
HttpPost httpPost = new HttpPost("https://api.mch.weixin.qq.com/mmpaymkttransfers/sendredpack");
StringEntity reqEntity = new StringEntity(requestXML, "utf-8"); // 如果此处编码不对,可能导致客户端签名跟微信的签名不一致
reqEntity.setContentType("application/x-www-form-urlencoded");
httpPost.setEntity(reqEntity);
CloseableHttpResponse response = httpclient.execute(httpPost);
try {
HttpEntity entity = response.getEntity();
if (entity != null) {
BufferedReader bufferedReader = new BufferedReader(
new InputStreamReader(entity.getContent(), "UTF-8"));
String text;
while ((text = bufferedReader.readLine()) != null) {
result += text;
}
}
EntityUtils.consume(entity);
} finally {
response.close();
}
} finally {
httpclient.close();
}
return result;
}
}

调用:




 
分享到:QQ空间新浪微博腾讯微博微信百度贴吧QQ好友复制网址打印

您可能想查找下面的文章:

  • 微信小程序跟读 demo代码
  • 微信小程序-GetWeApp聊天室 代码
  • 微信小程序Canvas增强组件 代码demo
  • 微信小程序demo 仿手机淘宝
  • 微信小程序Markdown渲染库
  • 微信小程序 Artand 瀑布流风格 代码demo
  • 微信小程序高仿手机QQ应用程序
  • 微信小程序-小商城前台
  • 微信小程序仿手机淘宝demo代码
  • 微信小程序仿Apple Music demo代码

相关文章

  • 2018-11-30小程序之红包接口开发实例代码
  • 2018-11-30微信小程序(应用号)开发新闻客户端实例
  • 2018-11-30解读和分析微信小程序组件:二、scroll-view(可滚动视图区)
  • 2018-11-30微信小程序出现wx.navigateTo页面不跳转解决办法
  • 2018-11-30详解微信小程序组件:label标签
  • 2018-11-30推荐一款极牛逼的小程序开发IDE
  • 2018-11-30微信小程序开发手势解锁实例代码
  • 2018-11-30微信小程序 页面跳转和数据传递实例详解
  • 2018-11-30微信小程序前端源码的解析
  • 2018-11-30有关tab选项的文章推荐10篇

文章分类

  • JavaScript
  • ASP.NET
  • PHP
  • 正则表达式
  • AJAX
  • JSP
  • ASP
  • Flex
  • XML
  • 编程技巧
  • Android
  • swift
  • C#教程
  • vb
  • vb.net
  • C语言
  • Java
  • Delphi
  • 易语言
  • vc/mfc
  • 嵌入式开发
  • 游戏开发
  • ios
  • 编程问答
  • 汇编语言
  • 微信小程序
  • 数据结构
  • OpenGL
  • 架构设计
  • qt
  • 微信公众号

最近更新的内容

    • 微信小程序开发必看的四十个技巧总结
    • 关于微信小程序中顶部导航栏的实现
    • 微信小程序 video组件详解
    • 小程序开发--input标签实例教程
    • 详细解析微信小程序入门教程+案例
    • 小程序游戏开发之扎金花
    • 微信小程序如何实现对接七牛云存储的实例
    • 微信小程序实现图片自适应(支持多图)
    • 微信小程序云开发API 在集合上新增记录
    • 微信小程序速成

关于我们 - 联系我们 - 免责声明 - 网站地图

©2020-2025 All Rights Reserved. linkedu.com 版权所有