1. 程式人生 > >支付寶支付-服務端php對接移動端應用app

支付寶支付-服務端php對接移動端應用app

準備工作

一、建立應用

1、要在支付寶開放平臺那裡建立自己的應用,建立這裡我簡單描述一下,更詳細的還是官方文件!

這裡寫圖片描述

2、把裡面的資訊填完,提交稽核(稽核時間大概一天)

這裡寫圖片描述

3、稽核完了,在應用那裡拿到APPID,把AppId記下來,然後配置應用

這裡寫圖片描述

4、下載支付寶祕鑰工具

支付寶祕鑰工具
更詳細的,參考官方文件生成教程對應你設定的是RSA2試試RSA

這裡寫圖片描述

5、下載php-SDK

下載php-sdk
也有更詳細的demo也可以參考

二、開始搞了

1、支付訂單資訊示例

$aop = new AopClient;
$aop
->gatewayUrl = "https://openapi.alipay.com/gateway.do"; $aop->appId = "app_id"; $aop->rsaPrivateKey = '請填寫開發者私鑰去頭去尾去回車,一行字串' ; $aop->format = "json"; $aop->charset = "UTF-8"; $aop->signType = "RSA2"; $aop->alipayrsaPublicKey = '請填寫支付寶公鑰,一行字串';//對應填寫 //例項化具體API對應的request類,類名稱和介面名稱對應,當前呼叫介面名稱:alipay.trade.app.pay
$request = new AlipayTradeAppPayRequest(); //SDK已經封裝掉了公共引數,這裡只需要傳入業務引數 //********注意*************************下面除了body描述不是必填,其他必須有,否則失敗 $bizcontent = json_encode(array( 'body'=>'我是測試資料', 'subject' => 'App支付測試',//支付的標題, 'out_trade_no' => '20170125test01',//支付寶訂單號必須是唯一的,不能在支付寶再次使用,必須重新生成,哪怕是同一個訂單,不能重複。否則二次支付時候會失敗,訂單號可以在自己訂單那裡保持一致,但支付寶那裡必須要唯一,具體處理自己操作!
'timeout_express' => '30m',//過期時間(分鐘) 'total_amount' => '0.01',//金額最好能要保留小數點後兩位數 'product_code' => 'QUICK_MSECURITY_PAY' )); $request->setNotifyUrl("商戶外網可以訪問的非同步地址");//你在應用那裡設定的非同步回撥地址 $request->setBizContent($bizcontent); //這裡和普通的介面呼叫不同,使用的是sdkExecute $response = $aop->sdkExecute($request); //htmlspecialchars是為了輸出到頁面時防止被瀏覽器將關鍵引數html轉義,實際列印到日誌以及http傳輸不會有這個問題 echo htmlspecialchars($response);//就是orderString 可以直接給客戶端請求,無需再做處理。這裡就是方便列印給你看,具體你直接可以在方法那裡return出去,不用加htmlspecialchars,或者響應給app端讓他拿著這串東西調起支付寶支付

2、這裡是列印加簽是資料

通過sdk生成的加簽後的資料

這裡寫圖片描述

3、非同步處理

 public function notifyurl()
 {
        $aop = new \AopClient;
        $aop->alipayrsaPublicKey = '請填寫支付寶公鑰,一行字串';
        $flag = $aop->rsaCheckV1($_POST, NULL, "RSA2");
        if($flag){
            //驗證成功
            //這裡可以做一下你自己的訂單邏輯處理

            echo 'success';//這個必須返回給支付寶,響應個支付寶,
        } else {
            //驗證失敗
            echo "fail";
        }
        //$flag返回是的布林值,true或者false,可以根據這個判斷是否支付成功
   }

4、支付寶非同步帶過來的資料

支付寶提交過來的POST原資料,json資料提交過了給你

這裡寫圖片描述

這裡我把他變成陣列,方便瀏覽資訊

這裡寫圖片描述

5、結合App支付做一個同步通知處理

這裡寫圖片描述

寫個方法去處理同步的資料,讓app把支付寶同步返回的資料提交給後臺處理,以非同步資料為主同步為輔這樣處理驗證。保證支付資料一致準確,建議做一下吧,因為我們搭建的伺服器如果出現問題了,支付寶的非同步資料收不到,但是app可以收到支付寶的同步資料,不過支付寶伺服器會在24小時內每隔一段時間再請求我們的伺服器的。為了保證不會出現這樣的事情。保證使用者體驗度,建議做個同步和非同步處理,非同步為主,同步為輔!非同步處理了邏輯改變訂單狀態,同步也可以去查詢訂單狀態是否改變,如果沒有改變就走同步的資料,在同步方法那裡做修改訂單狀態的邏輯處理!

以上是我自己個人經驗以及個人看方法,有什麼不對的錯誤的請多多指教!有什麼更好的也可以說出來!大家共同進步,共同學習!謝謝!