新版本支付寶開發流程


看好sdkExecute和execute 對應生成app端和網站

product_code和method都不一樣

 

1、https://docs.open.alipay.com/         網站和手機端可以使用demo里邊的異步代碼

  上邊的文檔-->支付能力--->選擇開發所需要的文檔,加入到對應的php框架里邊,微調即可

2、下邊是簽約的時候注意的不然demo對不上

    手機網站就是在手機上進行支付的,可以喚起支付寶APP或者H5支付頁面進行支付

 

    電腦網站支付是在電腦網頁上的,可以出現掃碼頁面或者賬號密碼登錄進行支付

3、項目已上線才可以使用,不然就用沙盒測試,沙盒測試所對應的網關和appid不一樣,這點需要注意下,

 

4、app支付的時候

  下邊這段代碼是網站支付里邊已經有的。只是最后一句沒有,但是提供方法了

$payRequestBuilder = new AlipayTradePagePayContentBuilder();
$payRequestBuilder->setBody($body);
$payRequestBuilder->setSubject($subject);
$payRequestBuilder->setTotalAmount($total_amount);
$payRequestBuilder->setOutTradeNo($out_trade_no);

 

一、如下為支付寶APP支付PHP SDK DEMO地址。就是服務器端傳給客戶端的url拼接參數(下邊代碼全是app支付的時候的)

https://docs.open.alipay.com/54/106370        這個php的demo在下邊

另外需要注意的是:

json_encode會支付不了,不知道為什么,用字符串拼接的倒是成功了
require_once APPPATH . 'third_party/alipayphp/AopSdk.php';
        $aop = new AopClient();

        //**沙箱測試支付寶開始
        $aop->gatewayUrl = 'https://openapi.alipay.com/gateway.do';
        //實際上線app id需真實的
        $aop->appId = '2********109630962';
        $aop->rsaPrivateKey = '++veeqyIY462tz&&&WVUtrlg==';
        $aop->format = "json";
        $aop->charset = "UTF-8";
        $aop->signType = "RSA2";
        $aop->alipayrsaPublicKey = '+//JOmL+++r6X6H/zvOz2+iZknLrsIjRlz******4yJt&&&&&&&&&&***K/3bMNlgtt+/Vw2PvgJYqwIDAQAB';
//        $bizcontent = json_encode([
//            'body'=>'這個是測試的信息',
//            'subject'=>'這是我的標題',
//            'out_trade_no'=>'B123456789101122111',//此訂單號為商戶唯一訂單號
//            'total_amount'=> '0.01',//保留兩位小數
//            'product_code'=>'QUICK_MSECURITY_PAY'
//        ]);
        $bizcontent = "{\"body\":\"這個是測試的信息\"," 
                . "\"subject\": \"這是我的標題\","
                . "\"out_trade_no\": \"B123456782291011333332111\","
                . "\"timeout_express\": \"3m\"," 
                . "\"total_amount\": \"0.01\","
                . "\"product_code\":\"QUICK_MSECURITY_PAY\""
                . "}";
        //**沙箱測試支付寶結束
        //實例化具體API對應的request類,類名稱和接口名稱對應,當前調用接口名稱:alipay.trade.app.pay
        $request = new AlipayTradeAppPayRequest();
        //支付寶回調
        $request->setNotifyUrl('http://**********ify_url');
        $request->setBizContent($bizcontent);
        //這里和普通的接口調用不同,使用的是sdkExecute
        $response = $aop->sdkExecute($request);
        echo htmlspecialchars($response);

如果報錯可以吧htmlspecialchars給去掉

  

  驗簽

class AlipayNotifyController extends CI_Controller
{
    function notify()
    {
        require_once('/www/my/app/third_party/alipay/aop/AopClient.php');
        $aop = new AopClient;
        $aop->alipayrsaPublicKey = '請填寫支付寶公鑰,一行字符串';
        //此處驗簽方式必須與下單時的簽名方式一致
        $flag = $aop->rsaCheckV1($_POST, NULL, "RSA");
        //驗簽通過后再實現業務邏輯,比如修改訂單表中的支付狀態。
        /**
        ①驗簽通過后核實如下參數trade_status、out_trade_no、total_amount、seller_id
        ②修改訂單表
        **/
        //打印success,應答支付寶。必須保證本界面無錯誤。只打印了success,否則支付寶將重復請求回調地址。
        echo 'success';
    }
}
另外注意下返回的數據
  • 狀態TRADE_SUCCESS的通知觸發條件是商戶簽約的產品支持退款功能的前提下,買家付款成功;
  • 交易狀態TRADE_FINISHED的通知觸發條件是商戶簽約的產品不支持退款功能的前提下,買家付款成功;或者,商戶簽約的產品支持退款功能的前提下,交易已經成功並且已經超過可退款期限。
 

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM