亚洲国产日韩欧美一区二区三区,精品亚洲国产成人av在线,国产99视频精品免视看7,99国产精品久久久久久久成人热,欧美日韩亚洲国产综合乱

首頁 微信小程式 微信開發(fā) php微信支付介面開發(fā)程式詳細(xì)介紹

php微信支付介面開發(fā)程式詳細(xì)介紹

Mar 16, 2017 pm 03:23 PM

微信支付介面現(xiàn)在也慢慢的像支付寶一個可以利用api介面來實現(xiàn)第三方網(wǎng)站或應(yīng)用程式進行支付了,下文整理了一個php微信支付介面開發(fā)程式並且己測試,有興趣的夥伴可以參考一下

##php微信支付介面開發(fā)程式講解

必要條件:appid //公眾號後臺開發(fā)者中心獲得(和郵件內(nèi)的一樣)??

mchid//郵件內(nèi)獲得?

key//商家後臺自己設(shè)置

appsecret //公眾號開發(fā)者中心取得

兩個憑證文件,郵件內(nèi)部取得apiclient_cert.pem?? apiclient_key.pem

注意事項
公眾號後臺微信支付-》開發(fā)配置-》
新增測試目錄和測試個人微訊號。 開發(fā)者中心-》網(wǎng)頁授權(quán)取得使用者基本資訊-》修改成你的測試網(wǎng)域。否則會出現(xiàn)re
direct_uri 參數(shù)錯誤——————————後續(xù)待完善——————-
微信支付就緒頁面後臺自行了三次操作:

1.取得openid


#

//使用jsapi接口
 
 代碼如下復(fù)制代碼
  $jsApi = new JsApi_pub();
 
  //=========步驟1:網(wǎng)頁授權(quán)獲取用戶openid============
  //通過code獲得openid
  if (!isset($_GET['code']))
  {
    //觸發(fā)微信返回code碼
    $url = $jsApi->createOauthUrlForCode(WxPayConf_pub::JS_API_CALL_URL);
    //echo $url;
    Header("Location: $url");
  }else
  {
    //獲取code碼,以獲取openid
    $code = $_GET['code'];
    $jsApi->setCode($code);
    $openid = $jsApi->getOpenid();
  }

剛開始的時候第一步也遇到問題,沒辦法取得openid這個和部分伺服器有關(guān),demo內(nèi)用的是curl取得的方式。

奇怪我的伺服器curl一直無法取得。後來改成
file_get_contents可以正常取得了。 可這並不是解決之道。因為後面還需要用到更多的c
url操作。 看到開發(fā)文件裡面有一個地方寫憑證操作需要libcurl 7.20.1以上版本,然後我就一直在整伺服器想把
linux的php curl版本提高。最後面我是換到了另外一臺windows伺服器就好了。 先暫時這樣吧,下次需要用的時候再
調(diào)試。

第二步:取得與支付訂單號碼id程式碼如下


#

$unifiedOrder = new UnifiedOrder_pub();
   
  //var_dump($unifiedOrder);
  //設(shè)置統(tǒng)一支付接口參數(shù)
  //設(shè)置必填參數(shù)
  //appid已填,商戶無需重復(fù)填寫
  //mch_id已填,商戶無需重復(fù)填寫
  //noncestr已填,商戶無需重復(fù)填寫
  //spbill_create_ip已填,商戶無需重復(fù)填寫
  //sign已填,商戶無需重復(fù)填寫
  $unifiedOrder->setParameter("openid","$openid");//商品描述
  $unifiedOrder->setParameter("body","貢獻一分錢");//商品描述
  //自定義訂單號,此處僅作舉例
  $timeStamp = time();
  $out_trade_no = WxPayConf_pub::APPID."$timeStamp";
  $unifiedOrder->setParameter("out_trade_no","$out_trade_no");//商戶訂單號 
  $unifiedOrder->setParameter("total_fee","1");//總金額
  $unifiedOrder->setParameter("notify_url",WxPayConf_pub::NOTIFY_URL);//通知地址 
  $unifiedOrder->setParameter("trade_type","JSAPI");//交易類型
  //非必填參數(shù),商戶可根據(jù)實際情況選填
  //$unifiedOrder->setParameter("sub_mch_id","XXXX");//子商戶號 
  //$unifiedOrder->setParameter("device_info","XXXX");//設(shè)備號 
  //$unifiedOrder->setParameter("attach","XXXX");//附加數(shù)據(jù) 
  //$unifiedOrder->setParameter("time_start","XXXX");//交易起始時間
  //$unifiedOrder->setParameter("time_expire","XXXX");//交易結(jié)束時間 
  //$unifiedOrder->setParameter("goods_tag","XXXX");//商品標(biāo)記 
  //$unifiedOrder->setParameter("openid","XXXX");//用戶標(biāo)識
  //$unifiedOrder->setParameter("product_id","XXXX");//商品ID
 
 
  $prepay_id = $unifiedOrder->getPrepayId();
   
  //echo 'prepay_id:';
  var_dump($prepay_id);

這一步驟也遇到非常多的問題。

首先微信支付測試比較困難,只有在微信內(nèi)才可以測試。我就用手機刷來刷去。
其次使用var_dump調(diào)試也不好使額。列印一些
xml格式的檔案只顯示字元長度,不顯示內(nèi)容。於是用log的形式寫在伺服器上調(diào)試,log程式碼:程式碼如下


// 打印log
  function log_d($word) 
  {
    $log_name="./logd.log";//log文件路徑
    $fp = fopen($log_name,"a");
    flock($fp, LOCK_EX) ;
    fwrite($fp,"執(zhí)行日期:".strftime("%Y-%m-%d-%H:%M:%S",time())."n".$word."nn");
    flock($fp, LOCK_UN);
    fclose($fp);
  }

在demo裡面的WxPayPubHelper.php 裡面用$this->log_d (xxx);調(diào)用。

剛開始的時候因為給我的mchid和 appid不符一直報錯。 。是他們給錯我?guī)ぬ柫?。剛開始我也不懂亂試。這一步的調(diào)試在 getPrepayId()內(nèi) var_dump($this->result); 就能看到錯誤代碼。

第三個步驟:產(chǎn)生支付前端js程式碼就緒到網(wǎng)頁上:程式碼如下

##

$jsApi->setPrepayId($prepay_id);
 
$jsApiParameters = $jsApi->getParameters();

———————-點擊前往付款————————-這部分又遇到了問題:


#android返回“System:Access_denied”,ios回傳”access_control:not_allowed”
搜了很多百度。其實早就看到這個東西一直沒注意了!
發(fā)起授權(quán)請求的頁面必須是在授權(quán)目錄下的頁面,而不能是存在與子目錄中。否則會回傳錯誤
付款檔案我放在了/網(wǎng)域/pay/demo/
剛開始的時候我一直是到/網(wǎng)域/pay/結(jié)尾以為就可以了。支援子目錄,結(jié)果是不行的! 。
—————————最後看下圖—————

wxpay1

wxpay3wxpay2
?
—— ———–流程中的xmljs——————–

待提交生成與支付訂單id:

程式碼如下

<xml>
 <openid><![CDATA[ou9dHt0L8qFLI1foP-kj5x1mDWsM]]></openid>
 <body><![CDATA[貢獻一下]]></body>
 <out_trade_no><![CDATA[wx88888888888888881414411779]]></out_trade_no>
 <total_fee>1</total_fee>
 <notify_url><![CDATA[http://shanmao.me/wxpay/notify_url.php]]></notify_url>
 <trade_type><![CDATA[JSAPI]]></trade_type>
 <appid><![CDATA[wx8888888888888888]]></appid>
 <mch_id>10012345</mch_id>
 <spbill_create_ip><![CDATA[61.50.221.43]]></spbill_create_ip>
 <nonce_str><![CDATA[60uf9sh6nmppr9azveb2bn7arhy79izk]]></nonce_str>
 <sign><![CDATA[2D8A96553672D56BB2908CE4B0A23D0F]]></sign>
</xml>

提交後返回正確,其中包含了perpay_id:

<xml>
 <return_code><![CDATA[SUCCESS]]></return_code> 
 <return_msg><![CDATA[OK]]></return_msg> 
 <appid><![CDATA[wx8888888888888888]]></appid> 
 <mch_id><![CDATA[10012345]]></mch_id> 
 <nonce_str><![CDATA[Be8YX7gjCdtCT7cr]]></nonce_str> 
 <sign><![CDATA[885B6D84635AE6C020EF753A00C8EEDB]]></sign> 
 <result_code><![CDATA[SUCCESS]]></result_code> 
 <prepay_id><![CDATA[wx201410272009395522657a690389285100]]></prepay_id> 
 <trade_type><![CDATA[JSAPI]]></trade_type> 
</xml>

產(chǎn)生支付用的js :


{
  "appId": "wx8888888888888888",
  "timeStamp": "1414411784",
  "nonceStr": "gbwr71b5no6q6ne18c8up1u7l7he2y75",
  "package": "prepay_id=wx201410272009395522657a690389285100",
  "signType": "MD5",
  "paySign": "9C6747193720F851EB876299D59F6C7D"
}

支付支付成功後回傳的通知xml:

<xml><appid><![CDATA[wx8888888888]]></appid>
<bank_type><![CDATA[CCB_DEBIT]]></bank_type>
<fee_type><![CDATA[CNY]]></fee_type>
<is_subscribe><![CDATA[Y]]></is_subscribe>
<mch_id><![CDATA[1011111]]></mch_id>
<nonce_str><![CDATA[38gt0ffgsvfsdfsdfbt1981duv63p7]]></nonce_str>
<openid><![CDATA[o4p3SjfdsfdsfdsdCE5Y2XHw4]]></openid>
<out_trade_no><![CDATA[wx4b56d1fsdfdsf416643247]]></out_trade_no>
<result_code><![CDATA[SUCCESS]]></result_code>
<return_code><![CDATA[SUCCESS]]></return_code>
<sign><![CDATA[356EfsdfdsfsdsfE69509EDA344]]></sign>
<sub_mch_id><![CDATA[10018826]]></sub_mch_id>
<time_end><![CDATA[20141122160122]]></time_end>
<total_fee>1</total_fee>
<trade_type><![CDATA[JSAPI]]></trade_type>
<transaction_id><![CDATA[100715001020fsdfsd1220006123174]]></transaction_id>
</xml>

這其中的資料我隨意了的,大家就參考下格式吧。另外注意大小寫敏感。

以上是php微信支付介面開發(fā)程式詳細(xì)介紹的詳細(xì)內(nèi)容。更多資訊請關(guān)注PHP中文網(wǎng)其他相關(guān)文章!

本網(wǎng)站聲明
本文內(nèi)容由網(wǎng)友自願投稿,版權(quán)歸原作者所有。本站不承擔(dān)相應(yīng)的法律責(zé)任。如發(fā)現(xiàn)涉嫌抄襲或侵權(quán)的內(nèi)容,請聯(lián)絡(luò)admin@php.cn

熱AI工具

Undress AI Tool

Undress AI Tool

免費脫衣圖片

Undresser.AI Undress

Undresser.AI Undress

人工智慧驅(qū)動的應(yīng)用程序,用於創(chuàng)建逼真的裸體照片

AI Clothes Remover

AI Clothes Remover

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

Clothoff.io

Clothoff.io

AI脫衣器

Video Face Swap

Video Face Swap

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

熱工具

記事本++7.3.1

記事本++7.3.1

好用且免費的程式碼編輯器

SublimeText3漢化版

SublimeText3漢化版

中文版,非常好用

禪工作室 13.0.1

禪工作室 13.0.1

強大的PHP整合開發(fā)環(huán)境

Dreamweaver CS6

Dreamweaver CS6

視覺化網(wǎng)頁開發(fā)工具

SublimeText3 Mac版

SublimeText3 Mac版

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

熱門話題

Laravel 教程
1597
29
PHP教程
1488
72