1. 程式人生 > >支付寶APP支付-php後臺生成請求引數

支付寶APP支付-php後臺生成請求引數

支付寶APP支付

本文將介紹新版支付寶app支付的php後臺(php框架是tp5):

  • 下載官方文件
  • 配置商家支付寶商家引數
  • 構造業務請求引數
  • *配置公共引數
  • 生成簽名
  • 生成最終的請求字串
  • 生成最終的請求字串

下載官方文件

配置商家支付寶商家引數

'alipay_config' =>[  
       'appid' =>'2017010604888586',//商戶金鑰
       'rsaPrivateKey' =>'',//私鑰
       'alipayrsaPublicKey'=>'',公鑰(自己的程式裡面用不到)
       'partner'
=>'2088421540577515',//(商家的引數,新版本的好像用不到) 'input_charset'=>strtolower('utf-8'),//編碼 'notify_url' =>'www.test.com/api/notify.php',//回撥地址(支付寶支付成功後回撥修改訂單狀態的地址) 'payment_type' =>1,//(固定值) 'seller_id' =>'',//收款商家賬號 'charset' => 'utf-8',//編碼 'sign_type' => 'RSA2'
,//簽名方式 'timestamp' =>date("Y-m-d Hi:i:s"), 'version' =>"1.0",//固定值 'url' => 'https://openapi.alipay.com/gateway.do',//固定值 'method' => 'alipay.trade.app.pay',//固定值 ]

注:支付寶的私鑰和公鑰,用支付寶提供的工具生成

構造業務請求引數

       //構造業務請求引數的集合(訂單資訊)
       $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格式

生成簽名

       //生成簽名
       $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

這樣就生成最總的請求字串,返回給客戶端,客戶端就可以不用拼接,直接拿來就用.