1. 程式人生 > >thinkphp支付寶手機支付流程提示

thinkphp支付寶手機支付流程提示

  
 
     //統一下單
     public  function  pay(){
       if($_GET['gid']!=''){
             vendor('Ali.wappay.buildermodel.AlipayTradeWapPayContentBuilder');
             vendor('Ali.wappay.service.AlipayTradeService');
               $payRequestBuilder = new \AlipayTradeWapPayContentBuilder();
                   $config=C('config');
                    //找出對應商品資訊
                   $data=M('drink_shop_goods')->where(array('id'=>$_GET['gid'],'mac_id'=>$_SESSION['mac_id']))->find();
                   $machine=M('drink_machine')->where(array('init_code'=>$_SESSION['mac_id']))->find();
                   if(!$machine){
                      return;
                   }
                    //商戶訂單號,商戶網站訂單系統中唯一訂單號,必填
                    $out_trade_no=date('Ymd').rand(1000,9999).substr(implode(NULL, array_map('ord', str_split(substr(uniqid(), 5, 13), 1))), 4, 12);
                    //訂單名稱,必填
                    $subject='凹凸幫';
                    //付款金額,必填
                   //$total_amount='0.01';
                     $total_amount=$data['shop_good_price'];
                    //商品描述,可空
                    $body='凹凸幫情趣用品';
                    //新增資料庫
                     $map['out_trade_no']=$out_trade_no;
                     $map['shop_good_name']=$data['shop_good_name'];
                     $map['shop_good_price']=$data['shop_good_price'];
                     $map['create_time']=time();
                     $map['init_price']=$data['init_price'];
                     $map['pay_way']='支付寶';
                     $map['box']=$data['box'];
                     $map['mac_id']=$data['mac_id'];
                     $map['owner']=$machine['owner'];
                     $map['fxs_name']= $machine['owner'];
                     $oid=M('drink_sold_goods')->add($map);
                    //超時時間
                    $timeout_express="1m";
                    $return_url="http://syatb.veiding.com/home/alipay/return_url";
                    $notify_url="http://syatb.veiding.com/home/alipay/notify_url";
                    $payRequestBuilder = new \AlipayTradeWapPayContentBuilder();
                    $payRequestBuilder->setBody($body);
                    $payRequestBuilder->setSubject($subject);
                    $payRequestBuilder->setOutTradeNo($out_trade_no);
                    $payRequestBuilder->setTotalAmount($total_amount);
                    $payRequestBuilder->setTimeExpress($timeout_express);
                    $payResponse = new \AlipayTradeService($config);
                    $result=$payResponse->wapPay($payRequestBuilder,$return_url,$notify_url);
                    return ;
          }
       }
          //支付寶頁面跳轉同步通知頁面
             public  function  return_url(){
                  vendor('Ali.wappay.service.AlipayTradeService');
                  $config=C('config');
                  $arr=$_GET;
                  $alipaySevice = new \AlipayTradeService($config); 
                  $result = $alipaySevice->check($arr);
                  //file_put_contents('./ali_check.txt',var_export($_GET,true));
                  /* 實際驗證過程建議商戶新增以下校驗。
                  1、商戶需要驗證該通知資料中的out_trade_no是否為商戶系統中建立的訂單號,
                  2、判斷total_amount是否確實為該訂單的實際金額(即商戶訂單建立時的金額),
                  3、校驗通知中的seller_id(或者seller_email) 是否為out_trade_no這筆單據的對應的操作方(有的時候,一個商戶可能有多個seller_id/seller_email)
                  4、驗證app_id是否為該商戶本身。
                  */
                  if($result) {//驗證成功
                      
                      //請在這裡加上商戶的業務邏輯程式程式碼


                      //——請根據您的業務邏輯來編寫程式(以下程式碼僅作參考)——
                      //獲取支付寶的通知返回引數,可參考技術文件中頁面跳轉同步通知引數列表
                      $url="http://syatb.veiding.com/home/test/new_index?mac_id=".$_SESSION['mac_id'];
                      header("Location:".$url); 




                      //商戶訂單號


                      //$out_trade_no = htmlspecialchars($_GET['out_trade_no']);


                      //支付寶交易號


                     // $trade_no = htmlspecialchars($_GET['trade_no']);


                      //echo "驗證成功<br />外部訂單號:".$out_trade_no;


                      //——請根據您的業務邏輯來編寫程式(以上程式碼僅作參考)——


                      /////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
                  }else {
                      //驗證失敗
                      echo "驗證失敗";
                  }
            }
  
         //支付寶伺服器非同步通知頁面
       
         public  function  notify_url(){
              vendor('Ali.wappay.service.AlipayTradeService');
                 $config=C('config');
                $arr=$_POST;
                $alipaySevice = new \AlipayTradeService($config); 
                //$alipaySevice->writeLog(var_export($_POST,true));
                $result = $alipaySevice->check($arr);
                
           
                /* 實際驗證過程建議商戶新增以下校驗。
                1、商戶需要驗證該通知資料中的out_trade_no是否為商戶系統中建立的訂單號,
                2、判斷total_amount是否確實為該訂單的實際金額(即商戶訂單建立時的金額),
                3、校驗通知中的seller_id(或者seller_email) 是否為out_trade_no這筆單據的對應的操作方(有的時候,一個商戶可能有多個seller_id/seller_email)
                4、驗證app_id是否為該商戶本身。
                */
                if($result) {//驗證成功
                    /////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
                    //請在這裡加上商戶的業務邏輯程式代
                        


                    //——請根據您的業務邏輯來編寫程式(以下程式碼僅作參考)——


                    //獲取支付寶的通知返回引數,可參考技術文件中伺服器非同步通知引數列表
                    if($_POST['trade_status'] == 'TRADE_SUCCESS'){
                    //商戶訂單號
                         $out_trade_no = $_POST['out_trade_no'];
                       if($res=M('drink_sold_goods')->where(array('out_trade_no'=>$out_trade_no))->find()){
                           if($res['shop_good_price']==$_POST['invoice_amount'] && $_POST['seller_email']=='
[email protected]
'){ //修改訂單狀態 M('drink_sold_goods')->where(array('out_trade_no'=>$out_trade_no))->save(array('sold_status'=>'已支付','noncestr'=>$_POST['notify_id'])); //查詢機臺 $machine=M('drink_machine')->where(array('init_code'=>$res['mac_id']))->field('client_id')->find(); //傳送出貨指令 $url="http://syatb.veiding.com/Alisend.php?client_id=".$machine['client_id']."&box=".$res['box']."&oid=".$res['id']."&noncestr=".$_POST['notify_id']; $yap=$this->http_get($url); } } } echo "success"; //請不要修改或刪除 }else { //驗證失敗 echo "fail"; //請不要修改或刪除 } } //退款 public function order_refund(){ if($_GET['oid']!==''){ vendor('Ali.wappay.service.AlipayTradeService'); vendor('Ali.wappay.buildermodel.AlipayTradeRefundContentBuilder.php'); $config=C('config'); //商戶訂單號和支付寶交易號不能同時為空。 trade_no、 out_trade_no如果同時存在優先取trade_no $res=M('drink_sold_goods')->where(array('id'=>$_GET['oid']))->find(); //商戶訂單號,和支付寶交易號二選一 $out_trade_no = $res['out_trade_no']; //退款金額,不能大於訂單總金額 $refund_amount=$res['shop_good_price']; //退款的原因說明 $refund_reason='出貨失敗'; //標識一次退款請求,同一筆交易多次退款需要保證唯一,如需部分退款,則此引數必傳。 $out_request_no=date('YmdHis'); $RequestBuilder = new \AlipayTradeRefundContentBuilder(); //$RequestBuilder->setTradeNo($trade_no); $RequestBuilder->setOutTradeNo($out_trade_no); $RequestBuilder->setRefundAmount($refund_amount); $RequestBuilder->setRefundReason($refund_reason); $RequestBuilder->setOutRequestNo($out_request_no); $Response = new \AlipayTradeService($config); $result=$Response->Refund($RequestBuilder); file_put_contents('alirefund.txt',$result); } }


相關推薦

thinkphp支付手機支付流程提示

//統一下單 public function pay(){ if($_GET['gid']!=''){ vendor('Ali.wappay.buildermodel.AlipayTradeWapPa

新版支付手機支付流程_C#版

需要的Dll AopSdk.dll  在官方SDK中下載。 private static string APPID = "2017060507xxxxx";  //應用ID private static string ALI_Public_key = "xxxxxx

PHP.支付手機支付介面錯誤 ALI14

  最近在做一個php網站的 支付寶手機端支付時,遇到一個很奇怪的問題。手機支付時 一直顯示 “訂單處理失敗,請稍後再試(ALI14)”。 然後也確認支付介面相關的檔案也沒什麼問題。然後在網上搜索 也搜不出什麼結果。無奈 只能自己一點一點的除錯了。 首先從 支付寶跳轉的連

[支付]手機網站支付快速接入

tps alt wke mba resp pan 新版 字符 手機網站支付 參考開發文檔:https://doc.open.alipay.com/docs/doc.htm?spm=a219a.7629140.0.0.FjX7f6&treeId=193&art

支付接口開發提示錯誤代碼 invalid-signature 錯誤原因: 無效簽名

訂單號 簽名 開發 無效 通過 發現 sub 金額 支付寶 今天做支付寶接口開發,參照官方的實例代碼,但是一直提示報錯:錯誤代碼 invalid-signature 錯誤原因: 無效簽名 而官方的例子卻不報錯,經過反復的測試發現,是因為官方代碼裏參數是通過POST賦值的

快速申請支付小程序流程

管理 lan color com get 工具 att 協議 width 2017年9月21日,支付寶小程序正式上線,那麽如何快速申請支付寶小程序?附上流程 準備工具: 1.支付寶賬號 2.螞蟻金服|開放平臺 步驟: 一、支付寶賬號登錄螞蟻金服|開放平臺 使用企業支

第二次作業:支付手機軟件分析

預算 預約 有用 獲取 探索 搭建 spa 懸浮 流程   支付寶手機軟件分析 一、產品相關信息介紹   Q:你選擇的產品是?   A:在本次作業中,我選擇進行分析的產品是支付寶(Alipay)手機軟件(IOS版本)。   Q:為什麽選擇該產品作為分析?   A:在日常生活

支付app支付java後臺流程及原理分析

system 分析 req eterm 格式 prop 通過 false 由於 java版支付寶app支付流程及原理分析   本實例是基於springmvc框架編寫 一、流程步驟 1.執行流程 當手機端app(就是你公司開發的a

tp3.2 支付手機網站支付

amount state gif 驗證 實名認證 郵件 方法 view 手機網頁 手機網站支付接口,支付寶官方文檔:https://b.alipay.com/signing/productSet.htm?navKey=all 第一步: 1)登陸支付寶企業賬號 進入支付

PHP支付手機網站支付功能

ima 商戶 處理 nbsp 接口 公網 appid 開發者平臺 php5 1.開通支付寶商家中心裏面的手機網站支付 2.再去開放平臺-開發者中心-創建移動支付的應用-獲取到APPID 3.接著去文檔中心下載DEMO 其實demo很簡單。如果第一次看的話會存在看

支付APP支付——支付流程說明及示例

轉自:https://blog.csdn.net/flygoa/article/details/54891473   支付寶APP支付——支付流程說明及示例 官方示例圖 螞蟻金服開放平臺文件:地址 官方流程圖:地址 如圖,以Android平臺為例: 第4步:呼叫支付介

支付手機網站支付

支付寶手機網址支付是移動端一個必不可少的功能。支付寶支付的文件還是很清楚的,可以直接看文件進行編寫。我寫一下我的程式碼 支付流程:使用者點選前端的支付,然後後臺生成支付需要的資料,傳給支付寶,支付調起輸入支付密碼 支付成功 程式碼: 1)生成需要資料的後臺方法

支付手機網頁支付和微信公眾號支付接入

       先說支付寶的吧。        第一步:去支付寶新建沙箱應用並申請開通相應許可權,也就是測試環境,完成後去https://auth.alipay.com/login/ant_sso_index.htm?goto=

Java整合微信H5支付/支付手機網站支付

微信H5支付:1,微信外部H5支付:名詞解釋:就是在自己的H5網站頁面裡呼叫微信支付功能,注意,這裡只能是在微信外部支付,在微信內開啟網站是無法支付的,要另外使用微信公眾號支付呼叫微信H5支付介面前提條件:1,註冊公眾號並且通過認證2,在公眾號裡申請微信支付,成為商戶號3,在

支付手機掃碼支付

很多站長都會在自己網站上掛上捐贈贊助的按鈕,點選這個按鈕會直接去到支付寶的個人收款主頁,但很不幸的是,支付寶的個人收款主頁已下線,引用支付寶個人收款主頁下線通知: 由於業務調整,收款主頁已於2014年5月4日起停止服務,感謝您一直以來的支援!瞭解詳情,詳細

.net螞蟻金服支付手機網站支付介面記錄

新建應用、祕鑰之類的步驟略過下載SDK,.net下載地址,在專案中新增引用AopSdkhttps://openhome.alipay.com/doc/sdkDownload.resource?sdkType=NET下載了demo,alipay.wap.create.dire

支付API使用流程

一、準備工作 〉1、下載開發包 壓縮包下的“支付寶錢包支付介面開發包”中即有Andoid使用支付寶的JAR和Demo 〉2、建立支付寶應用 在支付寶開放平臺申請建立應用 支付寶平臺的應用建立僅限於公司實名認證使用者,個人帳號是不能建立應用的,應用申請我沒

支付手機網站支付介面整合的經驗小結

1.申請企業賬號:我們需要一個企業賬號; 4.下載並解壓後的資料夾結構: 5.選擇java開發的測試包,進去之後根據readme.txt文件說明進行引數配置即可測試了(測試包中的伺服器非同步通知頁面路徑和頁面跳轉同步通知頁面路徑在測試時可以不用配置); 幾個重要引數

支付手機網站支付開發記錄之結果非同步通知

開發的時候明明配置了非同步通知,可是沒有執行非同步通知,就算是官方Demo也不行 看了文件才發現需要配置外網 用外網就需要每次測試都要上傳伺服器太麻煩了 腦袋中《大型網站技術架構》中的內容浮現

Payment:支付手機網站支付教程

支付寶的H5支付體驗真不錯(支付寶叫他手機網站支付)。 反觀微信支付幹嘛要把H5支付藏起來?而且體驗還那麼差。 Payment 3.0 支付寶的配置設定文件請 點選這裡 從本篇開始,將用支付寶的沙箱方式進行演示,在專案的 payment/examp