【移動應(yīng)用開發(fā)技術(shù)】Thinkphp中怎么實現(xiàn)一個微信公眾號支付接口_第1頁
【移動應(yīng)用開發(fā)技術(shù)】Thinkphp中怎么實現(xiàn)一個微信公眾號支付接口_第2頁
【移動應(yīng)用開發(fā)技術(shù)】Thinkphp中怎么實現(xiàn)一個微信公眾號支付接口_第3頁
【移動應(yīng)用開發(fā)技術(shù)】Thinkphp中怎么實現(xiàn)一個微信公眾號支付接口_第4頁
【移動應(yīng)用開發(fā)技術(shù)】Thinkphp中怎么實現(xiàn)一個微信公眾號支付接口_第5頁
已閱讀5頁,還剩4頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)

文檔簡介

【移動應(yīng)用開發(fā)技術(shù)】Thinkphp中怎么實現(xiàn)一個微信公眾號支付接口

<!DOCTYPE

html>

<html>

<head>

<meta

http-equiv="Content-Type"

content="text/html;

charset=utf-8"

/>

<meta

name='viewport'

content='width=device-width,

initial-scale=1.0,

maximum-scale=1.0,

minimum-scale=1.0'/>

<title>微信安全支付</title>

<script

type="text/javascript">

//調(diào)用微信JS

api

支付

function

jsApiCall()

{

WeixinJSBridge.invoke(

'getBrandWCPayRequest',

<?php

echo

$jsApiParameters;

?>,

function(res){

WeixinJSBridge.log(res.err_msg);

if(res.err_msg

==

"get_brand_wcpay_request:ok"){

//alert(res.err_code+res.err_desc+res.err_msg);

/*這里寫如果支付成功的話執(zhí)行什么操作*/

}else{

//返回跳轉(zhuǎn)到訂單詳情頁面

alert(支付失敗);

}

}

);

}

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();

}

}

</script>

</head>

<body>

<button

style="width:210px;

height:30px;

background-color:#FE6714;

border:0px

#FE6714

solid;

cursor:

pointer;

color:white;

font-size:16px;"

type="button"

onclick="jsApiCall()"

id="asd"

>購買</button>

</div>

</body>

</html><?php

namespace

Home\Controller;

use

Think\Controller;

class

WxJsAPIController

extends

Controller{

public

function

_initialize()

{

//引入WxPayPubHelper

vendor('Weixinpay.WxPayPubHelper');

}

public

function

jsApiCall()

{

//使用jsapi接口

$jsApi

=

new

\JsApi_pub();

//=========步驟1:網(wǎng)頁授權(quán)獲取用戶openid============

//通過code獲得openid

//

//

if

(!isset($_GET['code']))

{

//觸發(fā)微信返回code碼

$rUrl=urlencode(C('WxConfig.JS_API_CALL_URL').'/id/'.$_GET[id]);

/*注意一下這個

id

是為了可以成功的傳個

id值才這樣寫

如果你不需要的話也可以直接寫成

$rUrl=urlencode(C('WxConfig.JS_API_CALL_URL'));

$this->redirect('WxJsAPI/jsApiCall',array('id'

=>55),0,

'頁面跳轉(zhuǎn)中...');

我是這樣穿這個id過來的值得你們也可以自己改成其他的來傳這個id

或是刪除他不要

*/

$url

=

$jsApi->createOauthUrlForCode($rUrl);

//

echo

$url;exit();

Header("Location:

$url");

}else

{

//獲取code碼,以獲取openid

$code

=

$_GET['code'];

$jsApi->setCode($code);

$openid

=

$jsApi->getOpenId();//openid

這里是為了獲取用戶當(dāng)前的openid

如果你有做微信登陸的話就可以無視他。

}

//=========步驟2:使用統(tǒng)一支付接口,獲取prepay_id============

//使用統(tǒng)一支付接口

$unifiedOrder

=

new

\UnifiedOrder_pub();

/*此處做數(shù)據(jù)庫的查詢

這里操作數(shù)據(jù)庫把產(chǎn)品信息顯示出來*/

/*此處做數(shù)據(jù)庫的查詢

這里操作數(shù)據(jù)庫把產(chǎn)品信息顯示出來*/

//設(shè)置統(tǒng)一支付接口參數(shù)

//設(shè)置必填參數(shù)

//appid已填,商戶無需重復(fù)填寫

//mch_id已填,商戶無需重復(fù)填寫

//noncestr已填,商戶無需重復(fù)填寫

//spbill_create_ip已填,商戶無需重復(fù)填寫

//sign已填,商戶無需重復(fù)填寫

//

$NOTIFY_URL="你的域名/index.php/Home/WxJsAPI/notify";

$unifiedOrder->setParameter("openid",$openid);//openid

$unifiedOrder->setParameter("body",'商品的名字');//商品描述

$unifiedOrder->setParameter("out_trade_no",'123456789');//商戶訂單號

$unifiedOrder->setParameter("total_fee",1*100);//總金額

微信的錢1*100等于1

$unifiedOrder->setParameter("notify_url",$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;exit();

//=========步驟3:使用jsapi調(diào)起支付============

$jsApi->setPrepayId($prepay_id);

$jsApiParameters

=

$jsApi->getParameters();

$WEB_HOST='你的域名';//填寫的話

最后面不用加

/

$this->assign('HOSTS',$WEB_HOST);

$this->assign('jsApiParameters',$jsApiParameters);

$this->display();

//echo

$jsApiParameters;

}

public

function

notify()

{

//使用通用通知接口

$notify

=

new

\Notify_pub();

//存儲微信的回調(diào)

$xml

=

$GLOBALS['HTTP_RAW_POST_DATA'];

$notify->saveData($xml);

//驗證簽名,并回應(yīng)微信。

//對后臺通知交互時,如果微信收到商戶的應(yīng)答不是成功或超時,微信認為通知失敗,

//微信會通過一定的策略(如30分鐘共8次)定期重新發(fā)起通知,

//盡可能提高通知的成功率,但微信不保證通知最終能成功。

if($notify->checkSign()

==

FALSE){

$notify->setReturnParameter("return_code","FAIL");//返回狀態(tài)碼

$notify->setReturnParameter("return_msg","簽名失敗了啊");//返回信息

}else{

$notify->setReturnParameter("return_code","SUCCESS");//設(shè)置返回碼

}

$returnXml

=

$notify->returnXml();

echo

$returnXml;

//==商戶根據(jù)實際情況設(shè)置相應(yīng)的處理流程,此處僅作舉例=======

//以log文件形式記錄回調(diào)信息

//

$log_

=

new

Log_();

$log_name=

__ROOT__."/Public/notify_url.log";//log文件路徑

if($notify->checkSign()

==

TRUE)

{

if

($notify->data["return_code"]

==

"FAIL")

{

//此處應(yīng)該更新一下訂單狀態(tài),商戶自行增刪操作

log_result($log_name,"【通信出錯】:\n".$xml."\n");

}

elseif($notify->data["result_code"]

==

"FAIL"){

//此處應(yīng)該更新一下訂單狀態(tài),商戶自行增刪操作

log_result($log_name,"【業(yè)務(wù)出錯】:\n".$xml."\n");

}

else{

/*查看支付成功的返回值請去

/wiki/doc/api/jsapi.php?chapt

溫馨提示

  • 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)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論