注:支付寶的私鑰和公鑰,用支付寶提供的工具生成構造業務請求參數
//構造業務請求參數的集合(訂單信息) $content = array(); $content['body'] = 'ceshi'; $content['subject'] = 'funbutton';//商品的標題/交易標題/訂單標題/訂單關鍵字等 $content['out_trade_no'] = '';//商戶網站唯一訂單號 $content['timeout_express'] = '1d';//該筆訂單允許的最晚付款時間 $content['total_amount'] = floatval($price);//訂單總金額(必須定義成浮點型) $content['seller_id'] = '';//收款人賬號 $content['product_code'] = 'QUICK_MSECURITY_PAY';//銷售產品碼,商家和支付寶簽約的產品碼,為固定值QUICK_MSECURITY_PAY $content['store_id'] = 'BJ_001';//商戶門店編號 $con = json_encode($content);//$content是biz_content的值,將之轉化成字符串 //公共參數 $param = array(); $Client = new /alipay/aop/AopClient();//實例化支付寶sdk里面的AopClient類,下單時需要的操作,都在這個類里面 $param['app_id'] = 'appid';//支付寶分配給開發者的應用ID $param['method'] = 'method';//接口名稱 $param['charset'] = 'charset';//請求使用的編碼格式 $param['sign_type'] = 'sign_type';//商戶生成簽名字符串所使用的簽名算法類型 $param['timestamp'] = 'timestamp';//發送請求的時間 $param['version'] = 'version';//調用的接口版本,固定為:1.0 $param['notify_url'] = 'notify_url';//支付寶服務器主動通知地址 $param['biz_content'] = $con;//業務請求參數的集合,長度不限,json格式 注: 1.這里接口版本是固定1.0,但是methon用的卻不是1.0對應的名稱,這里容易讓人混淆.但是這都是固定的 2.詳細參數,請參考支付寶的官方文檔(https://doc.open.alipay.com/docs/doc.htm?spm=a219a.7629140.0.0.UpUNQb&treeId=204&articleId=105465&docType=1)
生成簽名
//生成簽名 $paramStr = $Client->getSignContent($param); $sign = $Client->alonersaSign($paramStr,$alipay_config['rsaPrivateKey'],'RSA2'); 調用支付sdk中的AopClient類中的getSignContent方法將請求數組轉化成字符串(規定格式) 然后調用alonersaSign方法生成簽名
生成最終的請求字符串
$param['sign'] = $sign; $str = $Client->getSignContentUrlencode($param); 將上面生成的簽名附加到一開始的請求數組中,然后掉用getSignContentUrlencode中生成最總的請求字符串,注意這里傳的是數組而不是字符串,也就是說,簽名前后經過了**兩次**encode
這樣就生成最總的請求字符串,返回給客戶端,客戶端就可以不用拼接,直接拿來就用.