移动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集成支付宝 服务器端的工作,不喜勿喷。祝大家工作开心!

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