支付寶代簽約當面付支付


☞:官方文檔

☞:調用接口

alipay.trade.create(統一收單交易創建接口)

 

首先創建應用  步驟:螞蟻金服開放平台-->開發中心-->第三方應用

 

 

 

 

開發配置

 

 

添加功能(當面付,獲取會員信息,第三方應用授權)

 

 

 

首先:讓簽約商戶對第三方應用授權

API接口:https://docs.open.alipay.com/20160728150111277227/intro

 

授權成功之后拿到商戶ID 和 授權token 

也可以調用接口換取:https://docs.open.alipay.com/api_9/alipay.open.auth.token.app/   

 

 

 

支付步驟:

1.獲取支付寶用戶的唯一userId

通過獲取會員信息拿到auth_code換取授權訪問令牌

 

2.獲取支付寶交易號

const AlipaySdk = require('alipay-sdk').default;
const AlipayFormData = require('alipay-sdk/lib/form').default;


    // 支付寶支付
    async aliPay(ctx) {

       let privateKey = path.join(this.config.baseDir, 'app/alipayKey', 'private.pem');
        let publicKey = path.join(this.config.baseDir, 'app/alipayKey','public.pem');

                const alipaySdk = new AlipaySdk({
                    appId: zfbServiceAppId.par_content,
                    privateKey: fs.readFileSync(privateKey, 'ascii'),  // 私鑰
                    alipayPublicKey: fs.readFileSync(publicKey, 'ascii'),  // 支付寶公鑰
                    signType: 'RSA2',
                    charset: 'utf-8'
                })

                const formData = new AlipayFormData();
                formData.setMethod('get');
                formData.addField('notifyUrl', url+ '/api/h5/zfbPay/callBack');
                formData.addField('appAuthToken', shop.sho_zfb_authToken);  // 商戶授權token
                formData.addField('bizContent', {
                    outTradeNo: out_trade_no,  // 訂單號
                    totalAmount: money,      // 支付金額
                    subject: '支付到賬',
                    body: 'rhmzf',
                    buyerId: buyer_id,      // 支付用戶 userId
                    extend_params: {
                        sys_service_provider_id: shop.sho_zfb_pid  // 商戶ID
                    }
                });

                try {
                    const result = await alipaySdk.exec(
                        'alipay.trade.create',
                        {},
                        {
                            formData: formData,
                            validateSign: true
                        },
                    );

                    /**
                     * 獲取支付寶交易號
                     */
                    var oauth2Result = await ctx.curl(result, {
                        method: 'GET',
                        dataType: 'json',
                    });

                    params = oauth2Result;

                } catch (err) {
                    console.log('報錯了   ' + JSON.stringify(err))
                }

        
    }

 

 

3.引入支付寶jsAPI (支付寶H5開發文檔

通過支付寶交易號喚起支付

<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <meta http-equiv="X-UA-Compatible" content="ie=edge">
    <title>Document</title>
    <script src="https://gw.alipayobjects.com/as/g/h5-lib/alipayjsapi/3.1.1/alipayjsapi.min.js"></script>
</head>

<body>
    <h1>點擊以下按鈕喚起收銀台支付</h1>
    <!-- 引入 -->
    <!-- 按鈕 -->
    <button id="J_btn" class="btn btn-default">支付</button>

    <script> 
        // 觸發事件
        var btn = document.querySelector('#J_btn');
        btn.addEventListener('click', function () {
            ap.tradePay({
                tradeNO: "<%-tradeNO%>" // 支付寶交易號
            }, function (res) {
                ap.alert(res.resultCode);
                // 你支付成功后要處理的邏輯
            });
        });
    </script>
</body>

</html>

 


免責聲明!

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



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