好湿?好紧?好多水好爽自慰,久久久噜久噜久久综合,成人做爰A片免费看黄冈,机机对机机30分钟无遮挡

主頁 > 知識庫 > PHP實現(xiàn)的微信APP支付功能示例【基于TP5框架】

PHP實現(xiàn)的微信APP支付功能示例【基于TP5框架】

熱門標(biāo)簽:辦理重慶400電話 聊城電話外呼系統(tǒng)公司 AI電話機(jī)器人OEM貼牌 德陽中江如何申請400開頭電話 沛縣400電話辦理 銅川電話機(jī)器人價格 智能電話機(jī)器人好公司門薩維 江蘇電商外呼系統(tǒng)運(yùn)營商 青白江地圖標(biāo)注

本文實例講述了PHP實現(xiàn)的微信APP支付功能。分享給大家供大家參考,具體如下:

1.進(jìn)行支付請求 他給的DEMO 用的時候有時候會報錯

1)我遇到的情況 把  WxPay.Api.php這個文件的 postXmlCurl 這個 方法里

//   curl_setopt($ch,CURLOPT_SSL_VERIFYPEER,TRUE);
//  curl_setopt($ch,CURLOPT_SSL_VERIFYHOST,2);//嚴(yán)格校驗
curl_setopt($ch,CURLOPT_SSL_VERIFYPEER,FALSE);
curl_setopt($ch,CURLOPT_SSL_VERIFYHOST,FALSE);

這兩行的嚴(yán)格驗證給注掉

2)有時候還會報終端IP錯誤  我的修改方案是 要么寫死 要么注掉 他不是必填參數(shù)

3)有時候還會報寫入 日志文件 包含錯誤  把他的相對路徑改成絕對路徑就好了

4)以下就是APP請求參數(shù)

require_once "./payment/wxpay/php/lib/WxPay.Api.php";
require_once "./payment/wxpay/php/example/WxPay.NativePay.php";
$notify = new \NativePay();
$input = new \WxPayUnifiedOrder();
$input->SetBody("購買訂單");
$input->SetOut_trade_no($order_data['order_number']);
$input->SetTotal_fee($zongMoney*100);
$input->SetNonce_str($this->createNoncestr());
$input->SetNotify_url(config('u_wx_notify_url'));
$input->SetTrade_type('APP');
$input->SetProduct_id(rand(10000,99999));
$result = $notify->GetPayUrl($input);
//我還遇到了 $result 返回值為空 也不報錯
// 然后我發(fā)現(xiàn)是因為我用的請求方法為 GetPayUrl()
// 這個方法是掃碼支付請求的方法 方法里有個判斷
$input->GetTrade_type() == "NATIVE"
//這個NATIVE 是掃碼支付的類型
// 我就在這個方法里的if判斷又加了一個if判斷
$input->GetTrade_type() == "APP"
//如果他等于APP的時候就讓他再次發(fā)下請求 這樣就可以得到參數(shù)了
$prepay_id = $result["prepay_id"];
//他所范圍的參數(shù)最重要的為 prepay_id 需要再進(jìn)行參數(shù)加密 進(jìn)入 getOrder()進(jìn)行加密
$response = $this->getOrder($prepay_id);
// correctStatus 此函數(shù)是我自定義的 跟APP對接的 json 數(shù)據(jù) 根據(jù)自己的實際情況 定義
$json = correctStatus($response);
//最后輸出給 APP 就好了
echo $json;

//執(zhí)行第二次簽名,才能返回給客戶端使用
public function getOrder($prepayId){
  $pay=\think\Db::name('pay_type')->where(['pay_id'=>2])->field('pay_json')->find();
  $wx=json_decode($pay['pay_json'],true);
  $data["appid"] = $wx['web_appid'];
  //createNoncestr 獲取隨機(jī)字符串 他寫的demo里有方法 不過你也可以自定義
  $data["noncestr"] = $this->createNoncestr();
  $data["package"] = "Sign=WXPay";
  $data["partnerid"] = $wx['web_mch_id'];
  $data["prepayid"] = $prepayId;
  $data["timestamp"] = time();
  // 加密方法 getSign() 同樣的 在他的demo 里也有方法  這些方法都再 WxPay.Data.php 這個文件里
  $s = $this->getSign($data,$wx['web_key']);
  $data["sign"] = $s;
  return $data;
}

//那些 appid key 什么的參數(shù)配置 我是直接在他的 WxPay.Config.php這個文件里寫了個構(gòu)造方法 直接賦值
private $appid;
private $mch_id;
private $key;
private $appsecret;
public function __construct()
{
    $pay=\think\Db::name('pay_type')->where(['pay_id'=>2])->field('pay_json')->find();
    $wx=json_decode($pay['pay_json'],true);
    $this->appid=$wx['web_appid'];
    $this->mch_id=$wx['web_mch_id'];
    $this->key=$wx['web_key'];
    $this->appsecret=$wx['web_appsecret'];
}

2.微信回調(diào)地址的處理

//因為我 在WxPay.Config.php文件里已經(jīng)賦值給了 appid 所以 這邊 new 一下 就會獲取所有的配置參數(shù)
require_once "./payment/wxpay/php/lib/WxPay.Api.php";
require_once './payment/wxpay/php/lib/WxPay.Notify.php';
require_once './payment/wxpay/php/lib/WxPay.Data.php';
require_once "./payment/wxpay/php/example/WxPay.Config.php";
$config = new \WxPayConfig();
$notify = new \WxPayNotify();
$notify->Handle($config, false);
//存儲微信的回調(diào)
$objData = $GLOBALS['HTTP_RAW_POST_DATA'];
//自定義日志 函數(shù)
log_result("【接收到的notify通知】:\n".$objData."\n");
$data=\WxPayResults::Init($config,$objData);
// $data = $objData->GetValues();
//TODO 1、進(jìn)行參數(shù)校驗
if(!array_key_exists("return_code", $data) || (array_key_exists("return_code", $data)  $data['return_code'] != "SUCCESS")) {
   //TODO失敗,不是支付成功的通知
   //如果有需要可以做失敗時候的一些清理處理,并且做一些監(jiān)控
   $msg = "異常異常";
   log_result("【接收到的notify通知】:\n".$msg."\n");
   return false;
}
if(!array_key_exists("transaction_id", $data)){
   $msg = "輸入?yún)?shù)不正確";
   log_result("【接收到的notify通知】:\n".$msg."\n");
   return false;
}
//這里可以多一步 參數(shù) 具體情況 自己定
//TODO 2、處理業(yè)務(wù)邏輯

以下就可以寫 業(yè)余邏輯了

更多關(guān)于thinkPHP相關(guān)內(nèi)容感興趣的讀者可查看本站專題:《ThinkPHP入門教程》、《thinkPHP模板操作技巧總結(jié)》、《ThinkPHP常用方法總結(jié)》、《codeigniter入門教程》、《CI(CodeIgniter)框架進(jìn)階教程》、《Zend FrameWork框架入門教程》及《PHP模板技術(shù)總結(jié)》。

希望本文所述對大家基于ThinkPHP框架的PHP程序設(shè)計有所幫助。

您可能感興趣的文章:
  • php寫app用的框架整理

標(biāo)簽:濟(jì)寧 三亞 南寧 鷹潭 山南 烏魯木齊 迪慶 赤峰

巨人網(wǎng)絡(luò)通訊聲明:本文標(biāo)題《PHP實現(xiàn)的微信APP支付功能示例【基于TP5框架】》,本文關(guān)鍵詞  PHP,實現(xiàn),的,微信,APP,支付,;如發(fā)現(xiàn)本文內(nèi)容存在版權(quán)問題,煩請?zhí)峁┫嚓P(guān)信息告之我們,我們將及時溝通與處理。本站內(nèi)容系統(tǒng)采集于網(wǎng)絡(luò),涉及言論、版權(quán)與本站無關(guān)。
  • 相關(guān)文章
  • 下面列出與本文章《PHP實現(xiàn)的微信APP支付功能示例【基于TP5框架】》相關(guān)的同類信息!
  • 本頁收集關(guān)于PHP實現(xiàn)的微信APP支付功能示例【基于TP5框架】的相關(guān)信息資訊供網(wǎng)民參考!
  • 推薦文章
    主站蜘蛛池模板: 91制片厂制作传媒在现观看| 欧美电影一区| 久久人妻人人爽日韩一二三区| 美女被狂揉下部?羞羞动漫网站| 一级做ae视频直播需要什么软件| 人人爽人人爽人人| 免费观看全黄做爰视频| 免费精品久久久久久久一区二区| 法国夫妇野外交换hd中文电影| 扒下女人内裤猛进猛出色情| 多强被?c到爽??H漫画| 夜色www国产精品资源站| 国内91视频| 大荫蒂女人毛多泰国| 插几下就射| 英语老师的小兔子又白又软| 我们天上见在线播放| 久久精品亚洲AV无码一区二区三区 | GOGOGO在线观看日本| 手机看片169| 双腿吊起揉捏花蒂调教h| JIZZJIZZ日本高潮喷水| 日本美国群交P片内射捆绑| 美女一级特黄大片| 拍av女演员自述高潮经历| 欧美aa级片| 艳母视频在线观看| 超碰97国产公开| 中文人妻无码久久| 免费女上男下XX00XX00视频| 超踫视频97人人视频费免费| 亚欧另类| 午夜免费小视频| 男女XXOO无遮挡动态图| 精品人妻无码一区二区三区百度| 中国女人一级特黄大片第五集| 中国china武警gay军人| 高青县| 极品97尤物被啪到呻吟喷水| 杨幂喷水一区二区三区| 12—14女人做爰免费视频|