微信开发之发红包

http://mch.weixin.qq.com/wiki/doc/api/cash_coupon.php?chapter=13_5

把下面这堆xml 以post请求方式 提交到https://api.mch.weixin.qq.com/mmpaymkttransfers/sendredpack

<xml>

<sign><![CDATA[E1EE61A91C8E90F299DE6AE075D60A2D]]></sign>

<mch_billno><![CDATA[0010010404201411170000046545]]></mch_billno>

<mch_id><![CDATA[888]]></mch_id>

<wxappid><![CDATA[wxcbda96de0b165486]]></wxappid>

<send_name><![CDATA[send_name]]></send_name>

<re_openid><![CDATA[onqOjjmM1tad-3ROpncN-yUfa6uI]]></re_openid>

<total_amount><![CDATA[200]]></total_amount>

<total_num><![CDATA[1]]></total_num>

<wishing><![CDATA[恭喜发财]]></wishing>

<client_ip><![CDATA[127.0.0.1]]></client_ip>

<act_name><![CDATA[新年红包]]></act_name>

<remark><![CDATA[新年红包]]></remark>

<nonce_str><![CDATA[50780e0cca98c8c8e814883e5caa672e]]></nonce_str>

</xml>

注意:需要证书(证书及使用说明详见商户证书)

参见例子:function curl_post_ssl($url, $vars, $second=30,$aHeader=array())

注意:************

xml里面要处理的参数

1.nonce_str 随机字符串,不长于32位(自动生成,没难度)

2.sign 签名 (重点是这个比较复杂) 签名生成算法地址 https://pay.weixin.qq.com/wiki/doc/api/cash_coupon.php?chapter=4_3

3.mch_billno 商户订单号(每个订单号必须唯一)组成:mch_id+yyyymmdd+10位一天内不能重复的数字。接口根据商户订单号支持重入,如出现超时可再调用。(没难度)

4.各种证书是需要到微信平台下载

官方例子PHP

<?php
/*
请确保您的libcurl版本是否支持双向认证,版本高于7.20.1
*/
function curl_post_ssl($url, $vars, $second=30,$aHeader=array())
{
    $ch = curl_init();
    //超时时间
    curl_setopt($ch,CURLOPT_TIMEOUT,$second);
    curl_setopt($ch,CURLOPT_RETURNTRANSFER, 1);
    //这里设置代理,如果有的话
    //curl_setopt($ch,CURLOPT_PROXY, ‘10.206.30.98‘);
    //curl_setopt($ch,CURLOPT_PROXYPORT, 8080);
    curl_setopt($ch,CURLOPT_URL,$url);
    curl_setopt($ch,CURLOPT_SSL_VERIFYPEER,false);
    curl_setopt($ch,CURLOPT_SSL_VERIFYHOST,false);
    
    //以下两种方式需选择一种
    
    //第一种方法,cert 与 key 分别属于两个.pem文件
    //默认格式为PEM,可以注释
    //curl_setopt($ch,CURLOPT_SSLCERTTYPE,‘PEM‘);
    //curl_setopt($ch,CURLOPT_SSLCERT,getcwd().‘/cert.pem‘);
    //默认格式为PEM,可以注释
    //curl_setopt($ch,CURLOPT_SSLKEYTYPE,‘PEM‘);
    //curl_setopt($ch,CURLOPT_SSLKEY,getcwd().‘/private.pem‘);
    
    //第二种方式,两个文件合成一个.pem文件
    //curl_setopt($ch,CURLOPT_SSLCERT,getcwd().‘/all.pem‘);
 
    if( count($aHeader) >= 1 ){
        curl_setopt($ch, CURLOPT_HTTPHEADER, $aHeader);
    }
 
    curl_setopt($ch,CURLOPT_POST, 1);
    curl_setopt($ch,CURLOPT_POSTFIELDS,$vars);
    $data = curl_exec($ch);
    if($data){
        curl_close($ch);
        return $data;
    }
    else { 
        $error = curl_errno($ch);
        echo "call faild, errorCode:$error\n"; 
        curl_close($ch);
        return false;
    }
}
$data = curl_post_ssl(‘https://api.mch.weixin.qq.com/secapi/pay/refund‘, ‘merchantid=1001000‘);
print_r($data);
以下是封装好的方法
wxHongBaoHelper
    private function fahb($weixin_openid, $price) {
        define(‘DS‘, DIRECTORY_SEPARATOR);
        /**
         * 微信配置
         */
        //商户 appid
        define(‘APPID‘, "xxxxxxxxxxxxxx");  
        define(‘SIGNTYPE‘, "sha1"); 
        //通加密串
        define(‘PARTNERKEY‘,"xxxxxxxxxxxxxx");
        //
        define(‘APPSERCERT‘, "xxxxxxxxxxxxxx");
        //商户id
        define(‘MCHID‘, "00000000000");
        
        //一定要修改
        $openid = $weixin_openid;
        
        $money = $price*100;//红包金额,单位分
        $mch_billno=MCHID.date(‘YmdHis‘).rand(1000, 9999);//订单号
        include_once(‘WxHongBaoHelper.php‘);
        $commonUtil = new CommonUtil();
        $wxHongBaoHelper = new WxHongBaoHelper();
        
        $wxHongBaoHelper->setParameter("nonce_str", $commonUtil->create_noncestr());//随机字符串,丌长于 32 位
        $wxHongBaoHelper->setParameter("mch_billno", $mch_billno);//订单号
        $wxHongBaoHelper->setParameter("mch_id", MCHID);//商户号
        $wxHongBaoHelper->setParameter("wxappid", APPID);
        $wxHongBaoHelper->setParameter("nick_name", ‘‘);//提供方名称
        $wxHongBaoHelper->setParameter("send_name", ‘‘);//红包发送者名称
        $wxHongBaoHelper->setParameter("re_openid", $openid);//相对于医脉互通的openid
        $wxHongBaoHelper->setParameter("total_amount", $money);//付款金额,单位分
        $wxHongBaoHelper->setParameter("min_value", $money);//最小红包金额,单位分
        $wxHongBaoHelper->setParameter("max_value", $money);//最大红包金额,单位分
        $wxHongBaoHelper->setParameter("total_num", 1);//红包収放总人数
        $wxHongBaoHelper->setParameter("wishing", ‘‘);//红包祝福诧
        $wxHongBaoHelper->setParameter("client_ip", ‘x.x.x.x‘);//调用接口的机器 Ip 地址 
        $wxHongBaoHelper->setParameter("act_name", ‘‘);//活劢名称
        $wxHongBaoHelper->setParameter("remark", ‘‘);//备注信息
        
        $postXml = $wxHongBaoHelper->create_hongbao_xml();
        $url = ‘https://api.mch.weixin.qq.com/mmpaymkttransfers/sendredpack‘;
        
        $responseXml = $wxHongBaoHelper->curl_post_ssl($url, $postXml);
        $responseObj = simplexml_load_string($responseXml, ‘SimpleXMLElement‘, LIBXML_NOCDATA);
        $arrayName = array(‘responseObj‘ => $responseObj, ‘mch_billno‘ => $mch_billno);
        return $arrayName;
    }
时间: 2024-12-19 12:05:34

微信开发之发红包的相关文章

微信现金红包接口实现红包发放

微信现金红包接口实现红包发放: 一:流程:[ 流程:微信用户访问红包活动页面-->后端判断是否是微信访问的 [否:提示用微信打开连接,是:提示用户是否授权允许,获取其的用户信息[openID等信息]]--> 进入红包活动页面--->用户点击领取红包[判断是否领取过红包]是:[提示已领取过红包]否 -->后端程序调用接口发放红包 -->微信用户在微信中收到红包 -->打开红包 -->红包金额会添加到钱包零钱里 -->完成红包发放. ] 二:要实现微信现金红包接

分享 Java微信开发SDK

分享 Java微信开发SDK •发布于 4周前  •作者 朋也  •432 次浏览  •最后一次编辑是 2周前  •来自 分享 给大家分享两个java开发微信公众号的sdk jfinal-weixin weixin-java-tools fastweixin 第一个是jfinal框架开发的微信开发sdk,貌似没什么文档,大家知道哪地方有文档可以在下方留言 第二个是在github上找的,fork人数也不少,文档写的挺好,基于maven方式搭建,开发起来也很方便 第三个是在osc上看到的,可以整合s

微信扫码领红包系统开发定制

微信扫码领红包系统定制,微信扫码领红包系统开发,陈先生135.7001.0501微电,微信扫码领红包系统,微信扫码领红包系统报价. 全民喝章贡"码"上有红包活动现已开端.采购带有活动标贴的章贡王醇和五年,扫一扫瓶盖上的二维码即可马上扫出1.8元-58.8元金额不等的现金红包!百分百中奖率,扫到多少现金,完全看手气! 注:只要带活动标贴(如蓝框中)的产品才干扫到红包哦▼ 微信扫码领红包系统:线下日子中的大家相互赠送的红包便是传统红包,从其代表的含义来看,传统红包的情面味更浓,实用性更强.

微信发红包 PHP 实现

最近做生日营销,需要微信发红包,特此从网上找了一篇教程 首先你的有个服务号,并且开通了微信支付,我在这就不说怎么去申请和开通了,我是看了微信官方文档后,想看官方文档的朋友可以到下面这个链接 https://pay.weixin.qq.com/wiki/doc/api/tools/cash_coupon.php?chapter=13_1 class WxRedPack { //配置参数信息 const SHANGHUHAO = "***********";//商户号 const PART

微信开发处理超时5s(java),异步发送客服消息

在微信开发中我们会经常遇到在处理业务逻辑超过5s的情况,在超时时,微信会重新请求,总共请求三次,这样就会导致一系列的问题,怎样避免这些问题呢? 通过研究发现在微信官方文档清楚写着,如下: 假如服务器无法保证在五秒内处理并回复,必须做出下述回复,这样微信服务器才不会对此作任何处理,并且不会发起重试(这种情况下,可以使用客服消息接口进行异步回复),否则,将出现严重的错误提示.详见下面说明: 1.直接回复空串(指字节长度为0的空字符串,而不是XML结构体中content字段的内容为空) 2.直接回复s

ThinkPHP整合微信支付之发裂变红包

1.去商户平台里,给你的商户充钱,没钱是发不了红包哒! 2.微信红包需要证书支持,所以请大家到商户平台下去下载好证书后放到安全文件夹下,并且需要在配置文件中指定好证书路径! 好,接下来带来裂变红包具体功能实现代码:step1:重复一下配置文件WxPayConf_pub.php,看过之前微信支付教程的同学应该很清楚这一块了,这里我将代码截图出来,配置好后进行下一步! step2:下载你的证书,放到一个目录下,对应配置文件中,记得这里是绝对路径! step3:与微信现金红包一样,我们得自己在WxPa

微信开发-微信红包实例;

此开发结合THINKPHP: 效果图: step:1 写一个红包工具类: 目录为__ROOT__\ThinkPHP\Library\Vendor\phpPay\WxPayPubHelper\WxPayPubHelper.php /* * 红包工具类 * */ class bonus_pub extends Wxpay_client_pub{ function __construct() { //设置接口链接 $this->url = "https://api.mch.weixin.qq.c

微信商户如何快速开通企业付款功能,发红包功能。

博主送福利了,微信扫码有惊喜.超值红包等着你..么么哒 言归正转 1.如果需要做小程序的话,最好申请一个认证过的企业公众号,一个认证过的企业公众号,用户可以关联认证两个小程序:切记不要先认证小程序,不然以后会再多花300块认证公证号:因为微信商户号开通需要绑定认证过的微信企业号.如果没有认证过的公众号,那就需要再话300块来认证企业微信,总之这是一个大坑.切记,切记,切记,做微信开发,先注册认证公众号!2.微信商户开通企业付款到零钱,除了需要绑定企业微信外:如果你在申请商户时选择的结算方式是t+

iOS开发——项目实战总结&amp;类微信朋友圈发动态功能初步-图片与视频上传

类微信朋友圈发动态功能初步-图片与视频上传 最近在做一个新的项目,涉及到了关于图片和视频上传和显示的功能,研究了一段时间,总结一下. 使用AFNetworking上传图片(可一次上传多张图片,包含不同类型png, jpeg)和视频 1 AFHTTPRequestOperationManager *manager = [AFHTTPRequestOperationManager manager]; 2 3 AFHTTPRequestOperation *operation = [manager P