成人无码视频,亚洲精品久久久久av无码,午夜精品久久久久久毛片,亚洲 中文字幕 日韩 无码

資訊專欄INFORMATION COLUMN

支付開(kāi)發(fā)填坑記之支付寶

chanjarster / 2404人閱讀

摘要:原文地址支付支付步驟為獲取支付寶的配置信息。將得到的數(shù)據(jù)請(qǐng)求支付寶客戶端進(jìn)行支付。端將拼接好的字符串拿去請(qǐng)求支付寶客戶端即可調(diào)起支付寶進(jìn)行支付。向支付寶申請(qǐng)新訂單,獲取支付。成功請(qǐng)求回來(lái)后,就可以向支付寶發(fā)出一次支付請(qǐng)求。

支付寶在所有支付方式中最好開(kāi)發(fā)的了,因?yàn)槲臋n比較清晰,而且開(kāi)發(fā)起來(lái)也比較簡(jiǎn)單。因此,支付寶的坑是相對(duì)較少的。
原文地址

APP支付

APP支付步驟為:

獲取支付寶的配置信息。

生成商家訂單信息。

根據(jù)訂單信息生成待校驗(yàn)數(shù)據(jù)。

生成請(qǐng)求給支付寶的加密字符串。

將待校驗(yàn)數(shù)據(jù)和加密字符串拼接,返回給APP。

APP將得到的數(shù)據(jù)請(qǐng)求支付寶客戶端進(jìn)行支付。

由于APP支付是由APP去調(diào)起支付寶支付,所以服務(wù)端需要做的事情就是將請(qǐng)求參數(shù)封裝好之后返回APP即可。

獲取支付寶的配置信息。
支付時(shí)需要的配置信息有:

key: 交易安全校驗(yàn)碼。

app_id:支付寶分配給開(kāi)發(fā)者的應(yīng)用ID。

生成商家訂單信息。
這個(gè)步驟由商家自行生成。支付寶那邊只需要知道的訂單信息為:

subject: 必填。商品的標(biāo)題/交易標(biāo)題/訂單標(biāo)題/訂單關(guān)鍵字等。

total_amount: 必填。訂單價(jià)格。

out_trade_no: 必填。商戶網(wǎng)站唯一訂單號(hào)。

body: 非必填。交易的具體描述信息。

根據(jù)訂單信息生成待校驗(yàn)數(shù)據(jù)。
APP支付的詳細(xì)請(qǐng)求參數(shù): 點(diǎn)擊查看

生成請(qǐng)求給支付寶的加密字符串。

$sign = $alipaySubmit->buildRequestParaForApp($para_token);

其中, buildRequestParaForApp 的實(shí)現(xiàn)為:

對(duì)待簽名參數(shù)數(shù)組排序

/**
 * 對(duì)數(shù)組排序
 * @param $para 排序前的數(shù)組
 * return 排序后的數(shù)組
 */
function argSort($para) {
    ksort($para);
    reset($para);
    return $para;
}

生成簽名結(jié)果(阿里推薦的是RSA2的簽名方式,這里項(xiàng)目用的是RSA)

/**
 * RSA簽名
 * @param $data 待簽名數(shù)據(jù)
 * @param $private_key_path 商戶私鑰文件路徑
 * return 簽名結(jié)果
 */
function rsaSign($data, $private_key_path) {
    $priKey = file_get_contents($private_key_path);
    $res = openssl_get_privatekey($priKey);
    openssl_sign($data, $sign, $res);
    openssl_free_key($res);
    //base64編碼
    $sign = base64_encode($sign);
    return $sign;
}

將待校驗(yàn)數(shù)據(jù)和加密字符串拼接,返回給APP。

$url = "";
foreach ($para_token as $key => $value) {
    $url .= $key."=".urlencode($value)."&";
}
return $url."sign=".urlencode($sign);

APP將得到的數(shù)據(jù)請(qǐng)求支付寶客戶端進(jìn)行支付。
APP端將拼接好的字符串拿去請(qǐng)求支付寶客戶端即可調(diào)起支付寶進(jìn)行支付。拼接好的字符串大致如下圖所示:

網(wǎng)頁(yè)版支付

網(wǎng)頁(yè)版支付步驟為:

設(shè)置支付寶的配置信息。

向支付寶申請(qǐng)新訂單,獲取支付token。

攜帶token進(jìn)行訂單支付。

網(wǎng)頁(yè)版的支付寶支付相對(duì)于APP調(diào)起支付寶要復(fù)雜,因?yàn)榫W(wǎng)頁(yè)支付時(shí),需要多次請(qǐng)求支付寶服務(wù)器獲取支付的必要參數(shù)。

設(shè)置支付寶配置信息。

/**調(diào)用授權(quán)接口alipay.wap.trade.create.direct獲取授權(quán)碼token**/
        
    //返回格式
    private  $format = "";
    //必填,不需要修改
    
    //版本
    private $v = "";
    //必填,不需要修改
    
    //請(qǐng)求號(hào)
    private $req_id = "";
    //必填,須保證每次請(qǐng)求都是唯一
    
    //**req_data詳細(xì)信息**
    
    //服務(wù)器異步通知頁(yè)面路徑
    private $notify_url = "";
    //需http://格式的完整路徑,不允許加?id=123這類自定義參數(shù)
    
    //頁(yè)面跳轉(zhuǎn)同步通知頁(yè)面路徑
    private $call_back_url = "";
    //需http://格式的完整路徑,不允許加?id=123這類自定義參數(shù)
    
    //賣家支付寶賬戶
    private $seller_email = "";
    //必填
    
    //商戶訂單號(hào)
    private $out_trade_no = "";
    //商戶網(wǎng)站訂單系統(tǒng)中唯一訂單號(hào),必填
    
    //訂單名稱
    private $subject = "";
    //必填
    
    //付款金額
    private $total_fee = "";
    //必填
    
    //請(qǐng)求業(yè)務(wù)參數(shù)詳細(xì)
    private $req_data = "";
    //必填
    
    //配置
    private $alipay_config = array();
    
/************************************************************/

向支付寶申請(qǐng)新訂單,并獲取訂單的token。

請(qǐng)求token的service為: alipay.wap.trade.create.direct

構(gòu)造參數(shù):

$para_token = array(
    "service" => "alipay.wap.trade.create.direct",
    //  合作者身份(partner ID)
    "partner" => trim($this->alipay_config["partner"]),
    //  APP使用的是RSA,網(wǎng)頁(yè)版使用的是MD5
    "sec_id" => trim($this->alipay_config["sign_type"]),
    //  返回的數(shù)據(jù)格式
    "format"    => $this->format,
    //  版本號(hào)?
    "v" => $this->v,
    //  唯一的請(qǐng)求號(hào)
    "req_id"    => $this->req_id,
    //  請(qǐng)求參數(shù)
    "req_data"  => $req_data,
    //  字符集,一般為utf8即可。
    "_input_charset"    => trim(strtolower($this->alipay_config["input_charset"]))
);

將構(gòu)造好的請(qǐng)求參數(shù),進(jìn)行處理,字典排序,拼接字符串,簽名:

$para_filter = paraFilter($para_temp);
$para_sort = argSort($para_filter);
$mysign = $this->buildRequestMysign($para_sort);
//簽名結(jié)果與簽名方式加入請(qǐng)求提交參數(shù)組中
$para_sort["sign"] = $mysign;
return $para_sort;

處理:過(guò)濾值為空的數(shù)據(jù),過(guò)濾簽名類型和簽名。

function paraFilter($para) {
    $para_filter = array();
    while (list ($key, $val) = each ($para)) {
        if($key == "sign" || $key == "sign_type" || $val == "")continue;
        else    $para_filter[$key] = $para[$key];
    }
    return $para_filter;
}

字典排序:

/**
 * 對(duì)數(shù)組排序
 * @param $para 排序前的數(shù)組

     */
    function argSort($para) {
        ksort($para);
        reset($para);
        return $para;
    }
    ```
    簽名:
    ```php
    /**
     * 生成簽名結(jié)果
     * @param $para_sort 已排序要簽名的數(shù)組
     * return 簽名結(jié)果字符串
     */
    function buildRequestMysign($para_sort) {
        //把數(shù)組所有元素,按照“參數(shù)=參數(shù)值”的模式用“&”字符拼接成字符串
        $prestr = createLinkstring($para_sort);
        $mysign = "";
        switch (strtoupper(trim($this->alipay_config["sign_type"]))) {
            case "MD5" :
                //  MD5直接將密鑰拼接在字符串后面再進(jìn)行MD5加密。
                $mysign = md5Sign($prestr, $this->alipay_config["key"]);
                break;
            case "RSA" :
                //  RSA則是先讀取商戶的私鑰,再用該密鑰對(duì)字符串進(jìn)行加密。
                $mysign = rsaSign($prestr, $this->alipay_config["private_key_path"]);
                break;
            case "0001" :
                $mysign = rsaSign($prestr, $this->alipay_config["private_key_path"]);
                break;
            default :
                $mysign = "";
        }
        
        return $mysign;
    }
    ```
3.  用構(gòu)造好的參數(shù)請(qǐng)求支付寶后臺(tái)申請(qǐng)新訂單:

    **注意:請(qǐng)求時(shí),必須帶上SSL證書。**

    ```php
    $sResult = getHttpResponsePOST($this->alipay_gateway_new, $this->alipay_config["cacert"],$request_data,trim(strtolower($this->alipay_config["input_charset"])));
    ```
    請(qǐng)求函數(shù)的實(shí)現(xiàn):
    ```php
    /**
     * 遠(yuǎn)程獲取數(shù)據(jù),POST模式
     * 注意:
     * 1.使用Crul需要修改服務(wù)器中php.ini文件的設(shè)置,找到php_curl.dll去掉前面的";"就行了
     * 2.文件夾中cacert.pem是SSL證書請(qǐng)保證其路徑有效,目前默認(rèn)路徑是:getcwd()."cacert.pem"
     * @param $url 指定URL完整路徑地址
     * @param $cacert_url 指定當(dāng)前工作目錄絕對(duì)路徑
     * @param $para 請(qǐng)求的數(shù)據(jù)
     * @param $input_charset 編碼格式。默認(rèn)值:空值
     * return 遠(yuǎn)程輸出的數(shù)據(jù)
     */
    function getHttpResponsePOST($url, $cacert_url, $para, $input_charset = "") {
    
        if (trim($input_charset) != "") {
            $url = $url."_input_charset=".$input_charset;
        }
        $curl = curl_init($url);
        curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, true);//SSL證書認(rèn)證
        curl_setopt($curl, CURLOPT_SSL_VERIFYHOST, 2);//嚴(yán)格認(rèn)證
        curl_setopt($curl, CURLOPT_CAINFO,$cacert_url);//證書地址
        curl_setopt($curl, CURLOPT_HEADER, 0 ); // 過(guò)濾HTTP頭
        curl_setopt($curl,CURLOPT_RETURNTRANSFER, 1);// 顯示輸出結(jié)果
        curl_setopt($curl,CURLOPT_POST,true); // post傳輸數(shù)據(jù)
        curl_setopt($curl,CURLOPT_POSTFIELDS,$para);// post傳輸數(shù)據(jù)
        $responseText = curl_exec($curl);
        //var_dump( curl_error($curl) );//如果執(zhí)行curl過(guò)程中出現(xiàn)異常,可打開(kāi)此開(kāi)關(guān),以便查看異常內(nèi)容
        curl_close($curl);
        
        return $responseText;
    }
    ```
    處理支付寶返回的數(shù)據(jù),并獲取token。
    
    ```php
    //URLDECODE返回的信息
    $html_text = urldecode($html_text);
    //解析遠(yuǎn)程模擬提交后返回的信息
    $para_html_text = parseResponse($html_text);
    //獲取request_token
    $request_token = $para_html_text["request_token"];
    ```
    parseResponse函數(shù)的實(shí)現(xiàn):
    
    ```php
    /**
     * 解析遠(yuǎn)程模擬提交后返回的信息
     * @param $str_text 要解析的字符串
     * @return 解析結(jié)果
     */
    function parseResponse($str_text) {
        //以“&”字符切割字符串
        $para_split = explode("&",$str_text);
        //把切割后的字符串?dāng)?shù)組變成變量與數(shù)值組合的數(shù)組
        foreach ($para_split as $item) {
            //獲得第一個(gè)=字符的位置
            $nPos = strpos($item,"=");
            //獲得字符串長(zhǎng)度
            $nLen = strlen($item);
            //獲得變量名
            $key = substr($item,0,$nPos);
            //獲得數(shù)值
            $value = substr($item,$nPos+1,$nLen-$nPos-1);
            //放入數(shù)組中
            $para_text[$key] = $value;
        }
        
        if( ! empty ($para_text["res_data"])) {
            //解析加密部分字符串
            if($this->alipay_config["sign_type"] == "0001") {
                $para_text["res_data"] = rsaDecrypt($para_text["res_data"], $this->alipay_config["private_key_path"]);
            }
            
            //token從res_data中解析出來(lái)(也就是說(shuō)res_data中已經(jīng)包含token的內(nèi)容)
            $doc = new DOMDocument();
            $doc->loadXML($para_text["res_data"]);
            $para_text["request_token"] = $doc->getElementsByTagName( "request_token" )->item(0)->nodeValue;
        }
        
        return $para_text;
    }
    ```

攜帶token進(jìn)行訂單支付。

成功請(qǐng)求token回來(lái)后,就可以向支付寶發(fā)出一次支付請(qǐng)求。

同樣構(gòu)造請(qǐng)求數(shù)據(jù):

//業(yè)務(wù)詳細(xì)只需要攜帶步驟2的token即可。
$req_data = "" . $request_token . "";
//必填

//構(gòu)造要請(qǐng)求的參數(shù)數(shù)組,無(wú)需改動(dòng)
$parameter = array(
    "service" => "alipay.wap.auth.authAndExecute",
    //  合作者身份(partner ID)
    "partner" => trim($this->alipay_config["partner"]),
    //  簽名類型
    "sec_id" => trim($this->alipay_config["sign_type"]),
    //  和步驟2一致
    "format"    => $this->format,
    "v" => $this->v,
    "req_id"    => $this->req_id,
    //  業(yè)務(wù)詳細(xì)參數(shù)
    "req_data"  => $req_data,
    //  字符集,一般為utf8.
    "_input_charset"    => trim(strtolower($this->alipay_config["input_charset"]))
);

將這些參數(shù),在頁(yè)面中傳送給支付寶即可發(fā)起一次支付請(qǐng)求。

在PHP 中的實(shí)現(xiàn)就是將這些參數(shù),渲染至HTML中,再將HTML中的表單提交即可。

到此,網(wǎng)頁(yè)版的支付寶支付完成整個(gè)流程。

支付結(jié)果異步通知

在上面,我們看到有兩個(gè)參數(shù)傳給了支付寶:

call_back_url: 交易成功后,支付寶頁(yè)面上“返回到商家頁(yè)面”的地址(同步回調(diào))

notify_url: 交易狀態(tài)變更后,支付寶通知網(wǎng)站的回調(diào)地址(異步通知)

對(duì)于手機(jī)網(wǎng)站支付產(chǎn)生的交易,支付寶會(huì)根據(jù)原始支付API中傳入的異步通知地址notify_url,通過(guò)POST請(qǐng)求的形式將支付結(jié)果作為參數(shù)通知到商戶系統(tǒng)。

對(duì)于App支付產(chǎn)生的交易,支付寶會(huì)根據(jù)原始支付API中傳入的異步通知地址notify_url,通過(guò)POST請(qǐng)求的形式將支付結(jié)果作為參數(shù)通知到商戶系統(tǒng)。

支付寶異步通知官方文檔中寫的比較清楚,什么時(shí)候出發(fā)通知,返回什么參數(shù),注意事項(xiàng)都有,開(kāi)發(fā)者可以根據(jù)自己的情況查看具體信息。

驗(yàn)簽步驟可以移步至這里

這里就簡(jiǎn)單的用手上的項(xiàng)目舉例說(shuō)明,支付寶通知后,后臺(tái)是如何進(jìn)行驗(yàn)簽和處理訂單。

public function app_notifyOp(){
    $payment_api = $this->_get_payment_api();
    $payment_config = $this->_get_payment_config();
    // 支付寶是用POST方式發(fā)送通知信息
    $callback_info = $payment_api->getNotifyInfoApp($_POST);
    if($callback_info) {
        //驗(yàn)證成功
        if ($callback_info["order_state"]) {
            // 如果是支付成功則改變訂單狀態(tài)
            $result = $this->_update_order($callback_info["out_trade_no"], $callback_info["trade_no"]);
        }else{
            // 如果是退款成功則修改退訂的相關(guān)狀態(tài)
            $result = $this->_app_refund($callback_info["out_trade_no"], $callback_info["trade_no"], $callback_info["refund_fee"]);
        }
        if($result["state"]) {
            echo "success";die;
        }
    }
    //驗(yàn)證失敗
    echo "fail";die;
}

獲取支付寶通知數(shù)據(jù)
支付寶異步通知是POST請(qǐng)求,返回的數(shù)據(jù)結(jié)構(gòu)如下:

{
    "total_amount": "31.00",
    "buyer_id": "ID",
    "trade_no": "TRADE_NO",
    "body": "pay_sn:580546601841783375",
    "notify_time": "2017-04-27 09:50:59",
    "subject": "580546601841783375",
    "sign_type": "RSA",
    "buyer_logon_id": "ID",
    "auth_app_id": "APPID",
    "charset": "utf-8",
    "notify_type": "trade_status_sync",
    "invoice_amount": "31.00",
    "out_trade_no": "580546601841783375_r",
    "trade_status": "TRADE_SUCCESS",
    "gmt_payment": "2017-04-27 09:50:58",
    "version": "1.0",
    "point_amount": "0.00",
    "sign": "SIGNATURE",
    "gmt_create": "2017-04-27 09:50:58",
    "buyer_pay_amount": "31.00",
    "receipt_amount": "31.00",
    "fund_bill_list": "[{"amount":"31.00","fundChannel":"ALIPAYACCOUNT"}]",
    "app_id": "APPID",
    "seller_id": "SELLERID",
    "notify_id": "8414394a1190f25edbbec9ba4b98642mem",
    "seller_email": "YOUR_ALIPAY_ACCOUNT"
}

驗(yàn)簽數(shù)據(jù)
驗(yàn)簽需要支付寶的公鑰

驗(yàn)簽和簽名的流程是一樣的,都是將所有除了 sign 以外的參數(shù),進(jìn)行字典排序,并以 key=value 的形式以 & 符號(hào)拼成字符串,再使用密鑰進(jìn)行簽名,將得到的簽名與支付寶返回的簽名進(jìn)行對(duì)比,完成驗(yàn)簽過(guò)程。

function getSignVeryfy($para_temp, $sign) {
    //除去待簽名參數(shù)數(shù)組中的空值和簽名參數(shù)
    $para = paraFilter($para_temp);
    
    //對(duì)待簽名參數(shù)數(shù)組排序
    $para = argSort($para);

    //把數(shù)組所有元素,按照“參數(shù)=參數(shù)值”的模式用“&”字符拼接成字符串
    $prestr = createLinkstring($para);
    $prestr = htmlspecialchars_decode($prestr);
    $isSgin = false;
    switch (strtoupper(trim($this->alipay_config["sign_type"]))) {
        case "MD5" :
            $isSgin = md5Verify($prestr, $sign, $this->alipay_config["key"]);
            break;
        case "RSA" :
            $isSgin = rsaVerify($prestr, trim($this->alipay_config["ali_public_key_path"]), $sign);
            break;
        case "0001" :
            $isSgin = rsaVerify($prestr, trim($this->alipay_config["ali_public_key_path"]), $sign);
            break;
        default :
            $isSgin = false;
    }
    logResult($log);
    
    return $isSgin;
}

但是這里有個(gè)坑,就是返回?cái)?shù)據(jù)中的 fund_bill_list 是經(jīng)過(guò)html轉(zhuǎn)義的(如例子中的數(shù)據(jù): [{"amount":"31.00","fundChannel":"ALIPAYACCOUNT"}]),如果直接使用該參數(shù)進(jìn)行簽名,則會(huì)導(dǎo)致簽名失敗。這里就需要將字符串轉(zhuǎn)義了: [{"amount":"31.00","fundChannel":"ALIPAYACCOUNT"}] ,用轉(zhuǎn)義后的參數(shù)值進(jìn)行簽名,通過(guò)校驗(yàn)。

更改訂單狀態(tài)

驗(yàn)簽完畢后,后臺(tái)就可以根據(jù)實(shí)際情況進(jìn)行訂單狀態(tài)的更改。

完畢

祝各位程序猿在開(kāi)發(fā)支付寶支付時(shí)不再有坑,也希望支付寶在后續(xù)的更新中不再埋雷。

文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請(qǐng)注明本文地址:http://m.hztianpu.com/yun/22931.html

相關(guān)文章

  • 支付開(kāi)發(fā)填坑記之微信支付

    摘要:前者集成在中,后者主要是為微信用戶提供了另一種支付方式需要在微信的內(nèi)置瀏覽器中打開(kāi)頁(yè)面,再調(diào)起微信支付。步驟商戶后臺(tái)收到用戶支付單,調(diào)用微信支付統(tǒng)一下單接口。拿到所有參數(shù)后,就可以在頁(yè)面中發(fā)起微信支付的請(qǐng)求了。 微信支付,支持的支付方式比較多:有掃碼支付,刷卡支付,APP支付和公眾號(hào)支付。其中,APP和網(wǎng)站上最常用的就是APP支付和公眾號(hào)支付。前者集成在APP中,后者主要是為微信用戶提...

    zhunjiee 評(píng)論0 收藏0
  • 支付小程序爬坑記支付與微信小程序的區(qū)別。

    摘要:上線時(shí)間問(wèn)題發(fā)布審核時(shí)間,微信小時(shí)內(nèi)會(huì)審核完成,但是支付寶官方公示是上線審核需要三到五個(gè)工作日,據(jù)親測(cè),實(shí)際支付寶審核印版不會(huì)超過(guò)小時(shí),但是支付寶的審核相比較微信真的很嚴(yán)格。 前言: 最近一個(gè)月接收一個(gè)支付寶小程序項(xiàng)目,并進(jìn)行原生開(kāi)發(fā),現(xiàn)將遇到的問(wèn)題,爬過(guò)的坑給大家進(jìn)行分享,希望讀者可以少走彎路,以下介紹的內(nèi)容將從大方面到細(xì)節(jié)進(jìn)行展開(kāi)。 廢話少言,直接開(kāi)始步入正題 ①:上傳、發(fā)布問(wèn)...

    WilsonLiu95 評(píng)論0 收藏0
  • ionic 旅途-- 一起來(lái)填坑

    摘要:在中巧用解決跳轉(zhuǎn)到第三方平臺(tái)時(shí)不能回調(diào)的問(wèn)題比如支付在開(kāi)發(fā)中遇到不少的坑,絕大部分解決了但是在我們的中如果跳轉(zhuǎn)到第三方網(wǎng)站上時(shí),那么問(wèn)題來(lái)了此時(shí)我們的是不能監(jiān)聽(tīng)到你在其它網(wǎng)站上的事件的,所以當(dāng)你想要回退到我們自己上時(shí)請(qǐng)緊握你的蛋小編在開(kāi)發(fā)這 在ionic中巧用iframe解決跳轉(zhuǎn)到第三方平臺(tái)時(shí)不能回調(diào)的問(wèn)題-比如支付 在ionic開(kāi)發(fā)中遇到不少的坑,絕大部分解決了但是在我們的app...

    qieangel2013 評(píng)論0 收藏0
  • 使用vue開(kāi)發(fā)微信公眾號(hào)下SPA站點(diǎn)的填坑之旅

    摘要:原文見(jiàn)我的博客,點(diǎn)擊進(jìn)入使用開(kāi)發(fā)微信公眾號(hào)下站點(diǎn)的填坑之旅本文為我創(chuàng)業(yè)過(guò)程中,開(kāi)發(fā)項(xiàng)目的填坑之旅。作為一個(gè)技術(shù)宅男,我的項(xiàng)目是做一個(gè)微信公眾號(hào),前后端全部自己搞定,不浪費(fèi)國(guó)家一分錢。 原文見(jiàn)我的博客,點(diǎn)擊進(jìn)入使用vue開(kāi)發(fā)微信公眾號(hào)下SPA站點(diǎn)的填坑之旅 本文為我創(chuàng)業(yè)過(guò)程中,開(kāi)發(fā)項(xiàng)目的填坑之旅。作為一個(gè)技術(shù)宅男,我的項(xiàng)目是做一個(gè)微信公眾號(hào),前后端全部自己搞定,不浪費(fèi)國(guó)家一分錢^_^。 ...

    yeyan1996 評(píng)論0 收藏0
  • 使用 vue2.0 開(kāi)發(fā)微信公眾號(hào)下前后端分離的SPA站點(diǎn)的填坑之旅

    摘要:目前正在寫一個(gè)微信公眾號(hào)的小項(xiàng)目,記錄一下遇到的問(wèn)題和解決方法主要是前端。前端提交時(shí)使用,在后端再取出對(duì)應(yīng)的微信支付看了下文檔,以前是需要用喚起支付,而現(xiàn)在則是把微信內(nèi)置到了微信的瀏覽器中。 目前正在寫一個(gè)微信公眾號(hào)的小項(xiàng)目,記錄一下遇到的問(wèn)題和解決方法(主要是前端)。內(nèi)容持續(xù)更新中~ 主要實(shí)現(xiàn) 前后端分離前端為 SPA 單頁(yè)面使用微信的JSSDK微信支付 技術(shù)方案 后端使用 php ...

    afishhhhh 評(píng)論0 收藏0

發(fā)表評(píng)論

0條評(píng)論

chanjarster

|高級(jí)講師

TA的文章

閱讀更多
最新活動(dòng)
閱讀需要支付1元查看
<