接口文档:
https://pay.weixin.qq.com/wiki/doc/api/tools/cash_coupon.php?chapter=13_4&index=3
一、开通现金红包权限
二、下载API证书
三、充值
以上步骤请参考:https://pay.weixin.qq.com/wiki/doc/api/tools/cash_coupon.php?chapter=13_3&index=2
服务端逻辑:
1、服务端先根据用户在APP中获得的红包金额,创建一条数据库记录(分配红包兑换码,用户信息,金额等等)
2、用户关注公众号,点击公众号菜单:红包兑换,菜单的链接可以是授权登录的链接,点击菜单经过服务器授权登录,获得用户的openid,然后重定向到H5兑换页面(openid作为页面参数)
3、用户输入兑换码,H5页面把openid和兑换码信息提交给服务器的Perl CGI脚本,例如https:/xxxx/cgi-bin/pay.pl?do=GetRedPack&redpack_code=xxxxxxx&openid=xxxxxx
////脚本处理
if ($cgi->param('do') eq "GetRedPack") {
}
4、CGI脚本根据兑换码,调用服务端接口获取数据库记录,然后组合相关参数调用微信普通红包接口,给用户发红包
代码片段:
use CGI;
use warnings;
use JSON;
use utf8;
use Digest::MD5 qw/md5_hex/;
use HTTP::Request;
use HTTP::Headers;
use LWP::UserAgent;
use Encode;
use XML::Simple;
use Data::Dumper;
if ($cgi->param('do') eq "GetRedPack") { # ?do=GetRedPack&openid=xxx&redpack_code=xxx
my $openid = $cgi->param('openid');
my $redpack_code=$cgi->param('redpack_code');
my $redpack_info = get_redpack_by_code($redpack_code);
my $now_t = time();
my $wx_order_info;
$wx_order_info->{mch_id}=$MCH_ID;
$wx_order_info->{nonce_str}=nonce_str();
my $mch_billno=$MCH_ID.formateTime($now_t).$now_t;
if (length($mch_billno) > 28) {
$mch_billno = substr($mch_billno, 0, 28);
}
my $total_rmb = $redpack_info->{money_rmb} + 0;
my $total_num = $redpack_info->{total_num} + 0;
$wx_order_info->{mch_billno} = $mch_billno;
$wx_order_info->{wxappid}=$APPID;
$wx_order_info->{send_name}="Tester";
$wx_order_info->{re_openid}=$openid;
$wx_order_info->{total_amount}=100*$total_rmb;
$wx_order_info->{total_num}=1;
$wx_order_info->{wishing}=$redpack_info->{wishing}; #"happy new year";
$wx_order_info->{client_ip}="1.1.1.1"; #需要填写服务器ip
$wx_order_info->{act_name}=$redpack_info->{act_name};
$wx_order_info->{remark}=$redpack_info->{remark}; #"throw more get more";
#红包金额大于200时,请求参数scene_id必传
$wx_order_info->{scene_id}="PRODUCT_3";
#write_log("req_json:".Dumper($wx_order_info));
$wx_order_info->{sign} = sign($wx_order_info, "false");
#write_log("req_sign:".Dumper($wx_order_info));
my $request_xml = create_xml_data($wx_order_info);
#write_log("req_xml:".$request_xml);
my $header = HTTP::Headers->new( Content_Type => 'text/xml; charset=utf8', );
my $http_request = HTTP::Request->new( POST => "https://api.mch.weixin.qq.com/mmpaymkttransfers/sendredpack", $header, $request_xml);
my $ua = LWP::UserAgent->new(
ssl_opts => {
verify_hostname => 0,
#SSL_verify_mode => 0x00,
#SSL_ca_file => '/var/redpack/rootca.pem'
SSL_use_cert => 1,
SSL_cert_file => '/var/redpack/apiclient_cert.pem',
SSL_key_file => '/var/redpack/apiclient_key.pem',
SSL_passwd_cb => sub { $MCH_ID },
},
); #本接口需要上传证书
my $response = $ua->request($http_request);
my $response_json;
if ($response->message ne "OK" && $response->is_success ne "1") { #出错,或者timeout了
$response_json->{return_code} = "99999";
$response_json->{return_msg} = $response->message;
$response_json->{err_code} = $response->is_success;
} else {
my $decode_rsp = $response->decoded_content();
write_log("\nrsp_xml_utf8:".$decode_rsp);
$response_json = parse_xml_response( $decode_rsp);
}
my $ret = update_redpack_by_code($redpack_code);
print_html_notify_rsp("success");
if ($response_json->{return_code} eq "SUCCESS" && $response_json->{result_code} eq "SUCCESS") {
$redirect_url = "http://xxxx/redpack_success.html?redpack_code=$redpack_code";
print $cgi->redirect($redirect_url); #发送成功,跳转到成功页面
} else {
$redirect_url = "http://xxxx/redpack_failed.html?redpack_code=$redpack_code";
print $cgi->redirect($redirect_url); #发送失败,跳转到成功页面
}
exit;
}
相关推荐
Laravel admin 的微信扩展、支持多公众号、多小程序、多微信支付的后台管理,并提供小程序、微信支付的基础接口,在此基础上通过、继承等形式完成自定义。 本扩展使用了 ,微信实例使用可移步到 关联项目 TO DO LIST...
本篇文章介绍了Java微信支付-微信红包,可以实现微信公众号发红包功能,具有一定的参考价值,有需要的可以了解一下。
以上是.NET代码实现微信发红包功能涉及的关键技术点,开发者需要理解并熟练掌握这些知识,才能成功实现并测试发红包功能。在实际项目中,还需要考虑并发处理、日志记录、安全性等问题,以保证系统的稳定性和安全性。
本文实例为大家分享了php微信公众平台给用户发红包的具体代码,供大家参考,具体内容如下 直接上代码: 代码 <?php /** * 微信红包的类 * @Author snmoney#gmail.com * @copyright 2015 * @version 2.0 * *...
5. **调用发红包接口**:有了预支付信息后,调用`MchPay`接口发送红包。此接口需要传入prepay_id、商户订单号等信息,返回的结果会包含红包发放状态。 6. **异常处理与日志记录**:在调用微信支付接口时,可能会...
h5聊天室仿红包群微信群源码 免登陆网页版,基于Thinkphp框架开发的仿微信群h5源码,h5聊天室仿微信群,h5仿红包群源码, 对接公众号接口后可以使用微信一键登陆进群交流。本聊天室主要是针对微信封群专门设计,包含...
本文实例为大家分享了php微信公众号之现金红包的具体代码,供大家参考,具体内容...以下为本人用于测试微信支付发红包的代码片段,仅供参考。 /*测试微信企业给个人发红包*/ public function weixin_red_packet(){
本文实例讲述了PHP微信公众号开发之微信红包实现方法。分享给大家供大家参考,具体如下: 这几天遇到了一个客户 要给他们的微信公众平台上添加微信现金红包功能,是个二次开发的功能,顺手百度一下,原来不复杂。就...
本微信开发sdk,微信二次开发sdk,非微信ipad协议、非mac协议,非安卓协议,api可实现微信99%功能; 无需扫码登录、可收发朋友圈、查看朋友圈、朋友圈互动点赞、评论、 好友列表、微信消息收发、发文本消息、图片消息...
本微信开发SDK非微信ipad协议,非mac协议,非安卓协议,api可实现微信99%功能;无需扫码登录,可收发朋友圈,查看朋友圈,朋友圈互动点赞,评论,好友列表,微信消息收发,发短信,图片消息,名片消息,动图表情,...
小程序口令红包,发红包的同时还可以带上自己的广告,带详细安装说明和小程序配置文档。 功能介绍: 1.发语音红包、问答红包、听语音领红包,问答红包可引导客户去公众号回复关键词获取答案或者看广告视频获取答案! 2...
公众号实用api发送红包到指定的用户。 java开发,亲测可用
9、震撼功能:更换公众号用户数据不会丢失,可以多个公众号轮流发红包。10、可根据抽红包次数,控制抽中红包大小,比如可以设置前两次抽的大,以后抽的小。11、可限制用户每天抽100次12、用户首页集成个人中心功能、...
9、震撼功能:更换公众号用户数据不会丢失,可以多个公众号轮流发红包。 10、可根据抽红包次数,控制抽中红包大小,比如可以设置前两次抽的大,以后抽的小。 11、可限制用户每天抽100次 12、用户首页集成个人中心...
9、震撼功能:更换公众号用户数据不会丢失,可以多个公众号轮流发红包。 10、可根据抽红包次数,控制抽中红包大小,比如可以设置前两次抽的大,以后抽的小。 11、可限制用户每天抽100次 12、用户首页集成个人中心...
备注:如果只是要源码可以到github下载,本附件包括代码说明.docx、开发教程.docx、升讯威 ADO.NET 增强组件 sheng.ADO.NET.Plus.docx、升讯威微信营销系统开发实践:(4)源代码结构说明 与 安装部署说明.docx、升...
(在进入微信公众号时,会为用户创建钱包,同时应用钱包向用户钱包转Gas费,留言完成,采用文本上链写入公链,同时会发红包面页面。3、进入查看余额页面项目开发使用进入 页面进行配置。新的appcode,appname会生成一...
微信mac / ipad协议Demo源码 声明 直接自己学习研究使用,不保证可用,引起任何法律纠纷概不负责 QQ交流群
小程序口令红包,发红包的同时还可以带上自己的广告,带详细安装说明和小程序配置文档。 功能介绍: 1.发语音红包、问答红包、听语音领红包,问答红包可引导客户去公众号回复关键词获取答案或者看广告视频获取答案!...
9、震撼功能:更换公众号用户数据不会丢失,可以多个公众号轮流发红包。10、可根据抽红包次数,控制抽中红包大小,比如可以设置前两次抽的大,以后抽的小。11、可限制用户每天抽100次12、用户首页集成个人中心功能、...