首頁 後端開發 php教程 實作PHP微信紅包API介面

實作PHP微信紅包API介面

Aug 14, 2020 pm 04:47 PM
api介面 微信紅包

實作PHP微信紅包API介面

首先給大家看一看這個表格:

相關學習推薦:php程式設計(視訊)

根據微信高級紅包接口,開發PHP版本的API接口,現在進行主要程式碼分析。

紅包介面呼叫請求代碼,所有請求參數為必填參數與文件對應:

class Wxapi {
 private $app_id = 'wxXXXXXXXXXXXX'; //公众账号appid,首先申请与之配套的公众账号
 private $app_secret = 'XXXXXXXXXXXXXXXXXXXXXXXX';//公众号secret,用户获取用户授权token
 private $app_mchid = 'XXXXXXXX';//商户号id
 function __construct(){
 //do sth here....
 }
 /**
  * 微信支付
  * @param string $openid 用户openid
  */
 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; 
}
登入後複製

簽署演算法:

/**
例如:
appid: wxd111665abv58f4f
mch_id: 10000100
device_info: 1000
Body: test
nonce_str: ibuaiVcKdpRxkhJA
第一步:对参数按照 key=value 的格式,并按照参数名 ASCII 字典序排序如下:
stringA="appid=wxd930ea5d5a258f4f&body=test&device_info=1000&mch_i
d=10000100&nonce_str=ibuaiVcKdpRxkhJA";
第二步:拼接支付密钥:
stringSignTemp="stringA&key=192006250b4c09247ec02edce69f6a2d"
sign=MD5(stringSignTemp).toUpperCase()="9A0A8659F005D6984697E2CA0A
9CF3B7"
*/
protected function get_sign(){
 define(&#39;PARTNERKEY&#39;,"QSRXXXXXXXXXXXXXXXXXXXXX");
 try {
  if (null == PARTNERKEY || "" == PARTNERKEY ) {
   throw new SDKRuntimeException("密钥不能为空!" . "<br>");
  }
  if($this->check_sign_parameters() == false) { //检查生成签名参数
   throw new SDKRuntimeException("生成签名参数缺失!" . "<br>");
  }
  $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.1
 curl_setopt($ch,CURLOPT_SSLCERT,dirname(__FILE__).DIRECTORY_SEPARATOR.&#39;zhengshu&#39;.DIRECTORY_SEPARATOR.&#39;apiclient_cert.pem&#39;);
 curl_setopt($ch,CURLOPT_SSLKEY,dirname(__FILE__).DIRECTORY_SEPARATOR.&#39;zhengshu&#39;.DIRECTORY_SEPARATOR.&#39;apiclient_key.pem&#39;);
 curl_setopt($ch,CURLOPT_CAINFO,dirname(__FILE__).DIRECTORY_SEPARATOR.&#39;zhengshu&#39;.DIRECTORY_SEPARATOR.&#39;rootca.pem&#39;);
 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[&#39;param&#39;];
$code = $_GET[&#39;code&#39;];
//判断code是否存在
if($get==&#39;access_token&#39; && !empty($code)){
 $param[&#39;param&#39;] = &#39;access_token&#39;;
 $param[&#39;code&#39;] = $code;
 $packet = new Packet();
 //获取用户openid信息
 $userinfo = $packet->_route(&#39;userinfo&#39;,$param);
 if(empty($userinfo[&#39;openid&#39;])){
  exit("NOAUTH");
 }
 //调取支付方法
 $packet->_route(&#39;wxpacket&#39;,array(&#39;openid&#39;=>$userinfo[&#39;openid&#39;]));
}else{
 $packet->_route(&#39;userinfo&#39;);
}
登入後複製

相關學習推薦:程式設計影片

#

以上是實作PHP微信紅包API介面的詳細內容。更多資訊請關注PHP中文網其他相關文章!

本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn

熱AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover

AI Clothes Remover

用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool

Undress AI Tool

免費脫衣圖片

Clothoff.io

Clothoff.io

AI脫衣器

Video Face Swap

Video Face Swap

使用我們完全免費的人工智慧換臉工具,輕鬆在任何影片中換臉!

熱工具

記事本++7.3.1

記事本++7.3.1

好用且免費的程式碼編輯器

SublimeText3漢化版

SublimeText3漢化版

中文版,非常好用

禪工作室 13.0.1

禪工作室 13.0.1

強大的PHP整合開發環境

Dreamweaver CS6

Dreamweaver CS6

視覺化網頁開發工具

SublimeText3 Mac版

SublimeText3 Mac版

神級程式碼編輯軟體(SublimeText3)

微信紅包最大金額能發多少 微信紅包最大金額能發多少 Feb 23, 2024 pm 04:40 PM

微信紅包最大金額能發多少?在微信中的紅包發送金額是有上限的,有些用戶不清楚微信紅包最大金額能發多少。在非特殊日期的最大金額是200。接下來就是小編為用戶帶來的紅包最大金額數量的介紹,有興趣的用戶快來一起看看吧!微信使用教學微信狀態背景圖怎麼設定答案:200元詳情介紹:1.微信紅包金額上限:200。每人每次的微信紅包最高只能寄200元。 2.特殊紅包金額:在每年的5月20日,用戶可以發送金額上限為520元的紅包。

PHP中的郵件傳送API介面指南 PHP中的郵件傳送API介面指南 May 21, 2023 pm 12:12 PM

隨著電子郵件在我們日常生活中的普及,郵件發送成為了許多應用程式中必不可少的功能。 PHP作為一種流行的Web開發語言,也提供了對應的郵件發送API介面。本文將為初學者和開發者介紹PHP中的郵件發送API接口,包括如何配置郵件伺服器、如何使用PHP內建的郵件函數以及如何使用第三方郵件發送庫。一、設定郵件伺服器在使用PHP發送郵件之前,你需要先設定一個SMTP服

微信紅包怎麼退回 微信紅包怎麼拒收立即退還給對方 微信紅包怎麼退回 微信紅包怎麼拒收立即退還給對方 Feb 22, 2024 pm 04:43 PM

現在的微信紅包是不支援手動退回的。教學適用型號:iPhone13系統:iOS15.5版本:微信8.0.19解析1現在的微信紅包是不支援手動退回的,對於沒有領取的微信紅包,微信系統會在24小時後自動退回發起帳號,所以當我們收到紅包後想要退回的話,只要不接受,過了24小時就會自動退回了。補充:微信轉帳怎麼退回1在微信聊天介面點選需要退回的轉帳。 2在轉帳詳情介面中,點選退還選項。 3在新出現的彈跳窗中,再次點選退還即可。總結/注意事項現在的微信紅包是不支援手動退回的,當我們收到紅包,只要不接受,過了24小

免費的api介面網站有哪些 免費的api介面網站有哪些 Jan 05, 2024 am 11:33 AM

免費的api介面網站:1、UomgAPI:提供穩定、快速免費API服務的平台,擁有超百個API介面;2、free-api:提供多個免費API介面;3、JSON API:提供免費的資料API介面;4、高德開放平台:提供地圖相關的API介面;5、人臉辨識Face++:提供人臉辨識相關的API介面;6、極速資料:提供超百個免費API接口,適用於需要多種資料來源的場合;7、聚合資料等等。

api接口是乾嘛的 api接口是乾嘛的 Apr 23, 2024 pm 01:51 PM

API介面是軟體元件之間互動的規範,用於實作不同應用程式或系統之間的通訊和資料交換。 API介面充當“翻譯器”,將開發人員的指令轉換為電腦語言,讓應用程式協同工作。其優點包括便利的資料共享、簡化開發、提高效能、增強安全性、提升生產效率和互通性。

api接口類型主要有哪些 api接口類型主要有哪些 Apr 23, 2024 pm 01:57 PM

API介面類型豐富多樣,主要包括RESTful API、SOAP API、GraphQL API等。 RESTful API透過HTTP協定進行通信,設計簡潔高效,是當下主流的Web API設計風格。 SOAP API基於XML,著重在語言和平台的互通性,多應用於大型企業和政府機構。 GraphQL API是一種新型查詢語言和執行時間環境,支援靈活的資料查詢和回應。

開發API文件:PHP API介面的步驟指南 開發API文件:PHP API介面的步驟指南 Jan 22, 2024 am 11:20 AM

隨著Web應用程式的日益普及,API(應用程式介面)越來越重要,在Web開發中扮演越來越重要的角色。 WebAPI是一種允許使用者透過Internet來存取應用程式的技術,是將不同的應用程式組合在一起的基礎工具。 PHP是一種被廣泛使用的程式語言,特別是在Web開發領域。開發人員可以透過開發PHPAPI介面來允許其他應用程式使用他們的應用程式功能。為了實現這

微信紅包進行退回的詳細步驟 微信紅包進行退回的詳細步驟 Mar 25, 2024 am 11:21 AM

1.找到微信小程式:2、點選搜尋【騰訊檢舉受理中心】。 3.點選網路詐騙的選項。 4.輸入相關資訊和截圖。微信紅包說明:1、微信紅包24小時未領取,會直接退回。 2、微信紅包被別人領取,自己是無法退回的;

See all articles