導航:首頁 > 編程語言 > 微信紅包php源碼

微信紅包php源碼

發布時間:2023-06-09 00:43:33

① 下載了一個免費的php微信商城源碼,好像效果不怎麼好,有哪位好好先生可以給點建議的

效果不怎麼好是指界面不好看還是說代碼實現的功能和自己想要的差別太大,或者說功能缺失太多?

建議:界面的話可以網上找一些漂亮的模板重新排版,套入現在PHP代碼,

功能的話就沒辦法解決了,自己寫羅,或者重新找一個。

② 如何用php實現模擬微信搶紅包

小夥子你很有想法啊,可惜不行,因為php是服務端的,而微信是客戶段的。除非微信紅包開放介面

③ 好心人提供一份微信掃碼支付模式一的PHP或C#源碼

http://www.chenweiweb.com/?p=78你可以在這里去下載到PHP版本的。

④ 微信紅包怎麼設計

⑤ 微信紅包的技術原理是怎樣的

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;
}

獲取隨機字元串方
1
2
3
4
5
6
7
8
9
10
11
/**
* 生成隨機數
*/
public function great_rand(){
$str = '';
for($i=0;$i<30;$i++){
$j=rand(0,35);
$t1 .= $str[$j];
}
return $t1;
}

簽名演算法
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
/**
例如:
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="
sign=MD5(stringSignTemp).toUpperCase()
=""
*/
protected function get_sign(){
define('PARTNERKEY',"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請求以及發送證書
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
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.
'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;
}
}

入口文件
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
@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');
}

⑥ 微信紅包PHP怎麼開發

代碼有兩個php文件

1.oauth2.php

<?php
$code=$_GET['code'];
$state=$_GET['state'];
$appid='XXXX';
$appsecret='XXXXXXXX';//
if(empty($code))$this->error('授權失敗');
$token_url='https://api.weixin.qq.com/sns/oauth2/access_token?appid='.$appid'&secret='.$appsecret.'&code='.$code.'&grant_type=authorization_code';
$token=json_decode(file_get_contents($token_url));
if(isset($token->errcode)){
echo'<h1>錯誤1</h1>'.$token->errcode;
echo'<br/><h2>錯誤信息1:</h2>'.$token->errmsg;
exit;
}
session_start();
$_SESSION['openid']=$token->openid;
header('location:url/redpack.php');//要跳轉的文件路徑
?>

2.redpack.php

<?php
//XXXXX。。是需要開發者自己填寫的內容型或,注意不要泄密
//從session中獲取到openid;
$openid=$_SESSION["openid"];
if(empty($openid))
{
header('location:https://open.weixin.qq.com/connect/oauth2/authorize?appid=XXXXXXXX&redirect_uri=http://www.XXXXXXX.com/oauth2.php&respose_type=code&scope=snsapi_base&state=XXXX&connect_redirect=1#wechat_redirect');
}
}
//關鍵的函數
publicfunctionweixin_red_packet(){
//請求參數
//隨機字元串
$data['nonce_str']=$this->get_unique_value();
//商戶號,輸入你的商戶號
$data['mch_id']="XXXXXXX";
//商戶訂單號,可以按要求自己組合28位的商戶訂單號
$data['mch_billno']=$data['mch_id'].date("ymd")."XXXXXX".rand(1000,9999);
//公眾帳號appid,輸入自己的公眾號appid
$data['wxappid']="XXXXXXX";
//商戶名稱
$data['send_name']="XXXXX";
//用戶openid,輸入待發紅包的用戶openid
session_start();
$data['re_openid']=$_SESSION["openid"];
//付款金額
$data['total_amount']="XXXX";
//紅包發放總人數
$data['total_num']="XXXX";
//紅包祝福語
$data['wishing']="XXXX";
//IP地址
$data['client_ip']=$_SERVER['LOCAL_ADDR'];
//活動名稱
$data['act_name']="XXXXX";
//備注
$data['remark']="XXXXX";
//生梁消成簽名
//對數據數組進行處理
//API密鑰,輸入自己的K微信商戶號裡面的K
$appsecret="XXXXXXXXXXXXXX";//
$data=array_filter($data);
ksort($data);
$str="";
foreach($dataas$k=>$v){
$str.=$k."=".$v."&";
}
$str.="key=".$appsecret;
$data['sign']=strtoupper(MD5($str));
/*
發紅包操作過程:
1.將請求數據轉換成xml
2.發送請求
3.將請求結果轉換為數組
4.將請求信息和請求結果錄入到資料庫中
4.判斷是否通信成功
5.判斷是否轉賬成功
*/
//發紅包介面地址
$url="https://api.mch.weixin.qq.com/mmpaymkttransfers/sendredpack";
//將請求數據由數組轉換卜渣伍成xml
$xml=$this->arraytoxml($data);
//進行請求操作
$res=$this->curl($xml,$url);
//將請求結果由xml轉換成數組
$arr=$this->xmltoarray($res);
}
//生成32位唯一隨機字元串
privatefunctionget_unique_value(){
$str=uniqid(mt_rand(),1);
$str=sha1($str);
returnmd5($str);
}
//將數組轉換成xml
privatefunctionarraytoxml($arr){
$xml="<xml>";
foreach($arras$k=>$v){
$xml.="<".$k.">".$v."</".$k.">";
}
$xml.="</xml>";
return$xml;
}
//將xml轉換成數組
privatefunctionxmltoarray($xml){
//禁止引用外部xml實體
libxml_disable_entity_loader(true);
$xmlstring=simplexml_load_string($xml,"SimpleXMLElement",LIBXML_NOCDATA);
$arr=json_decode(json_encode($xmlstring),true);
return$arr;
}
//進行curl操作
privatefunctioncurl($param="",$url){
$postUrl=$url;
$curlPost=$param;
//初始化curl
$ch=curl_init();
//抓取指定網頁
curl_setopt($ch,CURLOPT_URL,$postUrl);
//設置header
curl_setopt($ch,CURLOPT_HEADER,0);
//要求結果為字元串且輸出到屏幕上
curl_setopt($ch,CURLOPT_RETURNTRANSFER,1);
//post提交方式
curl_setopt($ch,CURLOPT_POST,1);
//增加HTTPHeader(頭)里的欄位
curl_setopt($ch,CURLOPT_POSTFIELDS,$curlPost);
//終止從服務端進行驗證
curl_setopt($ch,CURLOPT_SSL_VERIFYPEER,FALSE);
curl_setopt($ch,CURLOPT_SSL_VERIFYHOST,FALSE);
//證書放到網站根目錄的cert文件夾底下
curl_setopt($ch,CURLOPT_SSLCERT,dirname(__FILE__).DIRECTORY_SEPARATOR.
'cert'.DIRECTORY_SEPARATOR.'apiclient_cert.pem');
curl_setopt($ch,CURLOPT_SSLKEY,dirname(__FILE__).DIRECTORY_SEPARATOR.
'cert'.DIRECTORY_SEPARATOR.'apiient_key.pem');
curl_setopt($ch,CURLOPT_CAINFO,dirname(__FILE__).DIRECTORY_SEPARATOR.
'cert'.DIRECTORY_SEPARATOR.'rootca.pem');
//運行curl
$data=curl_exec($ch);
//關閉curl
curl_close($ch);
return$data;
}
?>

可參考官方文檔進行調整開發,希望能有幫助,望採納

⑦ PHP微信紅包拼手氣演算法與掃雷

如下需求
需要將1元的紅包,拆分成10個,每一個紅包的金額均不相等,接受用戶的輸入 個數和金額,並且紅包個數的最小金額,和最大金額不能大於輸入金額。

由於微信紅包的火熱,一些紅包愛好者就出現了紅包掃雷的菠菜玩法,有群紅包、H5游戲,可以是手氣佳者、也可以是尾數符合者,玩法多種多樣。

而一般脫離微信外的程序、游戲、網頁、APP、都是差不多跟機器人在玩,前期讓你賺錢,後期慢慢割你韭菜,和幣圈合約是一個道理。

後期會持續更新和剖析掃雷紅包機器人和其通過盈虧比例調節割韭菜等細節

⑧ php 個人微信介面可以發紅包嗎

可以,具體$arr['openid']='ojgTTt8oF9VdYcGsJMACHpA-jy1U'; $arr['hbname']="提現申請"; $arr['body']="您的提現申請頃派已經成功"; $arr['fee']=1; $comm = new Common_util_pub(); $re = $comm->雀姿賀sendhongbaoto($arr); var_mp($re);

注意證書位置和 商戶後台設置的key需要修改.

<?php header("Content-type: text/html; charset=utf-8"); class Common_util_pub { /** * hbname 紅包名稱 fee 紅包金額 /元 body 內容 openid 微信用戶id * @param undefined $arr * * @return */ public function sendhongbaoto($arr){ //$comm = new Common_util_pub(); $data['mch_id'] = '120005402'; $data['mch_billno'] = '120005402'.date("Ymd",time()).date("His",time()).rand(1111,9999); $data['nonce_str'] = self::createNoncestr(); $data['re_openid'] = $arr['openid']; $data['wxappid'] = 'wx8axxxxxbac4905'; $data['nick_name'] = $arr['hbname']; $data['send_name'] = $arr['hbname'];如果你還有不明白的話,可以問我,我自己在冊鏈後盾人學習了。(m´・ω・`)m

閱讀全文

與微信紅包php源碼相關的資料

熱點內容
路由器如何控制某個app 瀏覽:41
C51編譯器在標准C的基礎上 瀏覽:260
銀行卡掉了可以辦車貸解壓嗎 瀏覽:317
沒解壓可以貸款嗎 瀏覽:517
最小pdf閱讀器 瀏覽:808
游戲被加密了怎樣用電腦打開 瀏覽:300
藍燈如何手動選擇伺服器 瀏覽:85
伺服器設置在中國意味什麼 瀏覽:571
單片機不能進行選擇控制 瀏覽:694
咕咚手錶如何綁定手機app 瀏覽:530
命令虛擬語氣 瀏覽:405
戴爾系統命令 瀏覽:583
怎樣壓縮視頻文件大小 瀏覽:686
51單片機信號發生器 瀏覽:56
米拍攝影哪個app好 瀏覽:88
天津致遠曙光伺服器雲伺服器 瀏覽:117
光子程序員怎麼獲得 瀏覽:535
中醫診斷學第九版pdf 瀏覽:498
python集成包 瀏覽:305
如何用電腦解壓縮文件 瀏覽:448