thinkphp整合系列之支付寶RSA加密方式


thinkphp整合系列之支付寶RSA加密方式
上篇博客寫的是MD5加密方式;thinkphp整合系列之支付寶MD5加密方式掃碼支付http://baijunyao.com/article/75

但是呢;移動支付是沒有MD5加密的;只能是RSA加密;

long long ago;支付寶官方是沒有給RSA加密的demo的;

這次為了寫博客整理代碼的時候;竟然發現了官方給了一份demo;

但是;竟然把MD5和RSA分成了2個SDK;

好吧;這里給出的是二合一版的SDK;切換加密方式只需在配置項中設置下即可;

示例項目:http://git.oschina.net/shuaibai123/thinkphp-bjyadmin

一:導入sdk

/ThinkPHP/Library/Vendor/Alipay

這個sdk和上篇文章中的MD5加密方式的sdk是一套;



二:配置項

/Application/Common/Conf/config.php

    'ALIPAY_CONFIG'          => array(
        'partner'            => '', // partner 從支付寶商戶版個人中心獲取
        'seller_email'       => '', // email 從支付寶商戶版個人中心獲取
        'key'                => '', // key 從支付寶商戶版個人中心獲取
        'sign_type'          => strtoupper(trim('MD5')), // 可選md5  和 RSA 
        'input_charset'      => 'utf-8', // 編碼 (固定值不用改)
        'transport'          => 'http', // 協議  (固定值不用改)
        'cacert'             => VENDOR_PATH.'Alipay/cacert.pem',  // cacert.pem存放的位置 (固定值不用改)
        'notify_url'         => 'http://baijunyao.com/Api/Alipay/alipay_notify', // 異步接收支付狀態通知的鏈接
        'return_url'         => 'http://baijunyao.com/Api/Alipay/alipay_return', // 頁面跳轉 同步通知 頁面路徑 支付寶處理完請求后,當前頁面自 動跳轉到商戶網站里指定頁面的 http 路徑。 (掃碼支付專用)
        'show_url'           => 'http://baijunyao.com/User/Order/index', // 商品展示網址,收銀台頁面上,商品展示的超鏈接。 (掃碼支付專用)
        'private_key_path'   => '', //移動端生成的私有key文件存放於服務器的 絕對路徑 如果為MD5加密方式;此項可為空 (移動支付專用)
        'public_key_path'    => '', //移動端生成的公共key文件存放於服務器的 絕對路徑 如果為MD5加密方式;此項可為空 (移動支付專用)
        ),

既然是RSA加密方式;那主要就是來接收移動支付支付成功后的支付結果了;

那么就不需要管return_url、show_url這兩個參數了;

RSA私鑰及公鑰生成方式在這:https://doc.open.alipay.com/doc2/detail?treeId=58&articleId=103242&docType=1

需要強調的是注釋中說的;路徑要是php可以訪問的絕對路徑;

三:接收異步通知

我們是需要給移動端開發人員一個接收支付結果通知的url既notify_url;

移動端支付成功后;支付寶的服務器會向我們指定的notify_url發送post通知;

當判斷支付成功后;就更改訂單狀態;

/Application/Api/Controller/AlipayController.class.php

    /**
     * notify_url接收頁面
     */
    public function alipay_notify(){
        // 引入支付寶
        vendor('Alipay.AlipayNotify','','.class.php');
        $config=$config=C('ALIPAY_CONFIG');
        $alipayNotify = new \AlipayNotify($config);
        // 驗證支付數據
        $verify_result = $alipayNotify->verifyNotify();
        if($verify_result) {
            echo "success";
            // 下面寫驗證通過的邏輯 比如說更改訂單狀態等等 $_POST['out_trade_no'] 為訂單號;
                        
        }else {
            echo "fail";
        }
    }

ok;到這里;支付寶的兩種加密方式就整合完成了;


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM