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是一套;php
二:配置項
/Application/Common/Conf/config.phpgit
'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.phpthinkphp
/** * 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;到這裏;支付寶的兩種加密方式就整合完成了;服務器