微信小程序支付,php后臺(tái)對(duì)接完整代碼,全是干貨呀,拿過來可以直接使用。小程序在調(diào)起微信支付之前需要5個(gè)參數(shù),這時(shí)候就需要攜帶code向后臺(tái)請(qǐng)求,然后后臺(tái)根據(jù)code獲取openid 再進(jìn)行服務(wù)器之間的。
一、準(zhǔn)備工作
1、小程序注冊(cè),要以公司的以身份去注冊(cè)一個(gè)小程序,才有微信支付權(quán)限;
2、綁定商戶號(hào)。
3、在小程序填寫合法域
二、完成以上條件,你可以得到
小程序appid 小程序秘鑰 這兩個(gè)用于獲取用戶openid;
商戶號(hào)id ,商戶號(hào)秘鑰 支付接口必須的;
三、開始開發(fā)
前臺(tái)代碼
調(diào)起微信支付 @param 支付價(jià)格,不填寫默認(rèn)為1分錢 function pay(total_fee) { var total_fee = total_fee; wx.login({ success: res = { //code 用于獲取openID的條件之一 var code = res.code; wx.request({ url: 后臺(tái)地址/index.php , method: POST , data: { total_fee:total_fee, code: code, header: { content-type : application/x-www-form-urlencoded // 默認(rèn)值 success: function (res) { //后端返回的數(shù)據(jù) var data = res.data; console.log(data); console.log(data[ timeStamp ]); wx.requestPayment({ timeStamp: data[ timeStamp ], nonceStr: data[ nonceStr ], package: data[ package ], signType: data[ signType ], paySign: data[ paySign ], success: function (res) { wx.showModal({ title: 支付成功 , content: , fail: function (res) { console.log(res); });
}
以下是PHP后臺(tái)代碼 ,這里用的是tp框架
?php namespace Home/Controller; use Think/Controller; class PayController extends Controller { /** * [callback 微信支付回調(diào)處理] * @Author zhengmingzhou * @DateTime 2018-05-22 * @return function [description] public function callback(){ vendor( Wechart.WxPay.Api vendor( Wechart.NativePay vendor( Wechart.WxPay.Data vendor( Wechart.WxPay.Notify
$result = $WxPayData- FromXml($xml); if($result[ return_code ] == SUCCESS $result[ result_code ] == SUCCESS ){ //回調(diào)邏輯處理。。。
$WX_SECRET = //AppSecret $url = https://api.weixin.qq.com/sns/jscode2session?appid= . $WX_APPID . secret= . $WX_SECRET . js_code= . $code . grant_type=authorization_code $infos = json_decode(file_get_contents($url)); $openid = $infos- openid; if(I( post.total_fee )) $total_fee=I( post.total_fee else $total_fee=0.01; $fee = 0.01;//舉例充值0.01 $appid = //appid $body = 標(biāo)題 $mch_id = //商戶號(hào) $nonce_str = $this- nonce_str();//隨機(jī)字符串 $notify_url = //回調(diào)的url【自己填寫】 $openid = $openid; $out_trade_no = $this- order_number();//商戶訂單號(hào) $spbill_create_ip = //服務(wù)器的ip【自己填寫】; $total_fee = $fee*100;//這里需要*100 $trade_type = JSAPI //交易類型 默認(rèn)
//這里是按照順序的 因?yàn)橄旅娴暮灻前凑枕樞?排序錯(cuò)誤 肯定出錯(cuò) $post[ appid ] = $appid; $post[ body ] = $body; $post[ mch_id ] = $mch_id; $post[ nonce_str ] = $nonce_str;//隨機(jī)字符串 $post[ notify_url ] = $notify_url; $post[ openid ] = $openid; $post[ out_trade_no ] = $out_trade_no; $post[ spbill_create_ip ] = $spbill_create_ip;//終端的ip $post[ total_fee ] = $total_fee;//總金額 $post[ trade_type ] = $trade_type; $sign = $this- sign($post);//簽名 $post_xml = xml appid .$appid. /appid body .$body. /body mch_id .$mch_id. /mch_id nonce_str .$nonce_str. /nonce_str notify_url .$notify_url. /notify_url openid .$openid. /openid out_trade_no .$out_trade_no. /out_trade_no spbill_create_ip .$spbill_create_ip. /spbill_create_ip total_fee .$total_fee. /total_fee trade_type .$trade_type. /trade_type sign .$sign. /sign /xml
$url = https://api.mch.weixin.qq.com/pay/unifiedorder $xml = $this- http_request($url,$post_xml); $array = $this- xml($xml);//全要大寫
//print_r($array); if($array[ RETURN_CODE ] == SUCCESS $array[ RESULT_CODE ] == SUCCESS ){ $time = time(); $tmp= //臨時(shí)數(shù)組用于簽名 $tmp[ appId ] = $appid; $tmp[ nonceStr ] = $nonce_str; $tmp[ package ] = prepay_id= .$array[ PREPAY_ID $tmp[ signType ] = MD5 $tmp[ timeStamp ] = $time
$data[ nonceStr ] = $nonce_str;//隨機(jī)字符串 $data[ signType ] = MD5 //簽名算法,暫支持 MD5 $data[ package ] = prepay_id= .$array[ PREPAY_ID //統(tǒng)一下單接口返回的 prepay_id 參數(shù)值,提交格式如:prepay_id=* $data[ paySign ] = $this- sign($tmp);//簽名,具體簽名方案參見微信公眾號(hào)支付幫助文檔; $data[ out_trade_no ] = $out_trade_no;
private function order_number($openid){ //date( Ymd ,time()).time().rand(10,99);//18位 return md5($openid.time().rand(10,99));//32位
$wx_key = //申請(qǐng)支付后有給予一個(gè)商戶賬號(hào)和密碼,登陸后自己設(shè)置的key $stringSignTemp = $stringA. key= .$wx_key; return strtoupper(md5($stringSignTemp));
curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, FALSE); curl_setopt($curl, CURLOPT_SSL_VERIFYHOST, FALSE);
}
以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,更多相關(guān)內(nèi)容請(qǐng)關(guān)注PHP !
相關(guān)推薦:
在php中用html_entity_decode實(shí)現(xiàn)HTML實(shí)體轉(zhuǎn)義
以上就是微信小程序支付功能用php進(jìn)行后臺(tái)對(duì)接的詳細(xì)內(nèi)容,PHP教程
鄭重聲明:本文版權(quán)歸原作者所有,轉(zhuǎn)載文章僅為傳播更多信息之目的,如作者信息標(biāo)記有誤,請(qǐng)第一時(shí)間聯(lián)系我們修改或刪除,多謝。
新聞熱點(diǎn)
疑難解答
圖片精選