PHP开发的微信现金红包功能示例

本文实例讲述了PHP开发的微信现金红包功能。分享给大家供大家参考,具体如下:

微信商家后台-现金红包开发

?php
class wxPay {
//配置参数信息
const SHANGHUHAO = "1430998xxx";//商户号
const PARTNERKEY = "leFyTOXWzUEXxfp47WOu5d9xxxxxx"; //api,商户后台
//核心支付函数,参数:请求地址和参数
function pay($url,$obj) {
$obj['nonce_str'] = $this->create_noncestr(); //创建随机字符串
$stringA = $this->create_qianming($obj,false); //创建签名
$stringSignTemp = $stringA."&key=leFyTOXWzUEXxfp47WOu5xxxxxx"; //签名后加api
$sign = strtoupper(md5($stringSignTemp)); //签名加密并大写
$obj['sign'] = $sign; //将签名传入数组
$postXml = $this->arrayToXml($obj); //将参数转为xml格式
var_dump($postXml);
$responseXml = $this->curl_post_ssl($url,$postXml); //提交请求
var_dump($responseXml);
return $responseXml;
}
//生成签名,参数:生成签名的参数和是否编码
function create_qianming($arr,$urlencode) {
$buff = "";
ksort($arr); //对传进来的数组参数里面的内容按照字母顺序排序,a在前面,z在最后(字典序)
foreach ($arr as $k=>$v) {
if(null!=$v && "null" != $v && "sign" != $k) { //签名不要转码
if ($urlencode) {
$v = urlencode($v);
}
$buff.=$k."=".$v."&";
}
}
if (strlen($buff)>0) {
$reqPar = substr($buff,0,strlen($buff)-1); //去掉末尾符号“&”
}
return $reqPar;
}
//生成随机字符串,默认32位
function create_noncestr($length=32) {
//创建随机字符
$chars = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789";
$str = "";
for($i=0;$i<$length;$i++) {
$str.=substr($chars, mt_rand(0,strlen($chars)-1),1);
}
return $str;
}
//数组转xml
function arrayToXml($arr) {
$xml = "";
foreach ($arr as $key=>$val) {
if (is_numeric($val)) {
$xml.="<".$key.">".$val."</".$key.">";
} else {
$xml.="<".$key.">

证书文件

请在微信商户后台-API安全下载,PHP请使用php的证书文件
微信红包调用测试文件:

<?php
require 'wxpay.class.php';

//数组参数
$money = 100; //最低1元,单位分
$sender = "晨缘房产";
$obj2 = array();
$obj2['wxappid'] = ""; //appid
$obj2['mch_id'] = "";  //商户id
$obj2['mch_billno'] = "商户id".date('YmdHis').rand(1000,9999);  //组合成28位,根据官方开发文档,可以自行设置
$obj2['client_ip'] = $_SERVER['REMOTE_ADDR'];
$obj2['re_openid'] = "oUxO6v26wdyMHThD9kfDW6NB_xbE";  //接收红包openid
$obj2['total_amount'] = $money;
$obj2['min_value'] = $money;
$obj2['max_value'] = $money;
$obj2['total_num'] = 1;
$obj2['nick_name'] = $sender;
$obj2['send_name'] = $sender;
$obj2['wishing'] = "恭喜发财";
$obj2['act_name'] = $sender."红包";
$obj2['remark'] = $sender."红包";
$url = "https://api.mch.weixin.qq.com/mmpaymkttransfers/sendredpack";
$wxpay = new wxPay();
$res = $wxpay->pay($url, $obj2);
var_dump($res);

本文来自投稿,不代表科技代码立场,如若转载,请注明出处https://www.cwhello.com/4011.html

如有侵犯您的合法权益请发邮件951076433@qq.com联系删除

(0)
上一篇 2017年12月7日 15:00
下一篇 2017年12月8日 21:04

相关推荐

  • php数组随机位置中插入新元素(附代码)

    以下是php数组随机位置中插入新元素的代码 代码如下: //数组随机位置中插入元素 function inarr($arr,$str=''){ $key=array_rand($arr);//随机数组下标,插入位置 $arr2=array(); foreach($arr as $k=>$value)...

    2018年3月13日
    0446
  • PHP中的面向对象编程。

    PHP是一种非常流行的脚本语言,由于其易学易用、兼容性强以及强大的功能,被广泛应用于Web开发领域。之前,PHP的主流编程方式一直是基于过程式编程的,然而随着时间的推移和市场的不断变化,面向对象编程(OOP)的...

    2023年5月30日
    00
  • 详解PHP sprintf()格式化用法

    php sprintf函数是一个非常强大的函数,本篇文章特别记录一下php中的sprintf函数格式化字符串的相关用法。定义和用法sprintf() 函数把格式化的字符串写入一个变量中。语法sprintf(format,arg1,arg2,arg++)参数 描...

    2022年6月27日
    0176
  • PHP中使用Redis实现分布式锁智能切换。

    分布式系统中,由于多个节点同时对同一资源进行操作,容易出现并发冲突的问题。为了解决这个问题,我们通常使用分布式锁来控制对共享资源的访问。Redis是一种高效的分布式缓存,可以用来实现分布式锁。本文将介绍...

    2023年5月23日
    01
  • php程序员应具有的7种能力

    php能力  1,了解阶段,您能写一些代码,因为那是在手册和google的帮助下,您才完成的。变量乱定义,N多函数不知道,做起事来很慢,想到什么写什么,代码写的比较乱,后期维护很麻烦。 2,熟悉阶段,经常查函数,...

    2017年11月16日
    0213
  • PHP应用利用Memcache缓存技术提高数据访问速度的方法。

    随着互联网规模的不断扩大,数据的访问和处理速度成为了一个亟待解决的问题。对于PHP应用来说,如何提高数据的访问速度成为了一个重要的课题。而在这个问题上,利用Memcache缓存技术是PHP应用开发者常用的方法之...

    2023年5月21日
    01
  • PHP入门指南:PHP和JIRA。

    PHP入门指南:PHP和JIRA随着互联网的快速发展,各种网站和应用程序的开发变得越来越普遍。PHP语言因其易于学习和使用,成为了最受欢迎的Web编程语言之一。在开发Web应用程序时,PHP与JIRA(一款流行的缺陷跟踪软...

    2023年5月22日
    02
  • PHP与数据库调试的集成。

    随着互联网技术的快速发展,PHP成为了目前Web开发中最受欢迎的编程语言之一。PHP不仅具有易学易用、可扩展性强、社区活跃等优点,还能与各种数据库进行集成。然而,在实际开发过程中,调试PHP与数据库之间的交互...

    2023年5月21日
    02

联系我们

QQ:951076433

在线咨询:点击这里给我发消息邮件:951076433@qq.com工作时间:周一至周五,9:30-18:30,节假日休息