<object id="vqvqa"></object>
  • <th id="vqvqa"><video id="vqvqa"></video></th> <code id="vqvqa"></code>
    1. <big id="vqvqa"></big>

      <code id="vqvqa"><nobr id="vqvqa"></nobr></code>
      無憂支付網首頁
      24小時服務電話
      QQ:1145248264
      本站出售
      站內搜索
      您當前的位置:主頁 > 支付接口申請相關知識 >

      支付寶AliPay支付渠道接口設計

      添加時間:2022-11-02

        支付寶為第三方APP的支付集成提供了嵌入式的集成渠道接口,因此總體來說我們可以借助支付寶的接入規則文件和支付寶集成接入包的導入、修改完成我們對支付寶支付渠道接口的集成。

        支付寶支付渠道接口分兩個模塊:第一個為Alipay負責后動與返回結果,第二個部分AlipayAction,為支付寶支付渠道接口的整體設計,也就是我們集成接入的部分,此處分為三部分,即接入、支付與返回。

        本文并不涉及支付服務器,因此本接口設計只討論設計流程圖中如何發送關鍵參數以及接收與處理同步返回的結果。

        1、AliPay 模塊

        支付寶支付渠道接口的整體設計模塊主要功能函數,payRequest()和JPayManager getJPayManager()

        .payRequest()
        //將商戶信息傳迸給AlipayAction payAction,啟動AlipayAction
        AlipayAction payAction = new AlipayAction( this,cpInfo );
        payAction.pay();

        .JPayManager getJPayManager()
        //返回最終支付結果
        return mManager.

        2、AlipayAction 模塊

        AlipayAction模塊是支付寶集成接入的模塊,在借助其幫助的同時,我們需要對它進行一定的修改,使其能夠匹配我們集成支付平臺的需要。在接支付結果入部分Pay()和PayCallBack()是我們后期增加,為了向集成平臺服務器請求、獲取key信息的功能;在返回部分也需要增加將支付結果通知集成平臺的功能,對RQF_PAY()進行少許修改。

        1.接入部分

        接入部分需要獲取調用支付寶接口時根據業務規則需要傳遞的請求參數,如表1支付請求接口參數列表所示,調用接口開始支付。

      表1 支付請求接口參數列表

      支付請求接口參數列表

        首先通過Pay()向集成支付平臺的支付服務器獲取事先己經申請后的key信息。表2為獲取關鍵參數請求列表。

      表2 獲取關鍵參數請求列表

      獲取關鍵參數請求列表

        主要功能代碼如下:

        //將集成平臺支付服務器需要驗證的信息加密
        long time = System.currentTimeMi11is();
        String sign = "" + JPayManager.ALIPAY + JPayManager.FLAG + time;
        sign = SignUtil.getMD5(sign);
        //傳遞驗證信息請求支付服務器數據
        payReq.keyInfoRequest(JPayManager.ALIPAY,JPayManager.FLAG,String.valueOf(time),mCPInfo.getOrderId(),sign,mPayCallBack).

        通過PayCallBack()向集成平臺獲取己存儲在集成平臺服務器端的Partner、Seller、RsaPrivate、RsaAlipayPublic、ftotifyUrl,首先判斷平臺服務器是否回應,如有則獲取相關參數,再判斷Partner、Seller、RsaPrivate、RsaAlipayPublic、NotifyUrl如果有一個為空則失敗,直接返回A1ipay模塊,如果成功則將獲取的信息mhandler返回給下一支付進程,在支付服務器數據的交互時,使用Json數據格式。表3為從支付服務器返回的參數列表。

      表3 支付服務器返回的參數列表

      支付服務器返回的參數列表

        主要功能代碼如下:

        private PayCallBack mPayCallBack = new PayCallBack()
        //判斷平臺服務器是否回應,在有服務器溝通成功的前提下獲取Partner、Seller、Rsa_Private、Rsa_alipay_public、Notify_Url相關參數
        jo = new JSONObject (response);
        if (jo != null) {
        jo = new JSONObject(message);
        mPartner = jo.getString("partner");
        mSeller = jo.getString("seller");
        mRsaPrivate = jo.getString("rsa_privateW);
        raRsaAlipayPublic = jo.getString("rsa_alipay_public");
        mNotifyUrl = jo.getString("notify_url");
        //判斷Partner、Seller、RsaPrivate、RsaAlipayPublic、NotifyUrl如果有一個為空則失敗,直接返回A1iPay模塊
        Check message();
        //如果成功返回給下一支付進程PAY_TO_ALIPAY
        mHandler.sendEmptyMessage (PAY_TO_ALIPAY).

        PAY_TO_ALIPAY()將各方獲取的信息以支付寶支付接口文檔的請求參數標準進行整合,并開始支付。

        //按照文檔標準獲取支付參數
        String orderInfo = getOrderInfo();
        //獲取簽名的類型
        String signType = getSignType();
        //根據簽名的方式為訂單信息進行簽名
        String strsign = sign(signType,orderInfo);
        //對簽名進行編碼
        strsign = URLEncoder,encode(strsign);
        //將參數組裝好
        final String Info = orderInfo + "&sign=" + """+ strsign + """ + "&" + getSignType().

        2.支付部分

        首先實例化一個Thread()來支付、接收支付寶服務器同步返回的通知結果。

        new Thread(){
        public void run(){
        //從支付寶接口獲取同步返回的支付結果,返回值為msg,提供給RQF_PAY完成解析和檢驗。
        AliPay alipay = new AliPay(mActivity,mHandler);
        String result = alipay.pay(orderInfo);
        Log.i (TAG,"result = " + result);
        Message msg = new Message();
        msg.what = RQF_PAY;
        msg.obj = result;
        mHandler.sendMessage(msg);}
        }.start().

        3.返回部分

        返回部分需要將同步返回的通知結果解析,判斷是否是真實的結果,并通知集成支付平臺的支付管理模塊。當獲得到通知返回時的待簽名字符串后,把待簽名字符串、支付寶提供的公鑰、支付寶通知返回參數中的參數sign的值三者一同放入RSA的簽名函數中進行非對稱的簽名運算,來判斷簽名是否驗證通過。

        因為本文不涉及集成支付平臺的支付服務器設計,所以支付寶服務器異步返回的通知不加討論。表4是支付寶接口返回字段說明列表。

      表4 支付寶接口返回字段說明列表

      支付寶接口返回字段說明列表

        RQF_PAY()首先將msg中的result解析,用支付寶提供的公鑰進行解析,如果匹配再與集成平臺服務器獲得的異步返回通知結果進行比對,確保結果正確,并將最終的結果payState返回給集成支付平臺的支付管理模塊JPayManager。核心代碼如下:

        //解析new Thread()傳遞回來的result
        String memo = "memo=";
        int imemoStart = strRet.indexOf("memo=");
        imemoStart += memo,length();
        int iraemoEnd = strRet.indexOf(";result=");
        memo = strRet.substring(imemoStart,imeraoEnd);
        //用先前在PayCallBack()里獲取的支付寶公鑰進行解析,判斷sign、signtype是否匹配
        ResultChecker resultChecker = new ResultChecker(strRet,mRsaAlipayPublic);
        checksign();
        //獲取返回字符串中的支付結果狀態
        String resultStatus = resultChecker.getResultStatus();
        //如果匹配再與集成平臺服務器獲得的異步返回通知結果進行比對,確保結果正確,并將最終的結果WPayStateCode返回給集成支付平臺的支付管理模塊JPayManager
        CheckOrder.recheckOrderWithServer (CPInfo,PayStateCode);
        Alipay.getJPayManager().PayCallBack PayStateCode,JPayManager.ALIPAY).

      關閉

      1.點擊下面按鈕復制微信號

      ***********

      2.打開微信→查找微信號

      加為好友 開始支付接入

      午夜福利在线永久视频
      <object id="vqvqa"></object>
    2. <th id="vqvqa"><video id="vqvqa"></video></th> <code id="vqvqa"></code>
      1. <big id="vqvqa"></big>

        <code id="vqvqa"><nobr id="vqvqa"></nobr></code>