版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
【移動(dòng)應(yīng)用開發(fā)技術(shù)】微信小程序如何實(shí)現(xiàn)支付功能
這篇文章主要為大家展示了“微信小程序如何實(shí)現(xiàn)支付功能”,內(nèi)容簡(jiǎn)而易懂,條理清晰,希望能夠幫助大家解決疑惑,下面讓在下帶領(lǐng)大家一起研究并學(xué)習(xí)一下“微信小程序如何實(shí)現(xiàn)支付功能”這篇文章吧。開發(fā)前必讀主要流程小程序前端發(fā)送求參請(qǐng)求接受請(qǐng)求封裝“統(tǒng)一下單”獲取package小程序接受“統(tǒng)一下單”獲取的package值帶入wx.requestPayment發(fā)起支付請(qǐng)求準(zhǔn)備工具申請(qǐng)小程序微信支付拿到小程序微信支付的商戶號(hào)及設(shè)置秘鑰注意:小程序就只需要這兩步,如果是web的話還需要設(shè)置支付目錄授權(quán)域名,文檔里面也有寫的:/wik..統(tǒng)一下單官方文檔:/wik.../**
*
統(tǒng)一訂單
*/
public
function
unifiedorder(){
//
以下配置是必填項(xiàng),如有其它需求請(qǐng)自行配置
$config
=
array(
'appid'
=>
'xxxxxxx',//這里是小程序appid
'mch_id'
=>
'xxxxxxx',//商戶ID
'nonce_str'
=>
$this->getNonceStr(),//隨機(jī)字符串
'body'
=>
'這里是測(cè)試
-
測(cè)試',//請(qǐng)按照文檔要求填寫合格名稱
'out_trade_no'
=>
time().$this->getNonceStr(2),//流水單號(hào)
'total_fee'
=>
'20',//金額,分為單位,這里是0.2元
'spbill_create_ip'
=>
'23',//當(dāng)前IP
'notify_url'
=>
'',//請(qǐng)恕我愚昧,我沒搞懂他有什么用
'trade_type'
=>
'JSAPI',//必須填寫JSAPI
'openid'
=>
'xxxxxxxx'//當(dāng)前用戶的openid,在trade_type=JSAPI的時(shí)候,此項(xiàng)就變成必填項(xiàng)了
);
$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)來了:走了這么多路,就為了這個(gè)值。到這一步就證明成功一多半了。
}else{
return
$arrayData;//返回錯(cuò)誤
}
}
/**
*
獲取簽名
*/
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
請(qǐng)求
*/
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先來一個(gè)插曲,首先我們小程序的前端需要去觸發(fā)pay,實(shí)現(xiàn)的功能肯定是要點(diǎn)擊小程序的一個(gè)觸發(fā),然后才能支付對(duì)吧,pay:function(e){
//這里面使用post去請(qǐng)求。然后通過我接下來要寫的API支付代碼獲取小程序支付參數(shù)
success:function(res){
wx.requestPayment({
'timeStamp':toString(res.timeStamp),//這里轉(zhuǎn)字符串,這里被坑過,不轉(zhuǎn)的話可能會(huì)出現(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支付也就是上面小程序代碼的后端請(qǐng)求地址/**
*
api組裝數(shù)據(jù)
*/
public
function
payApiBlack(){
$appid
=
'xxxxxx';//小程序appid,上面有重復(fù),不過這樣比較直觀
$timeStamp
=
time();
$nonceStr
=
$this->getNonceStr();//這是調(diào)用統(tǒng)一下單里面的方法,為了直觀,我把這些代碼都寫在了一個(gè)類里
$package
=
'prepay_id='.$this->unifiedorder();
$signType
=
'MD5';
$key
=
'xxxxxx';//這里是商戶秘鑰,32位,同上面也有
$strA
=
'appId='.$appid.'&nonceStr=
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 26《好的故事》說課稿-2024-2025學(xué)年語文六年級(jí)上冊(cè)統(tǒng)編版
- 1場(chǎng)景歌說課稿-2024-2025學(xué)年統(tǒng)編版語文二年級(jí)上冊(cè)
- 2024年秋一年級(jí)道德與法治下冊(cè) 第二單元 我和大自然 5 風(fēng)兒輕輕吹說課稿 新人教版
- 18古詩三首浪淘沙(其一)說課稿-2024-2025學(xué)年六年級(jí)上冊(cè)語文統(tǒng)編版
- 8 設(shè)計(jì)制作小車(二) 說課稿-2024-2025學(xué)年科學(xué)四年級(jí)上冊(cè)教科版
- 23《月光曲》說課稿-2024-2025學(xué)年語文六年級(jí)上冊(cè)統(tǒng)編版
- 1 24時(shí)計(jì)時(shí)法(說課稿)-2024-2025學(xué)年三年級(jí)上冊(cè)數(shù)學(xué)人教版001
- 2023九年級(jí)道德與法治上冊(cè) 第三單元 文明與家園 第五課 守望精神家園第2框 凝聚價(jià)值追求說課稿 新人教版
- 2025北京市飼料采購(gòu)合同新
- 2025建造船舶所要用到的合同
- 煙葉復(fù)烤能源管理
- 食品安全管理員考試題庫298題(含標(biāo)準(zhǔn)答案)
- 執(zhí)業(yè)醫(yī)師資格考試《臨床執(zhí)業(yè)醫(yī)師》 考前 押題試卷絕密1 答案
- 2024年山東濟(jì)寧初中學(xué)業(yè)水平考試地理試卷真題(含答案詳解)
- 社會(huì)保險(xiǎn)課件教學(xué)課件
- 訂婚協(xié)議書手寫模板攻略
- 準(zhǔn)備單元 雪地上的“足跡”(教學(xué)設(shè)計(jì))-2023-2024學(xué)年五年級(jí)下冊(cè)科學(xué)大象版
- 宇航用商業(yè)現(xiàn)貨(COTS)器件保證指南-編制說明
- 音樂學(xué)科閱讀方案
- 《立體倉(cāng)庫鋼結(jié)構(gòu)貨架技術(shù)規(guī)范(征求意見稿)》
- 2024年貴州蔬菜集團(tuán)有限公司招聘筆試參考題庫附帶答案詳解
評(píng)論
0/150
提交評(píng)論