• 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
  • 微信公众号
您的位置:首页 > 程序设计 >微信公众号 > 分享微信公众号开发现金红包实例教程

分享微信公众号开发现金红包实例教程

作者:匿名 字体:[增加 减小] 来源:互联网

匿名通过本文主要向大家介绍了微信开发,现金红包等相关知识,希望对您有所帮助,也希望大家支持linkedu.com www.linkedu.com
欢迎留言、转发

微信极速开发系列文章:点击这里

前几篇文章介绍了微信支付。 公众号支付、微信扫码支付、刷卡支付、微信买单

此文来聊聊微信商户中的支付工具----现金红包


现金红包.png

准备工作

【官方文档】

一、开通现金红包权限

在使用现金红包之前,请前往开通现金红包功能。操作路径:【登录微信支付商户平台——>产品中心——>现金红包——>开通】。

二、下载API证书

商户调用微信红包接口时,服务器会进行证书验证,请在商户平台下载证书


现金红包-下载证书.png


现金红包-下载之后的文件.png

有人要问这么多证书到底使用那个呢?跟开发语言有关系吗?

什么语言使用什么证书,以及如何使用可以参考截图中的证书说明.txt

内容如下:

欢迎使用微信支付!
微信支付API共四份(证书pkcs12格式、证书pem格式、证书密钥pem格式、CA证书),为接口中强制要求时需携带的证书文件。
证书属于敏感信息,请妥善保管不要泄露和被他人复制。
不同开发语言下的证书格式不同,以下为说明指引:
    证书pkcs12格式(apiclient_cert.p12)
        包含了私钥信息的证书文件,为p12(pfx)格式,由微信支付签发给您用来标识和界定您的身份
        部分安全性要求较高的API需要使用该证书来确认您的调用身份
        windows上可以直接双击导入系统,导入过程中会提示输入证书密码,证书密码默认为您的商户ID(如:10010000)
    证书pem格式(apiclient_cert.pem)
        从apiclient_cert.p12中导出证书部分的文件,为pem格式,请妥善保管不要泄漏和被他人复制
        部分开发语言和环境,不能直接使用p12文件,而需要使用pem,所以为了方便您使用,已为您直接提供
        您也可以使用openssl命令来自己导出:openssl pkcs12 -clcerts -nokeys -in apiclient_cert.p12 -out apiclient_cert.pem
    证书密钥pem格式(apiclient_key.pem)
        从apiclient_cert.p12中导出密钥部分的文件,为pem格式
        部分开发语言和环境,不能直接使用p12文件,而需要使用pem,所以为了方便您使用,已为您直接提供
        您也可以使用openssl命令来自己导出:openssl pkcs12 -nocerts -in apiclient_cert.p12 -out apiclient_key.pem
    CA证书(rootca.pem)
        微信支付api服务器上也部署了证明微信支付身份的服务器证书,您在使用api进行调用时也需要验证所调用服务器及域名的真实性
        该文件为签署微信支付证书的权威机构的根证书,可以用来验证微信支付服务器证书的真实性
        某些环境和工具已经内置了若干权威机构的根证书,无需引用该证书也可以正常进行验证,这里提供给您在未内置所必须根证书的环境中载入使用

三、充值

在发放现金红包之前,请确保你的资金充足。如若不足,请充值。操作路径:【登录商户平台——>账户中心——>资金管理——>充值】

每个红包的平均金额必须在1.00元到200.00元之间


现金红包-充值.png

四、获取openid

目前支持向指定微信用户的openid发放指定金额红包。(获取openid参见之前写的文章:极速开发微信公众号之授权获取用户信息

五、相关参数设置

和红包相关的参数【主要是安全方面:绑定IP、防止用户盗刷】,你可以在页面上自主设置和更改。
操作路径如下:【登录商户平台——>产品中心——>现金红包——>产品设置】(注:“产品设置”操作按钮仅当你开通现金红包功能之后才会出现)。
你可以设置和更改以下参数:


现金红包-设置参数.png

说明:
1、 调用IP地址:设置之后,仅有已设置的IP地址可以调用,其余的IP调用会报错;
2、用户领取上限:限制同一openid同一日领取的个数
3、防刷等级:防刷是指微信风控针对微信小号、僵尸号、机器号等的拦截,你可以通过更改防刷等级控制防刷的强度。
4、 同时,你也可以申请更改红包额度。但是需要经过微信支付的审核,审核通过之后才会生效。

现金红包类别

现金红包分为两类:
1、普通红包 【官方文档】
2、裂变红包 【官方文档】

两者部分参数不同

发送现金红包

1、发送普通红包接口 com.javen.weixin.api.RedPackApi.java

private static String sendRedPackUrl = "https://api.mch.weixin.qq.com/mmpaymkttransfers/sendredpack";

    /**
     * 发送红包
     * @param params 请求参数
     * @param certPath 证书文件目录
     * @param partner 证书密码
     * @return {String}
     */
    public static String sendRedPack(Map<String, String> params, String certPath, String partner) {
        return HttpUtils.postSSL(sendRedPackUrl, PaymentKit.toXml(params), certPath, partner);
    }

2、发送裂变红包接口 com.javen.weixin.api.RedPackApi.java

private static String sendGroupRedPackUrl = "api.mch.weixin.qq.com/mmpaymkttransfers/sendgroupredpack";

    /**
     * 发送裂变红包
     * @param params 请求参数
     * @param certPath 证书文件目录
     * @param partner 证书密码
     * @return {String}
     */
    public static String sendGroupRedPack(Map<String, String> params, String certPath, String partner) {
        return HttpUtils.postSSL(sendGroupRedPackUrl, PaymentKit.toXml(params), certPath, partner);
    }

具体实现封装 com.javen.utils.ReadPackUtils.java
1、普通红包

/**
     * 发送普通红包
     * @param request 获取IP
     * @param total_amount  付款现金(单位分)
     * @param total_num 红包发放总人数
     * @param wishing 红包祝福语
     * @param act_name 活动名称
     * @param remark 备注
     * @param reOpenid 用户openid
     * @param partner 商户号
     * @param wxappid 公众账号appid
     * @param sendName 商户名称
     * @param paternerKey 商户签名key
     * @param certPath 证书路径
     * @return
     */
    public static boolean sendredpack(HttpServletRequest request,String total_amount,String total_num,String wishing,String act_name,String remark,String reOpenid,String partner,String wxappid,String sendName,String paternerKey,String certPath) {
        // 商户订单号
        String mchBillno = System.currentTimeMillis() + "";
        String ip = IpKit.getRealIp(request);

        Map<String, String> params = new HashMap<String, String>();
        // 随机字符串
        params.put("nonce_str", System.currentTimeMillis() / 1000 + "");
        // 商户订单号
        params.put("mch_billno", mchBillno);
        // 商户号
        params.put("mch_id", partner);
        // 公众账号ID
        params.put("wxappid", wxappid);
        // 商户名称
        params.put("send_name", sendName);
        // 用户OPENID
        params.put("re_openid", reOpenid);
        // 付款现金(单位分)
        params.put("total_amount", total_amount);
        // 红包发放总人数
        params.put("total_num", total_num);
        // 红包祝福语
        params.put("wishing", wishing);
        // 终端IP
        params.put("client_ip", ip);
        // 活动名称
        params.put("act_name", act_name    );
        // 备注
        params.put("remark", remark);
        //创建签名
        String sign = PaymentKit.createSign(params, paternerKey);
        params.put("sign", sign);

        String xmlResult = RedPackApi.sendRedPack(params, certPath, partner);
        Map<String, String> result = PaymentKit.xmlToMap(xmlResult);
        log.warn(JsonKit.toJson(result));
        //此字段是通信标识,非交易标识,交易是否成功需要查看result_code来判断
        String return_code = result.get("return_code"



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

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

  • 微信开发教程:自动回复消息和客服消息,文本带链接跳转
  • php 实现微信开发获取用户信息
  • 微信开发实战之模块化的实例详解
  • 微信开发之列表渲染多层嵌套循环
  • 总结一个微信开发的过程实例
  • 微信开发入门(jssdk开发)
  • 微信开发之介绍CreateTime
  • 微信公众号开发--解析CreateTime
  • 微信开发之微信支付
  • 详解微信开发中视图层(xx.xml)和逻辑层(xx.js)

相关文章

  • .net开发微信公众平台的方法
  • C#开发微信门户及应用-微信企业号的配置和使用
  • 微信禁止下拉查看URL如何处理
  • 微信支付统一下单,用PHP怎么实现?(代码全)
  • 实现类似微信中说话功能的录音处理代码实例
  • 微信开发入门(十)登录态维护
  • 微信支付验证或签名失败是什么原因?附三种解决方案
  • ASP.NET MVC 微信JS-SDK认证的实例教程
  • C#开发微信门户应用管理系统功能介绍
  • 微信开发之个性化菜单

文章分类

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

最近更新的内容

    • 总结标记语言(Markdown)的使用介绍
    • 开发微信公众平台测试接口准备工作介绍
    • 微信支付开发动态链接Native支付实例代码
    • 微信公众平台开发自动更新微信access token
    • 微信支付开发 JS API支付
    • 微信扫码支付模式
    • C#开发微信公众号接口开发详细介绍
    • 微信开发在本地就可以进行接口调试
    • 微信公众平台消息接口开发地理位置查询附近商家实例
    • 微信公众平台开发微信公众平台通用开发框架

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

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