• 支付宝支付


    python支付宝支付


    1.1 支付宝介绍

      1、支付宝开发网址

    支付宝开放平台: https://open.alipay.com/platform/home.htm
    支付宝沙箱环境: https://openhome.alipay.com/platform/appDaily.htm?tab=info
    支付宝开发者文档:https://openhome.alipay.com/developmentDocument.htm
    电脑网站支付流程:https://docs.open.alipay.com/270
    生成签名:https://docs.open.alipay.com/291/106103/
    python-alipay-adk : https://github.com/fzlee/alipay/blob/master/README.zh-hans.md
    

    1.2 使用python对接支付宝

       直接使用第三方SDK(python-alipay-sdk): https://github.com/fzlee/alipay/blob/master/README.zh-hans.md

      1、登录开发者中心,熟悉"电脑网站支付"整体流程

    # 访问"支付宝开发平台"登录,可以访问开发者中心
    https://open.alipay.com/platform/home.htm
    # 可以参考"电脑网站支付" 熟悉电脑支付整体流程
    https://docs.open.alipay.com/270/105899/
    

      2、第一步:创建应用(这里使用沙箱环境测试)

        1)沙箱环境说明

    1. 线上环境需要创建应用,因为我们不是企业,没有资质,所以只能申请沙箱环境

      单来讲沙箱环境就是给开发者使用的测试环境

              3. 沙箱环境地址:https://openhome.alipay.com/platform/appDaily.htm?tab=info

         img

    • 公钥加密、私密解密

      2、按照官方要求生成秘钥

           生成秘钥参考官网:https://docs.open.alipay.com/291/105971 

          img

     3、把生成的app公钥粘贴到沙箱环境的app中

         沙箱环境地址:https://openhome.alipay.com/platform/appDaily.htm?tab=info

          1)粘贴app公钥到沙箱环境中

         img

         2)支付宝公钥一会再程序中要使用

          img

    回到顶部

    1.3 使用 python-alipay-sdk 支付&查询支付结果

     1、说明

    1. 阿里官方没有提供python对接支付的sdk,但是python库中有非官方的sdk包可以使用

      python-alipay-adk : https://github.com/fzlee/alipay/blob/master/README.zh-hans.md

      1. 使用起来非常简单,只要传入几个必要的参数就可以完成

        由于支付对安全要求很高,所以要理解对接支付宝安全的流程:公钥加密、私钥解密 这八个字

     2、上代码

    # 依赖包
    pip install Crypto 
    pip install pycryptodome
    pip install python-alipay-sdk
    
    • alipay_test.py
    from alipay import AliPay
    
    # 沙箱环境中 app 私钥
    app_private_key_string = open('app_private_key.pem').read()
    # 支付宝公钥
    alipay_public_key_string = open( 'alipay_public_key.pem').read()
    
    
    def get_alipay_url():
        alipay = AliPay(
            appid="2016101800716047",  # 沙箱appid
            app_notify_url=None,  # 默认回调url
            app_private_key_string=app_private_key_string,
            # 支付宝的公钥,验证支付宝回传消息使用,不是你自己的公钥,
            alipay_public_key_string=alipay_public_key_string,
            sign_type="RSA",  # RSA 或者 RSA2
            debug=True,  # 默认False,我们是沙箱,所以改成True(让访问沙箱环境支付宝地址)
        )
        # 调用支付接口
        # 电脑网站支付,需要跳转到https://openapi.alipay.com/gateway.do? + order_string
        order_string = alipay.api_alipay_trade_page_pay(
            out_trade_no="201611124",  # 订单id,应该从前端获取
            total_amount=str(0.01),  # 订单总金额
            subject="测试阿里云付款",  # 付款标题信息
            return_url=None,  # 付款成功回调地址(可以为空)
            notify_url=None  # 付款成功后异步通知地址(可以为空)
        )
        pay_url = "https://openapi.alipaydev.com/gateway.do?" + order_string
        print(pay_url)  # 将这个url复制到浏览器,就会打开支付宝支付页面
    
    
    def query_pay():
        alipay = AliPay(
            appid="2016101800716047",  # 沙箱appid
            app_notify_url=None,  # 默认回调url
            app_private_key_string=app_private_key_string,
            # 支付宝的公钥,验证支付宝回传消息使用,不是你自己的公钥
            alipay_public_key_string=alipay_public_key_string,
            sign_type="RSA",  # RSA 或者 RSA2
            debug=True,  # 默认False,我们是沙箱,所以改成True(让访问沙箱环境支付宝地址)
        )
        trade_query = alipay.api_alipay_trade_query(
            out_trade_no=20161112,  # 上面生成支付码页面时传入的商品订单号
            trade_no=None
        )
        print(trade_query)
    
    
    if __name__ == '__main__':
        get_alipay_url()
        query_pay()
    
    
    '''
    trade_query 查询用户付款信息
    返回信息详情请看官方:https://docs.open.alipay.com/api_1/alipay.trade.query
    {
        "code": "10000",    # code=10000代表支付成功
        "msg": "Success",
        "buyer_logon_id": "foq***@sandbox.com",
        "buyer_pay_amount": "0.00",
        "buyer_user_id": "2088102180228981",
        "buyer_user_type": "PRIVATE",
        "invoice_amount": "0.00",
        "out_trade_no": "20161112",
        "point_amount": "0.00",
        "receipt_amount": "0.00",
        "send_pay_date": "2020-02-20 21:20:48",
        "total_amount": "0.01",
        "trade_no": "2020022022001428981000087565",
        "trade_status": "TRADE_SUCCESS"  
    }
    '''
    
    alipay_test.py
    
    • alipay_public_key.pem 支付宝公钥
    -----BEGIN PUBLIC KEY-----
    MIGfM*******************************f7TcZ32oWpwIDAQAB
    -----END PUBLIC KEY-----
    
    • app_private_key.pem app私钥
    -----BEGIN RSA PRIVATE KEY-----
    MIICXAIBAAKBgQCqHFH***************************
    ************************u8d+DFk=
    -----END RSA PRIVATE KEY-----
    

        img

        img

      3、支付宝支付流程


  • 相关阅读:
    《PHP面试笔试真题库》——PHP面试的好帮手
    PHP面试常考之会话控制
    PHP面试常考内容之Memcache和Redis(2)
    PHP面试常考内容之Memcache和Redis(1)
    PHP面试常考内容之面向对象(3)
    SQL全表扫描优化基础知识
    Windows CMD命令大全
    Asp.net 获取客户端的信息
    sql日期创建
    sql语句去掉前面的0(前导零,零前缀)
  • 原文地址:https://www.cnblogs.com/chao460/p/13818454.html
Copyright © 2020-2023  润新知