一,官方文檔說明入口
https://opendocs.alipay.com/open/20190111144811460526/quickstart
環境配置 php + thinkphp3.2
二,紅包步驟
前期准備,應用申請及開放平台設置(關鍵是 公鑰證書 設置)
App<==>后端(php)授權串(支付寶登錄授權完成版)
App->授權后拿到支付寶唯一標識uid->后端php( alipay.fund.trans.uni.transfer )
三,步驟說解
1,下載 支付寶開放平台開發助手windows版 非java放言選擇非JAVA適用
獲取csr文件:和開放平台申請填寫信息完全一致。
按說明:配置好公鑰證書相關。
二,APP向PHP請求完整授權串
$sign_type = 'RSA2'; $data = [ 'apiname' => 'com.alipay.account.auth', 'method' => 'alipay.open.auth.sdk.code.get', 'app_id' => $app_id, 'app_name' => 'mc', 'biz_type' => 'openservice', 'pid' => $pid, 'product_id' => 'APP_FAST_LOGIN', 'scope' => 'kuaijie', 'target_id' => $target_id, 'auth_type' => 'AUTHACCOUNT', 'sign_type' => $sign_type, ];
vendor('alipay2.AopCertClient');
$aop = new \AopCertClient;
$aop->gatewayUrl = 'https://openapi.alipay.com/gateway.do';
$aop->appId = $app_id;
$aop->rsaPrivateKey = $aliConf['rsaPrivateKey']; //私鑰
$aop->alipayrsaPublicKey = $aliConf['rsaPublicKey']; //公鑰
$aop->apiVersion = '1.0';
$aop->signType = 'RSA2';
$aop->postCharset = 'UTF-8';
$aop->format = 'json';
$aop->appCertSN = $aop->getCertSN(支付寶應用證書路徑); //支付寶應用證書
$aop->alipayRootCertSN = $aop->getRootCertSN(支付寶應用根證書路徑); //根證書sn
$data["sign"] = urlencode($aop->generateSign($data, $sign_type))
$strArr = [];
foreach ($data as $k => $v){
$strArr[] = "$k=$v";
}
$authInfo = implode('&',$strArr);
返回授權串$authInfo給客戶端調用,客戶正常授權后拿支付寶uid
三,APP拿授權后uid向PHP請求發送支付寶紅包
vendor('alipay2.request.AlipayFundTransUniTransferRequest'); $request = new \AlipayFundTransUniTransferRequest(); $payee_info = [ 'identity' => 支付寶uid, 'identity_type' => "ALIPAY_USER_ID", ]; $payParams = [ "out_biz_no" => 訂單號, "trans_amount" => 紅包金額, "product_code" => "STD_RED_PACKET", "biz_scene" => "DIRECT_TRANSFER", "order_title" => "紅包標題", "payee_info" => $payee_info, "remark" => "紅包描述", ]; $request->setBizContent(json_encode($payParams)); vendor('alipay2.AopCertClient'); $aop = new \AopCertClient; $aop->gatewayUrl = 'https://openapi.alipay.com/gateway.do'; $aop->appId = $app_id; $aop->rsaPrivateKey = $aliConf['rsaPrivateKey']; $aop->alipayrsaPublicKey = $aliConf['rsaPublicKey']; $aop->apiVersion = '1.0'; $aop->signType = 'RSA2'; $aop->postCharset = 'UTF-8'; $aop->format = 'json'; $aop->appCertSN = $aop->getCertSN($aliConf['alipayrsaAppPath']); //支付寶應用證書 $aop->alipayRootCertSN = $aop->getRootCertSN($aliConf['alipayrsaRootPath']); //根證書sn $aliResult = call_user_func_array([$aop,'excute'],[$request]); array( 'alipay_fund_trans_uni_transfer_response' => stdClass::__set_state(array( 'code' => '10000', 'msg' => 'Success', 'out_biz_no' => 'xxxxx', 'order_id' => 'xxxxx', 'pay_fund_order_id' => 'xxxxxxxx', 'status' => 'SUCCESS', 'trans_date' => '2019-08-21 00:00:00', )), 'sign' => 'ERITJKEIJKJHKKKKKKKHJEREEEEEEEEEEE', )
四,注意事項
1,支付寶紅包要用公鑰證書,類似微信紅包有證書文件需要上傳到服務器。
2,PHP SDK要用 AopCertClient 申明
完結,更多關注支付寶官方文檔,不過文檔里的示例可以好久沒有更新了,證書那塊有點問題。