Thinkphp 위 챗 공중 번호 지불 인터페이스
첫걸음 도 메 인 이름 을 제외 하고 폴 더 의 두 그림 을 같은 경로 로 설정 합 니 다.
두 번 째 단계 Weixinpay 이 폴 더 를\ThinkpHP\Library\Vendor 에 두 십시오. 이 Vendor 폴 더 에 Weixinpay 폴 더 를 저장 합 니 다.
세 번 째 단계 손잡이 WxJSAPIController.class.php 이 php 파일 \Home\Controller 이 안
네 번 째 단계 WxJSAPI 라 는 폴 더 를 놓다 이 안
다섯 번 째 단 계 는 위 챗 공중 번호 지불 기능 을 성공 적 으로 호출 하 였 다.
jsApiCall.html
<!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">
// 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);
/* */
}else{
//
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>
WxJsAPIController.class.php
<?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: openid============
// code openid
//
//
if (!isset($_GET['code']))
{
// 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, ' ...');
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 openid 。
}
//========= 2: , prepay_id============
//
$unifiedOrder = new \UnifiedOrder_pub();
/* */
/* */
//
//
//appid ,
//mch_id ,
//noncestr ,
//spbill_create_ip ,
//sign ,
//
$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");//
// ,
//$unifiedOrder->setParameter("sub_mch_id","XXXX");//
//$unifiedOrder->setParameter("device_info","XXXX");//
//$unifiedOrder->setParameter("attach","XXXX");//
//$unifiedOrder->setParameter("time_start","XXXX");//
//$unifiedOrder->setParameter("time_expire","XXXX");//
//$unifiedOrder->setParameter("goods_tag","XXXX");//
//$unifiedOrder->setParameter("openid","XXXX");//
//$unifiedOrder->setParameter("product_id","XXXX");// ID
$prepay_id = $unifiedOrder->getPrepayId();
// echo $prepay_id;exit();
//========= 3: jsapi ============
$jsApi->setPrepayId($prepay_id);
$jsApiParameters = $jsApi->getParameters();
$WEB_HOST=' ';// http://nicaicai.imwork.net /
$this->assign('HOSTS',$WEB_HOST);
$this->assign('jsApiParameters',$jsApiParameters);
$this->display();
//echo $jsApiParameters;
}
public function notify()
{
//
$notify = new \Notify_pub();
//
$xml = $GLOBALS['HTTP_RAW_POST_DATA'];
$notify->saveData($xml);
// , 。
// , , ,
// ( 30 8 ) ,
// , 。
if($notify->checkSign() == FALSE){
$notify->setReturnParameter("return_code","FAIL");//
$notify->setReturnParameter("return_msg"," ");//
}else{
$notify->setReturnParameter("return_code","SUCCESS");//
}
$returnXml = $notify->returnXml();
echo $returnXml;
//== , =======
// log
// $log_ = new Log_();
$log_name= __ROOT__."/Public/notify_url.log";//log
if($notify->checkSign() == TRUE)
{
if ($notify->data["return_code"] == "FAIL") {
// ,
log_result($log_name,"【 】:
".$xml."
");
}
elseif($notify->data["result_code"] == "FAIL"){
// ,
log_result($log_name,"【 】:
".$xml."
");
}
else{
/* https://pay.weixin.qq.com/wiki/doc/api/jsapi.php?chapter=9_1 */
$xmlss=$notify->data["out_trade_no"];//
$total_fee=$notify->data['total_fee'];// , ,
/* */
/* */
// ,
log_result($log_name,"【 】:
".$xml."
");
}
// ,
// :
// :
// :
}
}
// log
public function log_result($file,$word)
{
$fp = fopen($file,"a");
flock($fp, LOCK_EX) ;
fwrite($fp," :".strftime("%Y-%m-%d-%H:%M:%S",time())."
".$word."
");
flock($fp, LOCK_UN);
fclose($fp);
}
}
?>
원본 다운로드:http://xiazai.jb51.net/201608/yuanma/Thinkphpwenxinport(jb51.net).rar이상 이 바로 본 고의 모든 내용 입 니 다.여러분 의 학습 에 도움 이 되 고 저 희 를 많이 응원 해 주 셨 으 면 좋 겠 습 니 다.
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
Thinkphp의 S 캐시 사용법!텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.