码迷,mamicode.com
首页 > 其他好文 > 详细

支付宝代签约当面付支付

时间:2019-05-20 17:11:49      阅读:231      评论:0      收藏:0      [点我收藏+]

标签:device   index   get   init   var   lock   sed   平台   rip   

技术图片

?:官方文档

?:调用接口

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>

 

支付宝代签约当面付支付

标签:device   index   get   init   var   lock   sed   平台   rip   

原文地址:https://www.cnblogs.com/zyulike/p/10886389.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!