




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
【移動應(yīng)用開發(fā)技術(shù)】微信小程序如何實(shí)現(xiàn)支付功能
這篇文章主要為大家展示了“微信小程序如何實(shí)現(xiàn)支付功能”,內(nèi)容簡而易懂,條理清晰,希望能夠幫助大家解決疑惑,下面讓在下帶領(lǐng)大家一起研究并學(xué)習(xí)一下“微信小程序如何實(shí)現(xiàn)支付功能”這篇文章吧。開發(fā)前必讀主要流程小程序前端發(fā)送求參請求接受請求封裝“統(tǒng)一下單”獲取package小程序接受“統(tǒng)一下單”獲取的package值帶入wx.requestPayment發(fā)起支付請求準(zhǔn)備工具申請小程序微信支付拿到小程序微信支付的商戶號及設(shè)置秘鑰注意:小程序就只需要這兩步,如果是web的話還需要設(shè)置支付目錄授權(quán)域名,文檔里面也有寫的:/wik..統(tǒng)一下單官方文檔:/wik.../**
*
統(tǒng)一訂單
*/
public
function
unifiedorder(){
//
以下配置是必填項,如有其它需求請自行配置
$config
=
array(
'appid'
=>
'xxxxxxx',//這里是小程序appid
'mch_id'
=>
'xxxxxxx',//商戶ID
'nonce_str'
=>
$this->getNonceStr(),//隨機(jī)字符串
'body'
=>
'這里是測試
-
測試',//請按照文檔要求填寫合格名稱
'out_trade_no'
=>
time().$this->getNonceStr(2),//流水單號
'total_fee'
=>
'20',//金額,分為單位,這里是0.2元
'spbill_create_ip'
=>
'23',//當(dāng)前IP
'notify_url'
=>
'',//請恕我愚昧,我沒搞懂他有什么用
'trade_type'
=>
'JSAPI',//必須填寫JSAPI
'openid'
=>
'xxxxxxxx'//當(dāng)前用戶的openid,在trade_type=JSAPI的時候,此項就變成必填項了
);
$config['sign']
=
$this->getSignPay($config);
$xmlData
=
$this->ToXml($config);//轉(zhuǎn)成xml數(shù)據(jù)
$postData
=
$this->http_post($xmlData);
$arrayData
=
$this->FromXml($postData);
if($arrayData['return_code']
==
'SUCCESS'
||
$arrayData['result_code']
==
'SUCCESS'){
return
$arrayData['prepay_id'];//重點(diǎn)來了:走了這么多路,就為了這個值。到這一步就證明成功一多半了。
}else{
return
$arrayData;//返回錯誤
}
}
/**
*
獲取簽名
*/
public
function
getSignPay($config){
$key
=
'xxxxxxx';//商戶秘鑰,就是自己生成的32位密碼
$strA
=
'appid='.$config['appid'].'&body='.$config['body'].'&mch_id='.$config['mch_id'].'&nonce_str='.$config['nonce_str'].'¬ify_url='.$config['notify_url'].'&spbill_create_ip'.$config['spbill_create_ip'].'&total_fee='.$config['total_fee'].'&trade_type='.$config['trade_type'];//ASCII
字典序
$strB
=
$strA.'&key='.$key;
$sign
=
strtoupper(md5($strB));//大寫MD5
return
$sign;
}
/**
*
隨機(jī)字符串
32位
*/
public
function
getNonceStr($length
=
32){
$chars
=
"abcdefghijklmnopqrstuvwxyz0123456789";
$str
="";
for
(
$i
=
0;
$i
<
$length;
$i++
)
{
$str
.=
substr($chars,
mt_rand(0,
strlen($chars)-1),
1);
}
return
$str;
}
/**
*
array轉(zhuǎn)XML
*/
public
function
ToXml($data){
if(!is_array($data)
||
count($data)
<=
0){
throw
new
WxPayException("數(shù)組數(shù)據(jù)異常!");
}
$xml
=
"<xml>";
foreach
($data
as
$key=>$val){
$xml.="<".$key.">".$val."</".$key.">";
}
$xml.="</xml>";
return
$xml;
}
/**
*
xml轉(zhuǎn)array
*/
public
function
FromXml($xml){
if(!$xml){
throw
new
WxPayException("xml數(shù)據(jù)異常!");
}
libxml_disable_entity_loader(true);
$this->values
=
json_decode(json_encode(simplexml_load_string($xml,
'SimpleXMLElement',
LIBXML_NOCDATA)),
true);
return
$this->values;
}
/**
*
post
請求
*/
public
function
http_post($url,$param,$post_file=false){
$oCurl
=
curl_init();
if(stripos($url,"https://")!==FALSE){
curl_setopt($oCurl,
CURLOPT_SSL_VERIFYPEER,
FALSE);
curl_setopt($oCurl,
CURLOPT_SSL_VERIFYHOST,
false);
curl_setopt($oCurl,
CURLOPT_SSLVERSION,
1);
//CURL_SSLVERSION_TLSv1
}
if
(PHP_VERSION_ID
>=
50500
&&
class_exists('\CURLFile'))
{
$is_curlFile
=
true;
}
else
{
$is_curlFile
=
false;
if
(defined('CURLOPT_SAFE_UPLOAD'))
{
curl_setopt($oCurl,
CURLOPT_SAFE_UPLOAD,
false);
}
}
if
(is_string($param))
{
$strPOST
=
$param;
}elseif($post_file)
{
if($is_curlFile)
{
foreach
($param
as
$key
=>
$val)
{
if
(substr($val,
0,
1)
==
'@')
{
}
}
}
$strPOST
=
$param;
}
else
{
$aPOST
=
array();
foreach($param
as
$key=>$val){
$aPOST[]
=
$key."=".urlencode($val);
}
$strPOST
=
join("&",
$aPOST);
}
curl_setopt($oCurl,
CURLOPT_URL,
$url);
curl_setopt($oCurl,
CURLOPT_RETURNTRANSFER,
1
);
curl_setopt($oCurl,
CURLOPT_POST,true);
curl_setopt($oCurl,
CURLOPT_POSTFIELDS,$strPOST);
$sContent
=
curl_exec($oCurl);
$aStatus
=
curl_getinfo($oCurl);
curl_close($oCurl);
if(intval($aStatus["http_code"])==200){
return
$sContent;
}else{
return
false;
}
}好了現(xiàn)在已經(jīng)獲取到了prepay_id的值,我們的統(tǒng)一下單就算完成了,其實(shí)我更樂意叫他數(shù)據(jù)封小程序微信支付官方文檔:https://developers.weixin.qq先來一個插曲,首先我們小程序的前端需要去觸發(fā)pay,實(shí)現(xiàn)的功能肯定是要點(diǎn)擊小程序的一個觸發(fā),然后才能支付對吧,pay:function(e){
//這里面使用post去請求。然后通過我接下來要寫的API支付代碼獲取小程序支付參數(shù)
success:function(res){
wx.requestPayment({
'timeStamp':toString(res.timeStamp),//這里轉(zhuǎn)字符串,這里被坑過,不轉(zhuǎn)的話可能會出現(xiàn)total_fee為空
'nonceStr':toString(res.nonceStr),
'package':toString(res.package),
'signType':'MD5',
'paySign':toString(res.paySign),
success:function(res){
console.log(res);//這里可以跳轉(zhuǎn)到帶參地址
},
fail:function(res){
('支付失敗',res);
},
complete:function(){
('支付觸發(fā)回調(diào)',res);
}
})
}
}api支付也就是上面小程序代碼的后端請求地址/**
*
api組裝數(shù)據(jù)
*/
public
function
payApiBlack(){
$appid
=
'xxxxxx';//小程序appid,上面有重復(fù),不過這樣比較直觀
$timeStamp
=
time();
$nonceStr
=
$this->getNonceStr();//這是調(diào)用統(tǒng)一下單里面的方法,為了直觀,我把這些代碼都寫在了一個類里
$package
=
'prepay_id='.$this->unifiedorder();
$signType
=
'MD5';
$key
=
'xxxxxx';//這里是商戶秘鑰,32位,同上面也有
$strA
=
'appId='.$appid.'&nonceStr=
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 韶關(guān)市新豐縣醫(yī)共體招聘專業(yè)技術(shù)人員真題2024
- 銷售專員述職報告
- 大數(shù)據(jù)時代下的信息管理與技術(shù)應(yīng)用研究報告
- 二零二五年度外墻保溫涂料施工技術(shù)創(chuàng)新與人才培養(yǎng)合同
- 2025年度智能安防系統(tǒng)項目終止合同通知書模板范文
- 二零二五年度個人間借款擔(dān)保及風(fēng)險分擔(dān)合同
- 二零二五年度農(nóng)家樂農(nóng)莊租賃經(jīng)營合同
- 2025年度智能制造項目業(yè)績回報提成協(xié)議
- 二零二五年度綠色建筑合作協(xié)議解讀:簡述概念特點(diǎn)與節(jié)能減排
- 二零二五年度房地產(chǎn)并購重組合作協(xié)議
- 樹木高空修剪安全施工方案
- 以租代購合同范例
- 第八章:農(nóng)業(yè)科技成果轉(zhuǎn)化
- 水庫周邊綠化養(yǎng)護(hù)方案
- 食品安全管理員考試題庫298題(含標(biāo)準(zhǔn)答案)
- 互聯(lián)網(wǎng)+大學(xué)創(chuàng)新創(chuàng)業(yè)大賽金獎計劃書(完整詳細(xì)版)
- 非ST段抬高型急性冠脈綜合征診斷和治療指南(2024)解讀
- 小班建構(gòu)區(qū)課件
- 《積極心理學(xué)(第3版)》 課件 第3章 積極情緒的價值
- JGJT163-城市夜景照明設(shè)計標(biāo)準(zhǔn)-修訂征求意見稿
- 中電聯(lián)團(tuán)體標(biāo)準(zhǔn)架空輸電線路螺旋錨基礎(chǔ)工程技術(shù)規(guī)范
評論
0/150
提交評論