不做大哥好多年 不做大哥好多年
首页
  • MySQL
  • Redis
  • Elasticsearch
  • Kafka
  • Etcd
  • MongoDB
  • TiDB
  • RabbitMQ
  • 01.GO基础
  • 02.面向对象
  • 03.并发编程
  • 04.常用库
  • 05.数据库操作
  • 06.Beego框架
  • 07.Beego商城
  • 08.GIN框架
  • 09.GIN论坛
  • 10.微服务
  • 01.Python基础
  • 02.Python模块
  • 03.Django
  • 04.Flask
  • 05.SYL
  • 06.Celery
  • 10.微服务
  • 01.Java基础
  • 02.面向对象
  • 03.Java进阶
  • 04.Web基础
  • 05.Spring框架
  • 100.微服务
  • Docker
  • K8S
  • 容器原理
  • Istio
  • 数据结构
  • 算法基础
  • 算法题分类
  • 前置知识
  • PyTorch
  • 01.Python
  • 02.GO
  • 03.Java
  • 04.业务问题
  • 05.关键技术
  • 06.项目常识
  • 10.计算机基础
  • Linux基础
  • Linux高级
  • Nginx
  • KeepAlive
  • ansible
  • zabbix
  • Shell
  • Linux内核

逍遥子

不做大哥好多年
首页
  • MySQL
  • Redis
  • Elasticsearch
  • Kafka
  • Etcd
  • MongoDB
  • TiDB
  • RabbitMQ
  • 01.GO基础
  • 02.面向对象
  • 03.并发编程
  • 04.常用库
  • 05.数据库操作
  • 06.Beego框架
  • 07.Beego商城
  • 08.GIN框架
  • 09.GIN论坛
  • 10.微服务
  • 01.Python基础
  • 02.Python模块
  • 03.Django
  • 04.Flask
  • 05.SYL
  • 06.Celery
  • 10.微服务
  • 01.Java基础
  • 02.面向对象
  • 03.Java进阶
  • 04.Web基础
  • 05.Spring框架
  • 100.微服务
  • Docker
  • K8S
  • 容器原理
  • Istio
  • 数据结构
  • 算法基础
  • 算法题分类
  • 前置知识
  • PyTorch
  • 01.Python
  • 02.GO
  • 03.Java
  • 04.业务问题
  • 05.关键技术
  • 06.项目常识
  • 10.计算机基础
  • Linux基础
  • Linux高级
  • Nginx
  • KeepAlive
  • ansible
  • zabbix
  • Shell
  • Linux内核
  • python基础

  • python模块

  • django

  • flask

  • SYL

    • day01

    • day02

    • day03

    • day04

    • day05

    • day06

    • day07

    • day08

      • 00.作业
      • 01.商品模块表结构分析
      • 02.创建商品APP
      • 03.通过课程查询商品信息
      • 04.支付宝支付原理
        • 05.创建订单并生成支付链接接口
        • 06.订单支付回调接口
      • day09

      • day10

      • day11

      • day12

    • Celery

    • 微服务

    • python
    • SYL
    • day08
    xiaonaiqiang
    2021-03-10
    目录

    04.支付宝支付原理

    # 1.支付宝支付流程

    https://www.lanqiao.cn/vip

    # 2.新建支付宝应用

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

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

    • 沙箱环境说明
      • 线上环境需要创建应用,因为我们不是企业,没有资质,所以只能申请沙箱环境
      • 简单来讲沙箱环境就是给开发者使用的测试环境
      • 沙箱环境地址:https://openhome.alipay.com/platform/appDaily.htm?tab=info

    • 公钥加密、私钥解密

    # 2.2 按照官方要求生成秘钥

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

    • 一定要存储两个东西
      • 支付宝公钥:我发送信息给支付宝,使用支付宝公钥进行加密
      • app私钥(我自己生成的):支付宝给我发送的信息是用我刚刚上传的app公钥加密,只有我自己的私钥可以解密

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

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

    # 2.4 查看沙箱环境账号和密码

    # 买家信息
    买家账号foqhub3270@sandbox.com
    登录密码111111
    支付密码111111
    
    # 商家账号uqqgmd6602@sandbox.com
    商户UID2088102180143385
    登录密码111111
    
    1
    2
    3
    4
    5
    6
    7
    8

    # 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
    
    1
    2
    3
    4
    5
    6

    # 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-----
    MIIEpAIBAAKCAQEAxXRdL+ALzW4AW6ndW5/ZD44ppPsfm9If/oc3pc1gmqjT7z73swlUhotEPZnLsk8hqdEoR9fg/+0XijuJQqnU+CU3pptdXgkIcyq/fyvpRgkX2OA9G7CHEveZ97leaOG2RI1i2JvgUiM+O2LiDAAbTWtk8Chx+j2Z+R5s22zgI/y+45bcMht/YDxAbmgDFkBq32PyHlu3gTjoB7SqBZ8ecU8AKBxSjUPB3t5ls4T2P3Xy/ER2/PFcnh0vZGQsZRbHQ6wS1Jsql/3Wu1+tvHvIiKKXPGUcZe7czfqfwcIwVPrntEdPYC2JUSzC94vFwcMNAlai/aiWDCc4jDt1W7oetwIDAQABAoIBAQDBNBESjUk/I0laZ6Vex9PeMp5w/f95umrv5GMA6yqBanyldplsJ877Lz4AgIId4Ovxe+TMF2HjSZxk98hg4Eiw3cnMTe1X28LW3Zcu2kqQ6sjYvuFMPLiOSJPxHwJP4bs07Jsxk6Q0+qMj/KduUpRkdpb3nruXvbrxVWHyel//FM6jqCvxxFWBhCikDjNPZEgPJa+at1viN/u1eOoEO5/SBkVYePF6O3Nx8rR20nG2KfvvLkfWfBvVnIWdmkUmqMX2EIXF+af66FlcgWTszvkxpIS3KnHGK5rHe2+uTuJp57MY0WnJq5v6vKwhOADvNiwLg2dwLDSq9SRJzWnsm+RBAoGBAP0wA92l9IlaggLD8WCFeVICiNWGlA2jSYfindMXX9rf6xo8hSr/YWfyxu6guBqvo7b/onG7DwyrDOvlq7X/kQNbtxkis/oYBeWssF6ab10CtFuF1wUP5jXoaAMUIy2xrXcmO5bJsvTE6O9VZophlSo0uvXxBJRSgqfEo0wEET6HAoGBAMel3KitQQArxiD8SHDE6q1hb5elIDTyYiJI65EagWO41xcBMduu0tjZyoTbL6MWKHCxxXuOsWpQjtuF8FVesDMBBpC9VLO4IvnQDZb7lKXWgEnMc4gckL+KNzgkIzYNs1jW6IYfcY82iP22AoH3xbnaYI56sH2lARUZcUNe/3pRAoGBAPWvYSD1SEz8yco7L4A1JRwCn5tsA0EUoWa97d6IARkYTkBgV+z4ciH3gTjQNraWl2wdthlcpmbpmRlT/gMWozY6CnvWpATcyOQtZdv3SndcB34EazlbS04mXsAWC2js0GIddJeG1CQW695K5b0EokWZc47yuTngsy5vbvJ1w/IDAoGAW5jpaCo1DFMJD9Evmy19ThbKEBUedaxPAdPa4DP88Te410EhEt1et0cU92dor7ZWz32AUXPiShizslv9K+3JgV0TGg0Dc4Ej6uFdmsvKI1wKd9FpoCUa9AYB16wcy4v1oOjYvdBnVYF70ItVEzQOb3qVmkkH+F1f5cJKiNJo/EECgYA1OZn4LqvFsK/WG23FFcW6wvGOKjHgAfwENILiHBjHNESYBtwnRaV0Vgikz3tfC5qehmuJT+N+bjsqsqaM3ZR50/xqWx6qGenA5KbGyMkWMu4LFAuqGKz1ocH2kjM+jc0eNRzABj7A9ATx+1nfiKD0ehc6lrXIp71rItEuKxyO8w==
    -----END RSA PRIVATE KEY-----
    
    1
    2
    3

    # 3.4 alipay_public_key.pem 支付宝公钥

    -----BEGIN PUBLIC KEY-----
    MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQDIgHnOn7LLILlKETd6BFRJ0GqgS2Y3mn1wMQmyh9zEyWlz5p1zrahRahbXAfCfSqshSNfqOmAQzSHRVjCqjsAw1jyqrXaPdKBmr90DIpIxmIyKXv4GGAkPyJ/6FTFY99uhpiq0qadD/uSzQsefWo0aTvP/65zi3eof7TcZ32oWpwIDAQAB
    -----END PUBLIC KEY-----
    
    1
    2
    3

    # 3.5 测试生成支付链接

    # -*- 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="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="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="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"  
    }
    '''
    
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    • 生成链接地址如下
    https://excashier.alipaydev.com/standard/auth.htm?payOrderId=79d3a024f4904f58af434843b945132f.00
    
    1
    上次更新: 2024/3/13 15:35:10
    03.通过课程查询商品信息
    05.创建订单并生成支付链接接口

    ← 03.通过课程查询商品信息 05.创建订单并生成支付链接接口→

    最近更新
    01
    04.数组双指针排序_子数组
    03-25
    02
    08.动态规划
    03-25
    03
    06.回溯算法
    03-25
    更多文章>
    Theme by Vdoing | Copyright © 2019-2025 逍遥子 技术博客 京ICP备2021005373号
    • 跟随系统
    • 浅色模式
    • 深色模式
    • 阅读模式