久久久久久久av_日韩在线中文_看一级毛片视频_日本精品二区_成人深夜福利视频_武道仙尊动漫在线观看

PHP后臺微信支付和支付寶支付開發(fā)

這篇文章主要為大家詳細介紹了PHP后臺微信支付和支付寶支付開發(fā)的相關(guān)資料,具有一定的參考價值,感興趣的小伙伴們可以參考一下

關(guān)于支付的流程之類的就不做解釋,大家可以自行搜索!

微信支付

項目前提:本人用的是tp框架,PHP語言
下載到微信平臺提供的微信支付接口文件,放在了tp第三方類庫vendor,命名為WxpayAPI

PHP后臺微信支付和支付寶支付開發(fā)

WxpayAPI/lib/WxPay.Api.php 接口訪問類;
WxpayAPI/lib/WxPay.Config.php 配置賬號信息;
WxpayAPI/lib/WxPay.Data.php 數(shù)據(jù)對象基礎類;
WxpayAPI/lib/WxPay.Exception.php 微信支付API異常類;
WxpayAPI/lib/WxPay.Notify.php 回調(diào)基礎類
WxpayAPI/example/WxPay.JsApiPay.php JSAPI支付實現(xiàn)類

PHP后臺微信支付和支付寶支付開發(fā)

1.對源碼進行了部分修改

(1)WxPay.Api.php 里注釋掉
        //require_once "WxPay.Exception.php";
        //require_once "WxPay.Config.php";
        //require_once "WxPay.Data.php"; 

(2)WxPay.Config.php里
        需要根據(jù)商戶信息對APPID , MCHID ,KEY , APPSECRET 進行配置。 

(3)WxPay.Data.php 里注釋掉
        //require_once "WxPay.Config.php";
        //require_once "WxPay.Exception.php"; 

(4)WxPay.JsApiPay.php 里注釋掉
        //require_once "../lib/WxPay.Api.php";

配置好這些,接下來就是我們的重點部分了。

2.在訂單控制器GoodsController.class.php有訂單函數(shù)sure()和回調(diào)信息函數(shù) Callback_url()

/**
* 提交訂單函數(shù)
*/
public function sure() {
  $o_model = D("Wine/Orders");
 
  if (IS_AJAX) {
   $data = I("post.");
   if ($o_model->create($data)) {
 
    if (!sp_check_verify_code()) {
     $this->error("驗證碼錯誤!");
    }
 
    #生成隨機訂單號
    $order_code = 'O' . date('YmdHis') . $o_model->get_order_code(4);
    while ($o_model->findone(array("order_code" => $order_code))) {
     $order_code = 'O' . date('YmdHis') . $o_model->get_order_code(4);
    }
    $data['order_code'] = $order_code;
    $addr[0] = $_POST['prov'];
    $addr[1] = $_POST['city'];
    $addr[2] = $_POST['dist'];
    $addr[3] = $_POST['area'];
    $data['area'] = serialize($addr);
    $data['create_time'] = time();
    $data['update_time'] = time();
 
    if ($data['pay_id'] == 1) {
     $data['order_status'] = 11; //已付款
     $data['status'] = '1';
    } else {
     $data['order_status'] = 10; //待付款
     $data['status'] = '1';
    }
    //函數(shù)調(diào)用 返回信息
    $this->Callback_url($data);
   } else {
    $this->error($o_model->getError());
   }
  } else {
   $this->error($o_model->getError());
  }
 }
 
 /**
 * 回調(diào)信息函數(shù)
 * @param type $data
 */
 public function Callback_url($data) {
  $o_model = D("Wine/Orders");
  $add_id = $o_model->add($data);
  if (!$add_id) {
   $this->error("訂單提交失敗,請稍后重試!");
  }
  if ('4' == $data['pay_id']) {
   if ('4' == $data['pay_id']) {
   //微信支付
   $msg = '正在為您跳轉(zhuǎn)到微信支付頁面,請等待……';
   $url = "/index.php/wine/wxpay/index/?o_id=$add_id";
  }
  $this->success("訂單提交成功!" . $msg, $url);
 }

3.[重點!!!] WxpayController .class.php微信支付控制器,實現(xiàn)對微信接口的調(diào)用

<?php
 
/**
 * 微信支付接口調(diào)用
 */
 
namespace Wine\Controller;
 
use Common\Controller\HomebaseController;
 
class WxpayController extends HomebaseController {
 
 public function _initialize() {
  parent::_initialize();
 
  Vendor("WxpayAPI/example/log");//訂單數(shù)據(jù)寫入日志
  //注: 引入第三方類庫中的微信接口文件,對于文件名含有.的,皆用#代替連接才能引入,后綴名不寫。
  Vendor("WxpayAPI/example/WxPay#JsApiPay");
  Vendor("WxpayAPI/lib/WxPay#Config");
  Vendor("WxpayAPI/lib/WxPay#Data");
  Vendor("WxpayAPI/lib/WxPay#Exception");
  Vendor("WxpayAPI/lib/WxPay#Notify");
  Vendor("WxpayAPI/lib/WxPay#Api");
  //初始化日志
  $logHandler = new \CLogFileHandler("/projects/wine.huishuocs.com/data/pay_log/" . date('Y-m-d') . '.log');
  $log = \Log::Init($logHandler, 15);
  $this->model = D("Wine/Orders");
  $this->url = MODULE_NAME . '/' . CONTROLLER_NAME . '/index';
 }
 
 /**
  * 顯示支付頁面
  *
  */
 public function index() {
  // 判斷當前訂單是否被支付
  $orderid = I("get.o_id", 0, "intval");
  $orderid || $this->error("非法操作!");
  $this->assign('orderid',$orderid);
  $info = $this->model->findone(array("a.id" => $orderid, 'a.status' => array('neq', '-1')));
  $info || $this->error("暫未查詢到該訂單!");
  //10代表訂單待支付的狀態(tài)
  if ($info['order_status'] != 10) {
   $this->error("訂單已支付!");
  }
  //①、獲取用戶openid
  $tools = new \JsApiPay();
  $openId = $tools->GetOpenid(); #無法使用
  //初始化日志
  \Log::INFO('訂單' . var_export($info, true));
  $out_trade_no = \WxPayConfig::MCHID . date("YmdHis");
  $this->model->where(array("id" => $orderid))->save(array('out_trade_no' => $out_trade_no));
//  $openId ="123"; #無法使用
  //②、統(tǒng)一下單
  $input = new \WxPayUnifiedOrder();
  $input->SetBody($info['mode_name']);
  $input->SetAttach($orderid);
  $input->SetOut_trade_no($out_trade_no);
//  $input->SetTotal_fee($orderArr['total_price']*100);實際支付價格
  $input->SetTotal_fee($info['pay_price']*100); //測試時請將支付價格改為0.01,土豪請避開此注釋
  $this->assign('pay_price',$info['pay_price']);
  $input->SetTime_start(date("YmdHis"));
  $input->SetTime_expire(date("YmdHis", time() + 600));
//  $input->SetGoods_tag("test");# 優(yōu)惠券
  $input->SetNotify_url('http://' . $_SERVER['HTTP_HOST'] . "/index.php/Wine/Wxpay/callback"); //回調(diào)地址
  $input->SetTrade_type("JSAPI");
  $input->SetOpenid($openId);
  $order = \WxPayApi::unifiedOrder($input);
//  echo '<font color="#f00"><b>統(tǒng)一下單支付單信息</b></font><br/>';
//  $this->printf_info($order);//打印參數(shù)
    $this->assign('o_id',$orderid);
  $this->assign('jsApiParameters', $tools->GetJsApiParameters($order));
  //獲取共享收貨地址js函數(shù)參數(shù)
//  $this->assign('editAddress', $tools->GetEditAddressParameters());
  $this->display('wxpay');
  exit;
 }
 
 /**
  * 打印輸出數(shù)組信息
  * @param type $data
  */
 public function printf_info($data) {
  foreach ($data as $key => $value) {
   echo "<font color='#00ff55;'>$key</font> : $value <br/>";
  }
 }
 
 /* 支付成功回調(diào)函數(shù) */
 
 public function callback() {
  /* 返回給微信服務器 */
//  $mes = array(
//   'return_code' => 'SUCCESS',
//   'return_msg' => 'OK'
//  );
//  $this->ajaxReturn($mes, 'XML');
  $logHandler = new \CLogFileHandler("/projects/wine.huishuocs.com/data/pay_log/" . date('Y-m-d') . '.log');
  $log = \Log::Init($logHandler, 15);
  //$streamData = isset($GLOBALS['HTTP_RAW_POST_DATA']) ? $GLOBALS['HTTP_RAW_POST_DATA'] : '';
 
  $streamData = file_get_contents('php://input');
  if ($streamData != '') {
   $arr = $this->xmlToArray($streamData);
   \Log::INFO('支付' . var_export($arr, true));
  } else {
   $ret = false;
  }
  // 回調(diào)值
  if (!empty($arr)) {
   # 數(shù)據(jù)
    \Log::INFO('數(shù)據(jù)1' . var_export($arr, true));
   #修改訂單狀態(tài)
   $out_trade_no = $arr['out_trade_no'];
   $newArr = array('order_status' => 11,'status'=>1);
   $this->model->where(array("out_trade_no" => $out_trade_no))->save($newArr);
   $info = $this->model->findone(array("a.out_trade_no" => $out_trade_no, 'a.status' => array('neq', '-1')));
   $sql = $this->model->getLastSql();
   \Log::INFO('數(shù)據(jù)2' . $sql);
   #添加支付記錄pay
   $pay = array(
    'payment_code' => 'wxpay',
    'trade_no'=>$info['order_code'],
    'out_trade_no'=>$out_trade_no,
    'order_id'=>$info['id'],
    'create_time'=>time()
   );
   M('payment_record')->add($pay);   
  }
 
  /* 返回給微信服務器 */
  $mes = array(
   'return_code' => 'SUCCESS',
   'return_msg' => 'OK'
  );
  $this->ajaxReturn($mes, 'XML');
 }
 
 //將XML轉(zhuǎn)為array
 public function xmlToArray($xml) {
  //禁止引用外部xml實體
  libxml_disable_entity_loader(true);
  $values = json_decode(json_encode(simplexml_load_string($xml, 'SimpleXMLElement', LIBXML_NOCDATA)), true);
  return $values;
 }
 
}
 
?>
【網(wǎng)站聲明】本站除付費源碼經(jīng)過測試外,其他素材未做測試,不保證完整性,網(wǎng)站上部分源碼僅限學習交流,請勿用于商業(yè)用途。如損害你的權(quán)益請聯(lián)系客服QQ:2655101040 給予處理,謝謝支持。

相關(guān)文檔推薦

這篇文章主要介紹了PHP有序表查找之插值查找算法,簡單分析了插值查找算法的概念、原理并結(jié)合實例形式分析了php實現(xiàn)針對有序表插值查找的相關(guān)操作技巧,需要的朋友可以參考下
下面小編就為大家分享一篇ThinkPHP整合datatables實現(xiàn)服務端分頁的示例代碼,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
下面小編就為大家分享一篇PHP實現(xiàn)APP微信支付的實例講解,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
這篇文章主要介紹了PHP實現(xiàn)的多維數(shù)組排序算法,結(jié)合實例形式對比分析了php針對多維數(shù)組及帶有鍵名的多維數(shù)組進行排序相關(guān)操作技巧與注意事項,需要的朋友可以參考下
這篇文章主要為大家詳細介紹了php結(jié)合ajaxuploadfile實現(xiàn)無刷新文件上傳功能,具有一定的參考價值,感興趣的小伙伴們可以參考一下
本篇文章給大家詳細介紹了PHP開發(fā)接口使用RSA進行加密解密方法,對此有興趣的朋友可以學習下。
主站蜘蛛池模板: 日韩成人av在线 | 久久精品 | 淫片一级国产 | 99精品国产一区二区三区 | 欧美一区二区三区在线观看 | 一级片av| 亚洲精品无 | 久久成人亚洲 | 欧美高清视频一区 | 丝袜一区二区三区 | 一区二区三区福利视频 | 久青草影院 | 羞羞视频在线观免费观看 | 亚洲毛片在线 | 99久久精品国产一区二区三区 | 亚洲综合三区 | 丝袜美腿一区 | 欧美 日本 国产 | 国产一区亚洲二区三区 | 免费在线成人 | 久久国产日韩欧美 | 国产精品区二区三区日本 | 亚洲一区中文字幕 | 久久免费精品视频 | 欧美日韩国产一区二区三区 | 久久国| 日韩不卡一区二区 | 五月婷婷婷 | 夜夜夜夜夜夜曰天天天 | 中文字幕 欧美 日韩 | 欧美一区二区三区视频 | 亚洲三区在线观看 | 亚洲国产高清高潮精品美女 | 黄色高清视频 | 色综网| 国产精品视频网 | 色狠狠一区 | 国产激情毛片 | 久久91 | 免费在线观看成人av | 国产精品一区二区av |