移動APP集成支付寶--服務器端設計

最近開發APP時需要集成支付寶支付,作爲一名小小的服務器端後臺開發者針對此次集成做以下整理,希望能夠給大家帶來幫助,同時作爲工作節點的一個回饋。好了,正式進入服務器端集成的工作流程:

       本次集成使用支付寶最新的demo,之前有同事把生成簽名在APP端完成,個人感覺這種做法是極其不負責任的做法,無法保證安全性。

第一步:APP端發送訂單信息到後臺服務器;

第二步:服務器端生成簽名串返回給APP端;具體內容參照一下代碼:

public function creatSign(){

//此部分根據具體情況處理訂單信息

//---------------------簽名處理----------------B----

$biz_content=json_encode(array(
"body"=>"orderpay",
            "subject"=>"
描述信息
",
            "out_trade_no"=>$order['transaction'],
            "total_amount"=>0.01,
            "product_code"=>"QUICK_MSECURITY_PAY",
        ),true);
        $ali = array(
            "app_id"=>C('aliPayConf_pub.APPID'),
            "method"=>"alipay.trade.app.pay",
            "format"=>"json",
            "charset"=>"utf-8",
            "sign_type"=>"RSA",
            "sign" => "",
            "timestamp"=>date("Y-m-d H:i:s",time()),
            "version"=>"1.0",
            "notify_url"=>C('aliPayConf_pub.NOTIFY_URL'),
            "biz_content"=>$biz_content,
        );
        $ali = $this->argSort($ali);
        $str = "";
        foreach ($ali as $key => $val) {
            if($key=='sign'){
                continue;
            }
            else{
                if($str==''){
                    $str = $key.'='.$val;
                }else{
                    $str = $str.'&'.$key.'='.$val;
                }
            }
        }

       $str = $str.'&sign='.$sign;//傳給支付寶接口的數據

//---------------------簽名處理----------------B----

//以下部分將簽名串整體傳送到APP端即可


}

/*-------------------------以下爲輔助函數------------------------------*/

//數組排序    
  private  function argSort($para) {
        ksort($para);   //按鍵名對數組排序
        reset($para);  //將數組第一個指針回到第一個單元
        return $para;
    }


    //RSA簽名
    private  function sign($data) {
        //讀取私鑰文件
        $priKey = file_get_contents(C('aliPayConf_pub.RSAPRIVATEKEYFILEPATH'));//私鑰文件路徑
        //轉換爲openssl密鑰,必須是沒有經過pkcs8轉換的私鑰        
        $res = openssl_get_privatekey($priKey);
        //調用openssl內置簽名方法,生成簽名$sign
        openssl_sign($data, $sign, $res);
        //釋放資源
        openssl_free_key($res);      
        //base64編碼
        $sign = base64_encode($sign);
        return $sign;
    }
   



注:APP_ID,回調地址等信息爲方便管理個人習慣寫在配置文件中;

完成此部分工作APP端通過服務器端返回的信息就可以調起支付寶了,當然服務器端還有最重要的一步請接着往 下看

第三步:支付結果異步通知


此部分內容就比較簡單了,根據返回處理特定的業務邏輯,在此就不再複述了。


以上即爲APP集成支付寶 服務器端的工作,不喜勿噴。祝大家工作開心!

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章