• 28.支付宝支付原理


    1.支付宝支付流程

    2. 新建支付宝应用

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

    2.1 第一步:创建应用(使用沙箱环境测试)

    • 公钥加密、私钥解密

    2.2 按照官方要求生成密钥

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

    • 安装支付宝开放平台开发助手

    • 一定要存储两个东西

      • 支付宝公钥:我发送信息给支付宝,使用支付宝公钥进行加密
      • 应用私钥:我自己生成的,支付宝给我发送的信息是用我上传的app公钥加密,只有我 自己的私钥可以解密

    2.3 把生成的应用公钥粘贴到沙箱环境的app中

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

    1. 点击查看支付宝公钥,下面会用

    2.4 查看沙箱环境账号信息

    # 商家信息
    商家账号tuyprl9260@sandbox.com
    登录密码111111
    
    # 买家信息
    买家账号rrkcsk8079@sandbox.com
    登录密码111111
    支付密码111111
    

    3. 测试获取支付宝扫码链接

    3.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
    

    3.2 说明

    • 阿里官方没有提供python对接支付的sdk,但是python库中有非官方的sdk包可以使用
    • python-alipay-adk : https://github.com/fzlee/alipay/blob/master/README.zh-hans.md
    • 使用起来非常简单,只要传入几个必要的参数就可以完成
    • 由于支付对安全要求很高,所以要理解对接支付宝安全的流程: 公钥加密、私钥解密 这八个字

    3.3 app_private_key.pem app私钥

    -----BEGIN RSA PRIVATE KEY-----
    MIIEowIBAAKCAQEAlt0FL8bh/y4gaPR+z5WRLXOVUcvmQIG4KgdbrDjMhnNUjOvcGQFc85d9K1IJASTIsB9EBYCAXnc8Iyti7mMqMbf62nIx8i8x1m4nsWwZpYE5pcG2nCfDHJFksZDSrzNAmHAFyi1fE4TDa5Qc0Fgqo5NjkGQGYWlNgu7VYpj6N2zjHXTPtQ7ULep+ogcoXbm8gBl3WHmeMdUVBXZ42f180qkmvud4XqwLVuuGB71DjlOMmOzHzmZEOspf/V02bvXMYD+BzZU+cB+G5fFwCVv+EGze+dN/mXXy6yNjkMkjiqOBTuNrR5r4L7ds5+eIZ9d2QbEaPRYb0WDlpCqYgshNBwIDAQABAoIBAHJNvdtILf1A/q9m6Bnx8dBlLbKO8cLYRigZ8RxY4KXSBjLLlbSgcsPheKX0/vuN2jyPQ+ODTD/GyZrACbIjElofUoJmWW9s0K7uQUbNZ9UdRwdO8UP5YHxpsMhUuTyjcYLOBaT8oXfRdJsy2m4FDzFmv94r2yW9OkxFFwogbBzHR8Vi3BJH85VnB/yCkCwPGd3fNzm/+4A9G7l6BffAVVPdgrx1h0cPKZ7w1Gx7FAqus9rhV/9vZcYXwsjhIX95DquxI3qtBwnRCWgI1vUcrz8irnR216wvsiy6jcC9w+C+wIhwb2EozpwynQ2y0WQQY2lO84CXXjuF7xFiBvRzHuECgYEA4htixA3GaFXLthd2tAGh25zMgPG7gU+UY2026MmT1KRHez3zaCD2JvzJyFA5Z9DAcz6m2UD2XJ2DCeHN/sNYjJsbI9fatrwTZmeNa9945fd+r0K4pL4E4rD4QhFhFHpG3gxShyEzVJ8CTkwaSRJ7w+z9ojiWkGV2wyv7RqAe97cCgYEAqs8BpgAScsGKc0qDhVV2OH8nN9IR/iKDh+DB8JPeNBTwicAWUDK0zPiUtA2/8E//1m4m6/SJR4aweC1zIMGB0hoeARFViKxhcgNl5zsVMGGNXJavZDTo2e0xJ71T0JtOdV6I/mojRvdKvPiCiuzQikIWamIpAlx2ZOW8MbT+NTECgYEAspe5Amxy+/RQjIqp+vKTGzkVmv/VAAWQipw4U9TsjHgZ8fFz8hqe8xqWcz9SqHqNmDmzZkTWkz7iwwp1QDaiGaVl4YDcw5t4o1lFrh/8iYBcsyg7WfyxNTFdVioOCTOwCDGpegyyU7OpCZk45eDQm2f0yo5x9qn+DZkOx7Ev5K8CgYAZH+n2KPyNtLpQyx0dd7y0AsAaDeRnpVwDmKPuZ1HAB3R6Tq75jPvbSpVVBtC84IeZWwqOmqG2y7EZfFX683vNE9pl/c6/E9whkS5kHOS5ASByBhg2fTHjHGiml8rEXJPl38n24lXeEnID6eoJ1Vu3epEhhN7TYhZoMQLFrQHXgQKBgGzhGflHSghYubtL7xc6N1esDVKk1xWceeW+QgOowb9Sn5IWlwQLFqLxopYSnUB45BRx/O7PuSPkHbxqQS0d3oBPN/BucsLg4modAgJhSXbT1jr7ld1K6Mph98gMTLGPLMxo97jIontvTY200NqKdfAx4l/QfgrbxrXxhavt+5v7
    -----END RSA PRIVATE KEY-----
    

    3.4 alipay_public_key.pem 支付宝公钥

    -----BEGIN PUBLIC KEY-----
    MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAgjwuLp9i1+g7Xuz3ree8ElybqL1iGQWO1bHJGh148lLQYPT+ccyY7YJu/QMiEkRfZ+Wzv6kHA0zyo0+6Jgshn/T3qGQA1tpee3hk5ol+CBSC9rApOUD6piRCwoKTEI47kcigsaV3z3TpqWFPmbNm8uIHhfqXFwqJIVyoF1+0Xjbimu1j/mcfswpg5WdS5UbQ2v8vzQdkqDSvmyON6JoF/SQqHNl1nCaGnJTigPY19+0v867TuUZmI2FcHR9uj2/yEA41ioxQSCa/Q21dxqIkVkSN3+z0k2Ihs/X2oqcYf6B53VuEv090siVO+KRn6YXHRY+WdKHfezs776qlh/B18QIDAQAB
    -----END PUBLIC KEY-----
    

    3.5 alipay_test 测试沙箱环境

    # -*- coding: utf-8 -*-
    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 = AliPay(
            appid="2016102600762786",  # 沙箱appid
            app_notify_url=None, # 默认回调url
            app_private_key_string=app_private_key_string,
            # 支付宝的公钥,验证支付宝回传消息使用,不是你自己的公钥,
            alipay_public_key_string=alipay_public_key_string,
            sign_type="RSA2", # 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="201612226", # 订单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="2016102600762786", # 沙箱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()
    
    
  • 相关阅读:
    2019第17周日
    完成胜过完美
    系统可扩展设计方法之消息队列
    mac下使用brew安装java等应用
    mac下zsh的使用:主题、z命令
    PyCharm中Python代码提示:Shadows name from outer scope
    python垃圾回收杂谈
    Python垃圾回收机制及gc模块详解:内存泄露的例子
    aa
    python的内存回收机制即gc模块讲解
  • 原文地址:https://www.cnblogs.com/fiee/p/13823485.html
Copyright © 2020-2023  润新知