微信红包,企业支付完整命名空间版
包含微信普通红包,裂变红包,企业支付,红包查询,支付查询<?php <br />
namespace Com;<br>
<br>
// +----------------------------------------------------------------------<br>
// | Author: 左边 (加群:366504956(刚建,欢迎) 交流thinkphp下微信开发)<br>
// +----------------------------------------------------------------------<br>
<br>
class ComPay {<br>
//证书<br>
private $apiclient_cert = '';<br>
private $apiclient_key = '';<br>
//pay的秘钥值<br>
private $apikey = "e10adc3949ba59abbe56e057f20f883e";<br>
//错误信息<br>
private $error = '';<br>
<br>
private $mchid = '1309319401';//商户号<br>
private $mchappid = 'wx9dc408cb04cd6f2d';//公众号<br>
private $openid = 'oql2ZwUwTvQsD73jTZuzRc2KFYEA';//接收者openid<br>
private $amount = 100;//金额<br>
private $partnertradeno = '';//订单号<br>
private $spbillcreateip = '';//触发ip<br>
private $checkname = 'NO_CHECK';//校验要求<br>
<br>
private $sendname = '发送者名字';<br>
private $wishing = '祝福语';<br>
private $actname = '活动名称';<br>
private $remark = '有钱,任性';<br>
<br>
private $totalnum =3;<br>
private $amttype ='ALL_RAND';<br>
<br>
//裂变红包<br>
private $api_group = "https://api.mch.weixin.qq.com/mmpaymkttransfers/sendgroupredpack";<br>
//普通红包<br>
private $api_single = "https://api.mch.weixin.qq.com/mmpaymkttransfers/sendredpack";<br>
//企业支付<br>
private $api_compay = "https://api.mch.weixin.qq.com/mmpaymkttransfers/promotion/transfers";<br>
//约包查询<br>
private $api_redbag_select = "https://api.mch.weixin.qq.com/mmpaymkttransfers/gethbinfo";<br>
//企业支付查询<br>
private $api_compay_select = "https://api.mch.weixin.qq.com/mmpaymkttransfers/gettransferinfo";<br>
<br>
<br>
/**<br>
*公用-支付用商户号<br>
*@var string<br>
*/<br>
public function setMchid($mchid){<br>
$this->mchid = $mchid;<br>
}<br>
/**<br>
*公用-pay的秘钥值<br>
*@var string<br>
*/<br>
public function setApiKey($apikey){<br>
$this->apikey = $apikey;<br>
}<br>
<br>
<br>
/**<br>
*企业支付用微信公众号<br>
*@var string<br>
*/<br>
public function setMchAppid($mchappid){<br>
$this->mchappid = $mchappid;<br>
}<br>
/**<br>
*企业支付接收用户openid<br>
*@var string<br>
*/<br>
public function setOpenid($openid){<br>
$this->openid = $openid;<br>
}<br>
<br>
/**<br>
*企业支付金额<br>
*@var integer<br>
*/<br>
public function setAmount($amount){<br>
$this->amount = $amount;<br>
}<br>
/**<br>
*企业支付描述<br>
*@var string<br>
*/<br>
public function setDesc($desc){<br>
$this->remark = $desc;<br>
}<br>
<br>
/**<br>
*企业支付订单号<br>
*@var string<br>
*/<br>
public function setPartnerTradeNo($partnertradeno){<br>
$this->partnertradeno = $partnertradeno;<br>
}<br>
/**<br>
*企业支付触发ip<br>
*@var string<br>
*/<br>
public function setSpbillCreateIp($spbillcreateip){<br>
$this->spbillcreateip = $spbillcreateip;<br>
}<br>
/**<br>
*企业支付校验规则<br>
*@var string<br>
*/<br>
public function setCheckName($checkname){<br>
$this->checkname = $checkname;<br>
}<br>
<br>
/**<br>
*红包支付公众号<br>
*@var string<br>
*/<br>
public function setWxappid($wxappid){<br>
$this->mchappid = $wxappid;<br>
}<br>
/**<br>
*红包支付订单号<br>
*@var string<br>
*/<br>
public function setMchBillNo($mchbillno){<br>
$this->partnertradeno = $mchbillno;<br>
}<br>
/**<br>
*红包支付触发ip<br>
*@var string<br>
*/<br>
public function setClientIp($clientip){<br>
$this->spbillcreateip = $clientip;<br>
}<br>
/**<br>
*红包接收者/裂一变红包的种子接收者<br>
*@var string<br>
*/<br>
public function setReOpenid($reopenid){<br>
$this->openid = $reopenid;<br>
}<br>
/**<br>
*红包支付金额<br>
*@var integer<br>
*/<br>
public function setTotalAmount($totalamount){<br>
$this->amount = $totalamount;<br>
}<br>
/**<br>
*红包支付公众号<br>
*@var string<br>
*/<br>
public function setSendName($sendname){<br>
$this->sendname = $sendname;<br>
}<br>
/**<br>
*红包支祝福语<br>
*@var string<br>
*/<br>
public function setWishing($wishing){<br>
$this->wishing = $wishing;<br>
}<br>
/**<br>
*红包支付活动名称<br>
*@var string<br>
*/<br>
public function setActName($actname){<br>
$this->actname = $actname;<br>
}<br>
/**<br>
*红包支付备注信息<br>
*@var string<br>
*/<br>
public function setRemark($remark){<br>
$this->remark = $remark;<br>
}<br>
/**<br>
*红包支付个数-裂变专用<br>
*@var string<br>
*/<br>
public function setTotalNum($totalnum){<br>
$this->totalnum = $totalnum;<br>
}<br>
<br>
public function setAppId($appid){<br>
$this->mchappid = $appid;<br>
}<br>
/**<br>
*错误反馈<br>
*@return string<br>
*/<br>
public function error(){<br>
return $this->error;<br>
}<br>
<br>
/**<br>
*普通红包支付<br>
*@return boolean<br>
*/<br>
public function RedBag(){<br>
if(!$this->inited()) return;<br>
$obj = array();<br>
$obj['wxappid'] = $this->mchappid;<br>
$obj['mch_id'] = $this->mchid;<br>
$obj['mch_billno'] = $this->partnertradeno;<br>
$obj['client_ip'] = $this->spbillcreateip;<br>
$obj['re_openid'] = $this->openid;<br>
$obj['total_amount'] = $this->amount;<br>
$obj['total_num'] = 1;<br>
$obj['send_name'] = $this->sendname;<br>
$obj['wishing'] = $this->wishing;<br>
$obj['act_name'] = $this->actname;<br>
$obj['remark'] = $this->remark;<br>
$url = $this->api_single;<br>
return $this->Pay($url,$obj);<br>
}<br>
<br>
<br>
<br>
/**<br>
*裂变红包支付<br>
*@return boolean<br>
*/<br>
public function RedBagGroup(){<br>
if(!$this->inited()) return;<br>
$obj = array();<br>
$obj['wxappid'] = $this->mchappid;<br>
$obj['mch_id'] = $this->mchid;<br>
$obj['mch_billno'] = $this->partnertradeno;<br>
$obj['re_openid'] = $this->openid;<br>
$obj['total_amount'] = $this->amount;<br>
$obj['total_num'] = $this->totalnum;<br>
$obj['amt_type'] = $this->amttype;<br>
$obj['send_name'] = $this->sendname;<br>
$obj['wishing'] = $this->wishing;<br>
$obj['act_name'] = $this->actname;<br>
$obj['remark'] = $this->remark;<br>
$url = $this->api_single;<br>
return $this->Pay($url,$obj);<br>
}<br>
/**<br>
*企业支付<br>
*@return boolean<br>
*/<br>
public function ComPay(){<br>
if(!$this->inited()) return;<br>
$obj = array();<br>
$obj['openid'] = $this->openid;<br>
$obj['amount'] = $this->amount;<br>
$obj['desc'] = $this->remark;<br>
$obj['mch_appid'] = $this->mchappid;<br>
$obj['mchid'] = $this->mchid;<br>
$obj['partner_trade_no'] = $this->partnertradeno;<br>
$obj['spbill_create_ip'] = $this->spbillcreateip;<br>
$obj['check_name'] = $this->checkname;<br>
$url = $this->api_compay;<br>
return $this->Pay($url,$obj);<br>
}<br>
/**<br>
*红包查询<br>
*@return array<br>
*/<br>
public function BagSelect(){<br>
$this->license();<br>
$obj = array();<br>
$obj['appid'] = $this->mchappid;<br>
$obj['mch_id'] = $this->mchid;<br>
$obj['mch_billno'] = $this->partnertradeno;<br>
$obj['bill_type'] = 'MCHT';<br>
$url = $this->api_redbag_select;<br>
return $this->Pay($url,$obj);<br>
}<br>
/**<br>
*企业支付查询<br>
*@return array<br>
*/<br>
public function ComPaySelect(){<br>
$this->license();<br>
$obj = array();<br>
$obj['appid'] = $this->mchappid;<br>
$obj['mch_id'] = $this->mchid;<br>
$obj['partner_trade_no'] = $this->partnertradeno;<br>
$url = $this->api_compay_select;<br>
return $this->Pay($url,$obj);<br>
}<br>
<br>
/**<br>
*支付前准备<br>
*@return boolean<br>
*/<br>
private function inited(){<br>
$inited = true;<br>
$amount = $this->amount;<br>
if(!is_numeric($amount)){<br>
$this->error = "金额参数错误";<br>
$inited = false;<br>
}elseif($amount
$this->error = "金额太小";<br>
$inited = false;<br>
}elseif($amount>20000){<br>
$this->error = "金额太大";<br>
$inited = false;<br>
}<br>
if(!$this->partnertradeno){<br>
$this->partnertradeno = $this->GenBillNo();<br>
}<br>
if(!$this->spbillcreateip)<br>
$this->spbillcreateip = $_SERVER['REMOTE_ADDR'];<br>
$this->license();<br>
return $inited;<br>
}<br>
/**<br>
*证书初始化<br>
*放在同目录 cacert/文件夹下<br>
*/<br>
private function license(){<br>
if(!$this->apiclient_cert) <br>
$this->apiclient_cert = dirname(__FILE__)."/cacert/apiclient_cert.pem";<br>
if(!$this->apiclient_key) <br>
$this->apiclient_key = dirname(__FILE__)."/cacert/apiclient_key.pem";<br>
}<br>
<br>
/**<br>
*生在订单号<br>
*@return boolean<br>
*/<br>
private function GenBillNo(){<br>
$rnd_num = array('0','1','2','3','4','5','6','7','8','9');<br>
$rndstr = "";<br>
while(strlen($rndstr)
$rndstr .= $rnd_num[array_rand($rnd_num)]; <br>
}<br>
<br>
return $this->mchid.date("Ymd").$rndstr;<br>
}<br>
<br>
/**<br>
*完成支付操作<br>
*@url string<br>
*@obj array<br>
*@return boolean<br>
*/<br>
private function Pay($url,$obj){ <br>
$obj['nonce_str'] = $this->create_noncestr();<br>
$sign = $this->getSign($obj);<br>
$obj['sign'] = $sign;<br>
$postXml = $this->arrayToXml($obj);<br>
$responseXml = $this->CurlPostSsl($url,$postXml);<br>
return $responseXml;<br>
}<br>
/**<br>
*创建随机字串<br>
*@return string<br>
*/<br>
private function create_noncestr($length = 32){<br>
$chars = 'abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789';<br>
$str = '';<br>
for ($i = 0; $i
$str .= substr($chars,mt_rand(0,strlen($chars)-1),1);<br>
}<br>
return $str;<br>
}<br>
/**<br>
*创建签名<br>
*@return string<br>
*/<br>
private function getSign($arr){<br>
ksort($arr); //按照键名排序<br>
$sign_raw = '';<br>
foreach($arr as $k => $v){<br>
$sign_raw .= $k.'='.$v.'&';<br>
}<br>
$sign_raw .= 'key='.$this->apikey;<br>
<br>
return strtoupper(md5($sign_raw));<br>
}<br>
<br>
/**<br>
* WXHongBao::genXMLParam()<br>
* 生成post的参数xml数据包<br>
* @return $xml<br>
*/<br>
private function arrayToXml($arr){<br>
$xml ="<xml>";<br>
foreach ($arr as $key => $val) {<br>
if (is_numeric($val)) {<br>
$xml .= "".$val."".$key.">";<br>
}else{<br>
$xml .= "".$key.">";<br>
}<br>
}<br>
$xml .= "</xml>";<br>
return $xml; <br>
}<br>
<br>
/**<br>
* curl提交<br>
* @return $boolean<br>
*/<br>
private function CurlPostSsl($url,$xml,$second = 10){<br>
$ch = curl_init(); <br>
curl_setopt($ch,CURLOPT_TIMEOUT,$second);<br>
curl_setopt($ch,CURLOPT_RETURNTRANSFER, 1); <br>
curl_setopt($ch,CURLOPT_URL,$url);<br>
curl_setopt($ch,CURLOPT_SSL_VERIFYPEER,false);<br>
curl_setopt($ch,CURLOPT_SSL_VERIFYHOST,false);<br>
<br>
curl_setopt($ch,CURLOPT_SSLCERTTYPE,'PEM');<br>
curl_setopt($ch,CURLOPT_SSLCERT,$this->apiclient_cert); <br>
curl_setopt($ch,CURLOPT_SSLKEYTYPE,'PEM');<br>
curl_setopt($ch,CURLOPT_SSLKEY,$this->apiclient_key);<br>
curl_setopt($ch,CURLOPT_POST, 1);<br>
curl_setopt($ch,CURLOPT_POSTFIELDS,$xml);<br>
$data = curl_exec($ch);<br>
if($data){<br>
curl_close($ch); <br>
$rsxml = simplexml_load_string($data);<br>
if($rsxml->return_code == 'SUCCESS' ){<br>
return $data;<br>
}else{<br>
$this->error = $rsxml->return_msg;<br>
return false; <br>
}<br>
}else{ <br>
$this->error = curl_errno($ch);<br>
curl_close($ch);<br>
return false;<br>
}<br>
}<br>
<br>
<br>
<br>
<br>
<br>
}
ComPay.class.zip
( 3.03 KB 下载:138 次 )
AD:真正免费,域名+虚机+企业邮箱=0元

熱AI工具

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

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

Undress AI Tool
免費脫衣圖片

Clothoff.io
AI脫衣器

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

熱門文章

熱工具

記事本++7.3.1
好用且免費的程式碼編輯器

SublimeText3漢化版
中文版,非常好用

禪工作室 13.0.1
強大的PHP整合開發環境

Dreamweaver CS6
視覺化網頁開發工具

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

了解Python程式設計的入門程式碼範例Python是一種簡單易學,功能強大的程式語言。對於初學者來說,了解Python程式設計的入門級程式碼範例是非常重要的。本文將為您提供一些具體的程式碼範例,幫助您快速入門。列印HelloWorldprint("HelloWorld")這是Python中最簡單的程式碼範例。 print()函數用於將指定的內容輸出

《Go語言程式設計實例:Web開發中的程式碼範例》隨著網路的快速發展,Web開發已成為各行業中不可或缺的一部分。作為一門功能強大且效能優越的程式語言,Go語言在Web開發中越來越受到開發者們的青睞。本文將透過具體的程式碼範例,介紹如何利用Go語言進行Web開發,讓讀者更能理解並運用Go語言來建立自己的Web應用。 1.簡單的HTTP伺服器首先,讓我們從一個

PHP變數儲存程式運行期間的值,對於建立動態且互動的WEB應用程式至關重要。本文將深入探討php變量,並透過10個真實的範例展示它們的實際應用。 1.儲存使用者輸入$username=$_POST["username"];$passWord=$_POST["password"];此範例從表單提交中提取使用者名稱和密碼,並將其儲存在變數中以供進一步處理。 2.設定配置值$database_host="localhost";$database_username="username";$database_pa

Java冒泡排序最簡單的程式碼範例冒泡排序是一種常見的排序演算法,它的基本想法是透過相鄰元素的比較和交換來將待排序序列逐步調整為有序序列。以下是一個簡單的Java程式碼範例,示範如何實作冒泡排序:publicclassBubbleSort{publicstaticvoidbubbleSort(int[]arr){int

如何使用PHP編寫庫存管理系統中的庫存分倉管理功能碼庫存管理是許多企業中不可或缺的一部分。對於擁有多個倉庫的企業來說,庫存分倉管理功能尤其重要。透過合理管理和追蹤庫存,企業可以實現不同倉庫之間的庫存調撥,優化營運成本,改善協同效率。本文將介紹如何使用PHP編寫庫存分倉管理功能的程式碼,並為您提供相關的程式碼範例。一、建立資料庫在開始編寫庫存分倉管理功能的程式碼之

華為雲端邊緣運算對接指南:Java程式碼範例快速實現介面隨著物聯網技術的快速發展和邊緣運算的興起,越來越多的企業開始關注邊緣運算的應用。華為雲端提供了邊緣運算服務,為企業提供了高可靠的運算資源和便利的開發環境,使得邊緣運算應用更容易實現。本文將介紹如何透過Java程式碼快速實現華為雲端邊緣運算的介面。首先,我們需要準備好開發環境。確保你已經安裝了Java開發工具包(

標題:從入門到精通:Go語言中常用資料結構的程式碼實作資料結構在程式設計中起著至關重要的作用,它是程式設計的基礎。在Go語言中,有許多常用的資料結構,掌握這些資料結構的實作方式對於成為優秀的程式設計師至關重要。本文將介紹Go語言中常用的資料結構,並給出對應的程式碼範例,幫助讀者從入門到精通這些資料結構。 1.數組(Array)數組是一種基本的資料結構,是一組相同類型

Java選擇排序法程式碼編寫指南及範例選擇排序是一種簡單直觀的排序演算法,其想法是每次從未排序的元素中選擇最小(或最大)的元素進行交換,直到所有元素排序完成。本文將提供選擇排序的程式碼編寫指南,並附上具體的Java範例程式碼。演算法原理選擇排序的基本原理是將待排序數組分為已排序和未排序兩部分,每次從未排序部分選擇最小(或最大)的元素,將其放到已排序部分的末尾。重複上述
