微信红包API接口(PHP)

news/2025/3/14 16:45:30/

微信红包API接口(PHP),微信支付接口分享朋友圈发红包

根据微信高级红包接口,开发PHP版本的API接口,现在进行主要代码分析。

红包接口调用请求代码,所有请求参数为必填参数与文档对应:

class Wxapi {private $app_id = 'wxXXXXXXXXXXXX'; //公众账号appid,首先申请与之配套的公众账号private $app_secret = 'XXXXXXXXXXXXXXXXXXXXXXXX';//公众号secret,用户获取用户授权tokenprivate $app_mchid = 'XXXXXXXX';//商户号idfunction __construct(){//do sth here....}public function pay($re_openid){include_once('WxHongBaoHelper.php');$commonUtil = new CommonUtil();$wxHongBaoHelper = new WxHongBaoHelper();$wxHongBaoHelper->setParameter("nonce_str", $this->great_rand());//随机字符串,丌长于 32 位$wxHongBaoHelper->setParameter("mch_billno", $this->app_mchid.date('YmdHis').rand(1000, 9999));//订单号$wxHongBaoHelper->setParameter("mch_id", $this->app_mchid);//商户号$wxHongBaoHelper->setParameter("wxappid", $this->app_id);$wxHongBaoHelper->setParameter("nick_name", '红包');//提供方名称$wxHongBaoHelper->setParameter("send_name", '红包');//红包发送者名称$wxHongBaoHelper->setParameter("re_openid", $re_openid);//相对于医脉互通的openid$wxHongBaoHelper->setParameter("total_amount", 100);//付款金额,单位分$wxHongBaoHelper->setParameter("min_value", 100);//最小红包金额,单位分$wxHongBaoHelper->setParameter("max_value", 100);//最大红包金额,单位分$wxHongBaoHelper->setParameter("total_num", 1);//红包収放总人数$wxHongBaoHelper->setParameter("wishing", '感谢您参与红包派发活动,祝您新年快乐!');//红包祝福诧$wxHongBaoHelper->setParameter("client_ip", '127.0.0.1');//调用接口的机器 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);//用作结果调试输出//echo htmlentities($responseXml,ENT_COMPAT,'UTF-8');$responseObj = simplexml_load_string($responseXml, 'SimpleXMLElement', LIBXML_NOCDATA);return $responseObj->return_code;}

获取随机字符串方法:

public function great_rand(){$str = '1234567890abcdefghijklmnopqrstuvwxyz';for($i=0;$i<30;$i++){$j=rand(0,35);$t1 .= $str[$j];}return $t1;    
}

签名算法:

protected function get_sign(){define('PARTNERKEY',"QSRXXXXXXXXXXXXXXXXXXXXX");try {if (null == PARTNERKEY || "" == PARTNERKEY ) {throw new SDKRuntimeException("密钥不能为空!" . " ");}if($this->check_sign_parameters() == false) {   //检查生成签名参数throw new SDKRuntimeException("生成签名参数缺失!" . " ");}$commonUtil = new CommonUtil();ksort($this->parameters);$unSignParaString = $commonUtil->formatQueryParaMap($this->parameters, false);$md5SignUtil = new MD5SignUtil();return $md5SignUtil->sign($unSignParaString,$commonUtil->trimString(PARTNERKEY));}catch (SDKRuntimeException $e){die($e->errorMessage());}
}

CURL请求以及发送证书:

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_URL,$url);curl_setopt($ch,CURLOPT_SSL_VERIFYPEER,false);curl_setopt($ch,CURLOPT_SSL_VERIFYHOST,false);     //cert 与 key 分别属于两个.pem文件//请确保您的libcurl版本是否支持双向认证,版本高于7.20.1curl_setopt($ch,CURLOPT_SSLCERT,dirname(__FILE__).DIRECTORY_SEPARATOR.'zhengshu'.DIRECTORY_SEPARATOR.'apiclient_cert.pem');curl_setopt($ch,CURLOPT_SSLKEY,dirname(__FILE__).DIRECTORY_SEPARATOR.'zhengshu'.DIRECTORY_SEPARATOR.'apiclient_key.pem');curl_setopt($ch,CURLOPT_CAINFO,dirname(__FILE__).DIRECTORY_SEPARATOR.'zhengshu'.DIRECTORY_SEPARATOR.'rootca.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;}
}

入口文件:

@require "pay.php";
//获取用户信息
$get = $_GET['param'];
$code = $_GET['code'];
//判断code是否存在
if($get=='access_token' && !empty($code)){$param['param'] = 'access_token';$param['code'] = $code;$packet = new Packet();//获取用户openid信息$userinfo = $packet->_route('userinfo',$param);if(empty($userinfo['openid'])){exit("NOAUTH");}//调取支付方法$packet->_route('wxpacket',array('openid'=>$userinfo['openid']));
}else{$packet->_route('userinfo');
}
 

转载于:https://www.cnblogs.com/boystar/p/4766458.html


http://www.ppmy.cn/news/655869.html

相关文章

浅析微信支付:商户平台开通现金红包、指定用户发放、红包记录查询

本文是【浅析微信支付】系列文章的第十三篇&#xff0c;主要讲解在如何开通商户平台的红包功能和为用户发放红包&#xff0c;以及查询发送红包记录。 浅析微信支付系列已经更新十三篇了哟&#xff5e;&#xff0c;没有看过的朋友们可以看一下哦。 浅析微信支付&#xff1a;(余…

微信公众平台发红包接口

微信公众平台发红包功能与企业付款类似&#xff0c;首先微信商户里是需要有余额的。 请求的地址是&#xff1a;https://api.mch.weixin.qq.com/mmpaymkttransfers/sendredpack 官方文档&#xff1a;https://pay.weixin.qq.com/wiki/doc/api/cash_coupon.php?chapter13_5 测试…

php调用微信红包接口

红包接口调用请求代码&#xff0c;所有请求参数为必填参数与文档对应&#xff1a; class Wxapi { private $app_id wxXXXXXXXXXXXX; //公众账号appid&#xff0c;首先申请与之配套的公众账号 private $app_secret XXXXXXXXXXXXXXXXXXXXXXXX;//公众号secret&#xff0c;用户获…

微信支付现金红包接口说明及应用实例代码

本文我将详细介绍微信红包开发的接口&#xff0c;商户调用接口时&#xff0c;通过指定发送对象以及发送金额的方式发放红包&#xff0c;领取到红包后&#xff0c;用户的资金直接进入微信零钱。后面带有具体调用php实例 微信支付现金红包接口正式开放&#xff0c;只需开通微信支…

微信红包接入2-项目集成

接上一篇&#xff1a;微信红包接入1-介入前准备 参考&#xff1a; 现金红包接口&#xff1a;https://pay.weixin.qq.com/wiki/doc/api/cash_coupon.php?chapter13_5 接下来我们来说说代码集成&#xff0c;先把上一篇那个图拿过来&#xff1a; 从上图中我们实际第一步要走的就…

微信商户现金红包api php

微信开发文档&#xff1a; 现金红包&#xff1a;https://pay.weixin.qq.com/wiki/doc/api/tools/cash_coupon.php?chapter13_5 裂变红包&#xff1a;https://pay.weixin.qq.com/wiki/doc/api/tools/cash_coupon.php?chapter16_5 一、微信红包SDK1、请求url: 现金红包:https:/…

【微信开发】 红包接口开发

为什么80%的码农都做不了架构师&#xff1f;>>> 参考网上好几个版本的答案咯~ 分装 红包工具类 : package com.tepusoft.web.weixin.utils; import java.io.BufferedReader; import java.io.IOException; import java.io.InputStream; import java.io.InputStreamR…

红包系统架构设计

软件系统设计&#xff0c;第一步&#xff0c;确定关键需求。 需求分析 比如红包这个系统&#xff0c;需要有如下&#xff1a; 包红包发红包抢红包拆红包不能抢超&#xff0c;也就是说红包个数&#xff0c;金额是有限的&#xff0c;不能超的。支持高并发&#xff0c;例如1亿用…