真实的国产乱ⅩXXX66竹夫人,五月香六月婷婷激情综合,亚洲日本VA一区二区三区,亚洲精品一区二区三区麻豆

成都創(chuàng)新互聯(lián)網(wǎng)站制作重慶分公司

微信開(kāi)發(fā)中如何實(shí)現(xiàn)微信支付

這篇文章給大家分享的是有關(guān)微信開(kāi)發(fā)中如何實(shí)現(xiàn)微信支付的內(nèi)容。小編覺(jué)得挺實(shí)用的,因此分享給大家做個(gè)參考,一起跟隨小編過(guò)來(lái)看看吧。

創(chuàng)新互聯(lián)公司2013年至今,是專業(yè)互聯(lián)網(wǎng)技術(shù)服務(wù)公司,擁有項(xiàng)目成都做網(wǎng)站、網(wǎng)站建設(shè)網(wǎng)站策劃,項(xiàng)目實(shí)施與項(xiàng)目整合能力。我們以讓每一個(gè)夢(mèng)想脫穎而出為使命,1280元類烏齊做網(wǎng)站,已為上家服務(wù),為類烏齊各地企業(yè)和個(gè)人服務(wù),聯(lián)系電話:028-86922220

一、 微信后臺(tái)設(shè)置

1.添加測(cè)試授權(quán)目錄和測(cè)試白名單:

在微信后臺(tái),設(shè)置測(cè)試授權(quán)目錄,如xxx.sinaapp.com/example/,測(cè)試白名單中添加你的微信號(hào)。
注意,這里的“個(gè)人微信號(hào)”既不是qq號(hào)也不是個(gè)人昵稱。而是登錄微信后在“我”界面中的“微信號(hào)”字段的字符串。
支付授權(quán)目錄設(shè)不設(shè)無(wú)所謂,因?yàn)槲覀冎皇菧y(cè)試。

2.列表內(nèi)容

設(shè)置網(wǎng)頁(yè)授權(quán)域名:
在“開(kāi)發(fā)者中心/接口權(quán)限表/網(wǎng)頁(yè)賬號(hào)/網(wǎng)頁(yè)授權(quán)獲取用戶基本信息”中進(jìn)行設(shè)置。網(wǎng)頁(yè)授權(quán)域名設(shè)置為測(cè)試服務(wù)器的域名,如:xxx.sinaapp.com,不需要http://。

二、商戶平臺(tái)設(shè)置

1.下載證書

在“賬戶設(shè)置/API安全/API證書”中下載。需要用到管理員的手機(jī)驗(yàn)證碼。下載后的進(jìn)行解壓縮,我們需要用到的是apiclient_key.pem和apiclient_cert.pem。

2.生成支付key

在“賬戶設(shè)置/API安全/API密鑰”中進(jìn)行設(shè)置。支付key將在支付時(shí)用到,這個(gè)值就是源代碼配置文件中的KEY常量。

三、使用官方V3.7的示例代碼

1、在Wxpay.pub.config.php修改配置,主要是:

    const APPID                 //公眾號(hào)中“開(kāi)發(fā)者中心”看到的AppID
    const MCHID                     //微信支付商戶資料審核成功郵件中的商戶號(hào)
    const KEY                   //你在商戶平臺(tái)中設(shè)置的支付key
    const APPSECRET             //公眾號(hào)中“開(kāi)發(fā)者中心”看到的AppSecret

    const JS_API_CALL_URL       //設(shè)置這個(gè)url,可在此頁(yè)面中獲得用戶的openid。

    //證書路徑,注意應(yīng)該填寫絕對(duì)路徑
    const SSLCERT_PATH          // apiclient_cert.pem文件url
    const SSLKEY_PATH               // apiclient_key.pem文件url,如’/cert/ apiclient_key.pem’
    const NOTIFY_URL                //異步通知url,可使用demo中的notify_url.php

2、修改官方代碼中的bug:
如果出現(xiàn)“curl_setopt() expects parameter 2 to be long”錯(cuò)誤,是因?yàn)閃xPayPubHelper.php中有幾個(gè)地方將“curl_setopt”拼錯(cuò)了,拼成“curl_setop”,將其修改后即可。如果出現(xiàn)“curl_close(): 11 is not a valid”,則是因?yàn)殄e(cuò)誤地關(guān)閉了一個(gè)已經(jīng)關(guān)閉的curl session,可以將curl_close()代碼加上如下判斷:

if(gettype($ch) == 'resource') curl_close($ch);

3、官方demo直接跑不通,我們需要自己搞定它。首先中index.php中增加一個(gè)鏈接:

 獲取openid

3、 然后寫一個(gè)pay.php頁(yè)面,用于獲取用戶openid并發(fā)起支付:

createOauthUrlForCode(WxPayConf_pub::JS_API_CALL_URL);
 Header("Location: $url");
} else {
 // 獲取code碼,以獲取openid
 $code = $_GET['code'];
 $jsApi->setCode($code);
 $openid = $jsApi->getOpenId();
}

$goods = "test";
// 使用統(tǒng)一支付接口
$unifiedOrder = new UnifiedOrder_pub();
$unifiedOrder->setParameter("openid", "$openid"); // 用戶openid
$unifiedOrder->setParameter("body", "$goods"); // 商品描述
 // 自定義訂單號(hào),此處僅作舉例
$timeStamp = time();
$out_trade_no = WxPayConf_pub::APPID . "$timeStamp"; // 商戶訂單號(hào)
$unifiedOrder->setParameter("out_trade_no", "$out_trade_no");
$price = "1";
$unifiedOrder->setParameter("total_fee", "$price"); // 總金額
$unifiedOrder->setParameter("notify_url", WxPayConf_pub::NOTIFY_URL); // 通知地址
$unifiedOrder->setParameter("trade_type", "JSAPI"); // 交易類型

$prepay_id = $unifiedOrder->getPrepayId();
// =========步驟3:使用jsapi調(diào)起支付============
$jsApi->setPrepayId($prepay_id);

$jsApiParameters = $jsApi->getParameters();
echo $jsApiParameters;

?>





微信安全支付



 //調(diào)用微信JS api 支付
 function jsApiCall()
 {
 WeixinJSBridge.invoke(
 'getBrandWCPayRequest',
 ,
 function(res){
 WeixinJSBridge.log(res.err_msg);
 //alert(res.err_code+res.err_desc+res.err_msg);
 }
 );
 }

 function callpay()
 {
 if (typeof WeixinJSBridge == "undefined"){
 if( document.addEventListener ){
 document.addEventListener('WeixinJSBridgeReady', jsApiCall, false);
 }else if (document.attachEvent){
 document.attachEvent('WeixinJSBridgeReady', jsApiCall); 
 document.attachEvent('onWeixinJSBridgeReady', jsApiCall);
 }
 }else{
 jsApiCall();
 }
 }
 


    

 

    

 

                                           openID                                                            商品名稱                                                            訂單號(hào)                                                            prepay_id                                                            價(jià)格                                                貢獻(xiàn)一下     

四、使用官方V3的示例代碼

1、下載官方示例代碼
最新SDK版本為V3.7,但我們不要去下V3.7的demo(那個(gè)例子跑不通),而是要去下V3的例子:

pay.weixin.qq.com/wiki/doc/api/jsapi.php?chapter=11_1

2、將demo解壓縮放到你的web根目錄下。比如,壓縮包解開(kāi)后的目錄是WxpayAPI_php_v3,你要進(jìn)入這個(gè)目錄后將所有文件選中,然后復(fù)制到你的項(xiàng)目目錄中去。在這個(gè)目錄中有一個(gè)index.php,那么到測(cè)試時(shí)候需要訪問(wèn) xxx.sinaapp.com/index.php。

3、將index.php中的標(biāo)簽的url地址改為你服務(wù)器上的url地址。

4、在你的微信中,隨便打開(kāi)一個(gè)對(duì)話窗口,輸入index.php地址,如xxx.sinaapp.com/index.php,然后在對(duì)話窗口中點(diǎn)擊這個(gè)鏈接。會(huì)出現(xiàn)幾個(gè)按鈕,點(diǎn)“JSAPI支付”的按鈕,即可彈出支付金額為1分錢的窗口,輸入收貨人,支付。即會(huì)彈出支付成功界面。
到這一步,說(shuō)明官方的支付代碼是基本可用的,接下來(lái),我們可以在它的基礎(chǔ)上修改成自己的代碼。

5、替換cert目錄下的apiclient_key.pem和apiclient_cert.pem成你自己的證書。

6、修改WxPay.Config.php中的以下幾項(xiàng)成你自己的:

const APPID                 //公眾號(hào)中“開(kāi)發(fā)者中心”看到的AppID
const MCHID                     //微信支付商戶資料審核成功郵件中的商戶號(hào)
const KEY                   //你在商戶平臺(tái)中設(shè)置的支付key
const APPSECRET             //公眾號(hào)中“開(kāi)發(fā)者中心”看到的AppSecret

7、因?yàn)槲覀兪褂昧藄ina的sae作為測(cè)試服務(wù)器,sae不允許直接寫文件io,因此可以將官網(wǎng)代碼中的文件操作進(jìn)行相應(yīng)的修改(使用SaeStorage)。也就是需要修改log.php中的CLogFileHandler類:

class CLogFileHandler implements ILogHandler
{
    private $fn=null;
    private $ss=null;
    public function construct($file = '')
 {
        $this->fn=str_replace("../logs/", "", $file);
        $this->ss=new SaeStorage();
    }
    public function write($msg)
 {
        $bytes = $this->ss->read('log', $this->fn);
        $str = $bytes;
        $this->ss->write('log', $this->fn, "$str\n$msg");
    }
    public function destruct()
 {
        $fn=null;
        $ss=null;
    }
}

8、如果出現(xiàn)簽名失敗的錯(cuò)誤,我們可以使用微信的支付接口調(diào)試工具來(lái)進(jìn)行測(cè)試:pay.weixin.qq.com/wiki/tools/signverify/。
這個(gè)工具是雖然是用于驗(yàn)證“被掃支付”的,但通過(guò)它的“增加參數(shù)”按鈕和“刪除參數(shù)”按鈕,我們也可以用它來(lái)測(cè)試“公眾號(hào)支付”。例如,如果你提交的xml內(nèi)容如下(可利用Log函數(shù)保存提交的xml內(nèi)容到sae storage,然后下載日志文件):

16666833333

則你可以中測(cè)試工具中這樣填寫表單:
微信開(kāi)發(fā)中如何實(shí)現(xiàn)微信支付
點(diǎn)擊“生成簽名”。將得到的簽名和日志文件中的簽名進(jìn)行比較,看是否一致,即可排除簽名算法的問(wèn)題。
如果2個(gè)簽名一致,則可以肯定是支付key的問(wèn)題。要么是產(chǎn)品MM搞錯(cuò)了,要么是AppSecret和支付key搞反了(有一次產(chǎn)品MM告訴了為一個(gè)錯(cuò)誤的支付key,浪費(fèi)了我3天的時(shí)間!我反復(fù)確認(rèn)了每一處代碼、每一次后臺(tái)參數(shù)設(shè)置之后,最終用“支付接口調(diào)試工具”確認(rèn)簽名無(wú)誤,問(wèn)題就出在支付key上。于是登入商戶平臺(tái),因?yàn)椴皇枪芾韱T,又跟產(chǎn)品MM要了手機(jī)驗(yàn)證碼,重新設(shè)置了支付key,代碼一下就通了)

感謝各位的閱讀!關(guān)于“微信開(kāi)發(fā)中如何實(shí)現(xiàn)微信支付”這篇文章就分享到這里了,希望以上內(nèi)容可以對(duì)大家有一定的幫助,讓大家可以學(xué)到更多知識(shí),如果覺(jué)得文章不錯(cuò),可以把它分享出去讓更多的人看到吧!


當(dāng)前文章:微信開(kāi)發(fā)中如何實(shí)現(xiàn)微信支付
文章來(lái)源:http://weahome.cn/article/pogpso.html

其他資訊

在線咨詢

微信咨詢

電話咨詢

028-86922220(工作日)

18980820575(7×24)

提交需求

返回頂部