appcan支付寶支付 4.0版本:php
一、使用RSA驗證,不是RSA2,而且RSA和RSA2對應的支付寶公鑰是不一樣的,生成的RSA私鑰要使用PKCS8(java適用)的,java
二、再就是回調地址,設置爲商家後臺設置的回調地址,必須同樣的;算法
三、支付請求能夠使用uexAliPay.generatePayOrder生成的字符串,做爲uexAliPay.payWithOrder的測試參數,若是正常支付
後,再嘗試編寫服務器端代碼;json
四、字符串中&不要轉爲&服務器
五、服務器端php5.6版本,須要開啓openssl;app
服務器端代碼:測試
<?php //配置 define('APP_ID','***'); define('NOTIFY_URL','http://www.test.com'); //這個回調地址跟商家後臺設置的一致 define('RSA_PRIVATE_KEY','./rsa_private_key.pem');//私鑰路徑,有換行的 //獲取訂單信息 $out_trade_no = $_POST['out_trade_no']; $subject = $_POST['subject']; $total_amount = $_POST['total_fee']; $body = $_POST['body']; require_once './aop/AopClient.php'; require_once './aop/request/AlipayOpenPublicTemplateMessageIndustryModifyRequest.php'; //構造業務請求參數的集合(訂單信息) $content = array(); $content['subject'] = $subject; $content['out_trade_no'] = $out_trade_no; //''.time().mt_rand(100,1000); $content['total_amount'] = $total_amount; $content['product_code'] = "QUICK_MSECURITY_PAY";//銷售產品碼,固定值 $con = json_encode($content);//$content是biz_content的值,將之轉化成json字符串 //公共參數 $Client = new AopClient();//實例化支付寶sdk裏面的AopClient類,下單時須要的操做,都在這個類裏面 $param['app_id'] = APP_ID; $param['method'] = 'alipay.trade.app.pay';//接口名稱,固定值 $param['charset'] = 'utf-8';//請求使用的編碼格式 $param['sign_type'] = 'RSA';//商戶生成簽名字符串所使用的簽名算法類型 $param['timestamp'] = date('Y-m-d H:i:s');//發送請求的時間 $param['version'] = '1.0';//調用的接口版本,固定爲:1.0 $param['notify_url'] = NOTIFY_URL; $param['biz_content'] = $con;//業務請求參數的集合,長度不限,json格式,即前面一步獲得的 $paramStr = $Client->getSignContent($param);//組裝請求籤名參數 $private_path = RSA_PRIVATE_KEY; $sign = $Client->alonersaSign($paramStr, $private_path, 'RSA', true);//生成簽名 $param['sign'] = $sign; $order_url = $Client->getSignContentUrlencode($param);//最終請求參數 echo $order_url; exit(); ?>