支付宝支付

一 流程

1 支付宝支付:
    -商户号:营业执照(登录的沙箱环境的商家)
    -客户:我们客户
2 生成公钥和私钥:公钥配置到支付宝网站上----》支付宝公钥
    -担心私钥不安全(不要把公钥私钥直接放在代码中,而是放在服务器上)
     -支付宝支付(官方没有sdk,只提供了api),我们用了第三方,担心有问题
3 支付流程
    -用户在前端提交支付---》后端要生成订单(未支付)---》生成支付宝付款链接---》返回前端---》get请求支付链接---》支付宝付款页面(扫描付款)---》支付宝收到钱---》get回调到我们网站(展示用户付款成功)-----》post回调(验签)修改订单状态
    -用户刚打开支付链接,你服务挂了,用户付款成功了
        -get回调也回不来了
        -支付宝的post回到,你也收不到(24小时以后,支付宝会推送8次)
            -25小时以内完成8次通知(通知的间隔频率一般是:4m,10m,10m,1h,2h,6h,15h)     

二 文档链接

1 支付宝API六大接口

https://docs.open.alipay.com/270/105900/

2 支付宝工作流程

https://docs.open.alipay.com/270/105898/

3 支付宝8次异步通知机制

https://docs.open.alipay.com/270/105902/

4 沙箱环境下实名认证

https://openhome.alipay.com/platform/appDaily.htm?tab=info

5 电脑网站支付API

https://docs.open.alipay.com/270/105900/

6 完成RSA密钥生成

https://docs.open.alipay.com/291/105971

7 在开发中心的沙箱应用下设置应用公钥

填入生成的公钥文件中的内容

8 Python支付宝开源框架

https://github.com/fzlee/alipay

pip install python-alipay-sdk --upgrade

9 公钥私钥设置

"""
# alipay_public_key.pem
-----BEGIN PUBLIC KEY-----
支付宝公钥
-----END PUBLIC KEY-----

# app_private_key.pem
-----BEGIN RSA PRIVATE KEY-----
用户私钥
-----END RSA PRIVATE KEY-----
"""

10 支付宝链接

开发:https://openapi.alipay.com/gateway.do

沙箱:https://openapi.alipaydev.com/gateway.do

三. 支付宝接入入门

 1 流程

'''
# 支付宝开放平台
    1. 服务范围(自研开发服务) -> 实名认证
    2. 控制台 -> 我的应用 -> 创建应用 -> 网页&移动应用 -> 支付接入 -> 应用名称 -> 应用图标 -> 
        1) 移动应用 -> 应用平台 -> Bundle ID ...
        2) 网页应用 (不成功. 需要使用营业执照) -> 网址url -> 简介             
            注意: 先选择功能再审核
            能力列表:添加能力 -> 支付能力 -> 电脑网站支付  
            开发设置:
                加签管理 -> 公钥 -
                支付宝网关
                应用网关
                授权回调地址
    3. 文档 -> 网页 & 移动应用 接口文档能力列表
        1) 开放能力: 
            支付能力 -> 电脑网站支付
        2) 产品介绍: 
            注意: 会跳到支付宝的页面, 支付宝会有一个get页面回调, post数据返回后端回调
            费率: 0.6%
        3) 快速接入:
            SDK快速接入: python没有, 只能使用API开发
            支付流程: 下单 -> 商户系统 -> 支付宝 -> 回调(get显示订单结果, post修改订单状态)
        4) 支付API:
            公共请求参数
            请求参数
                订单号   out_trade_no
                总金额   total_amount
                订单标题  subjet
            公共响应参数
                支付宝交易号  trade_no
                我们的订单号  out_trade_no
        5) GitHub开源SDK
            pip install python-alipay-sdk
            
            
# 支付宝沙箱环境                
    1. 沙箱环境地址: https://openhome.alipay.com/platform/appDaily.htm
    2. 沙箱应用:
        APPID
        支付宝网关: 地址中带dev表示沙箱环境, 不带表示正式环境
        加密方式: 使用支付宝提供的密钥生成(支付宝开放平台组助手). 
            之前是xx.jar包, 现在变成xx.exe软件.  需要生成公钥和私钥
            将自己的公钥配置在支付宝中, 支付宝会生成一个支付宝的公钥.
    3. 项目中使用:
        注释 .read这里是操作文件的
        app_private_key_string   配置自己的私钥
        alipay_public_key_string 配置支付宝的公钥
        注意: 不能有空格
        
        AliPay类中的参数配置: 
            APPID配置 沙箱环境的APPID
            sign_type 配置自己的 RSA2
            debug=False测试环境, True正式环境
        
        alipay.api_alipay_trade_page_pay中的参数配置:
            out_trade_no 配置自己的商品订单号
            total_amount 总金额
            subject 订单标题
            return_url  回调地址 (注意: 需要使用公网地址)
            notify_url  回调地址 
            支付宝网关 + order_string =>  生成连接地址
            提示: 生成连接地址打开会出现钓鱼网站异常
    
    4. 解决提示钓鱼问题:  浏览器里面有多个窗口
        沙箱环境存在的问题, 如果出现问题, 开无痕窗口即可, 付完之后会回调到之前配置的return_url中配置的网页
        支付宝沙箱环境充值:
            控制台 -> 沙箱账号 -> 账户余额            

# 支付宝公私密钥生成, sdk使用
    支付宝开放平台组助手使用:  生成公私钥
        支付宝开放平台下载:https://ideservice.alipay.com/ide/getPluginUrl.htm?clientType=assistant&platform=win&channelType=WEB
        密钥长度: RSA2
        密钥格式: PKCS1
        生成即可
            
    GitHub开源SDK: 
        支付宝开源框架地址: https://github.com/fzlee/alipay
        pip install python-alipay-sdk
        
# 拓展: 
    xx.apk 如果apk使用QQ 或者 微信传送, 它会改名, 再后面加个.1 -> xx.apk.1. 目的就是防止恶意软件. 
     如果你需要安装, 只需要将后缀名修改过来即可        
'''
原文地址:https://www.cnblogs.com/xupengjun/p/14301608.html