支付寶APP支付-php後臺生成請求引數
阿新 • • 發佈:2019-01-06
支付寶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
這樣就生成最總的請求字串,返回給客戶端,客戶端就可以不用拼接,直接拿來就用.