zoukankan      html  css  js  c++  java
  • 02.支付宝沙箱环境注册及使用

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

    支付宝开发网址

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

    1.沙箱环境的创建及使用

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

    公钥加密、私钥解密

    1.2 按照官方要求生成秘钥

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

    • 需要下载工具(windows选上面这个 地球人都知道!)

    • 一定要存储两个东西

      • 支付宝公钥:我发送信息给支付宝,使用支付宝公钥进行加密

      • app私钥(我自己生成的):支付宝给我发送的信息是用我刚刚上传的app公钥加密,只有我

        自己的私钥可以解密

    • 下载相应环境工具并安装后即可使用。

    1.3把生成的app公钥粘贴到沙箱环境的app

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

    1.4 查看沙箱环境账号和密码

    沙箱账号地址:https://openhome.alipay.com/platform/appDaily.htm?tab=account

    #商家信息
    商家账号axxdws3230@sandbox.com
    商户UID2088102181105490
    登录密码111111
    
    
    买家信息
    买家账号uqdgdc2803@sandbox.com
    登录密码111111
    支付密码111111
    用户名称uqdgdc2803
    证件类型身份证(IDENTITY_CARD)
    证件号码973608193303181861
    
    

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


    2.1 app_private_key.pem app私钥

    -----BEGIN RSA PRIVATE KEY-----
    ..................
    -----END RSA PRIVATE KEY-----
    

    2.2 alipay_public_key.pem 支付宝公钥

    -----BEGIN PUBLIC KEY-----
    .........
    -----END PUBLIC KEY-----
    

    2.3测试生成支付链接

    alipay_public_text.py

    # -*- coding: utf-8 -*-
    from alipay import AliPay
    
    # 沙箱环境中 app 私钥
    app_private_key_string = open('app_private_key.pem').read()  # app私钥
    alipay_public_key_string = open('alipay_public_key.pem').read()  # 支付宝公钥
    
    
    def get_alipay_url():
        # 实例化一个alipay对象
        alipay = AliPay(
            appid="2016102600762673",
            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(让访问沙箱环境支付宝地址)
            # config = AliPayConfig(timeout=15), # 可选, 请求超时时间
        )
    
        # 调用支付接口,生成支付链接
        # 电脑网站支付,需要跳转到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="2016102600762673",  # 沙箱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(让访问沙箱环境支付宝地址)
        )
        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()
    
    
    '''
    {
        "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"
    }
    '''
    
    • 生成链接如下
    http://unitradeprod.alipaydev.com/appAssign.htm?alipay_exterface_invoke_assign_target=invoke_cb06f44f1829269133016bba74da9446&alipay_exterface_invoke_assign_sign=_ew_sx_r_w_u_v_b7h_nre%2Fd_ltm1_gddv_gs8_bxro_eif_f1awsc_q_c_fz_a6t_z_cb2iu_q%3D%3D
    
    从小白到大神的蜕变~~
  • 相关阅读:
    DataReader相关知识点⭐⭐⭐⭐⭐
    C# Distanct List集合
    RePlace函数
    DataTable和DataRow和DataColumn ⭐⭐⭐⭐⭐
    scrapy 基础组件专题(八):scrapy-redis 框架分析
    scrapy 基础组件专题(九):scrapy-redis 源码分析
    scrapy 基础组件专题(七):scrapy 调度器、调度器中间件、自定义调度器
    scrapy 基础组件专题(六):自定义命令
    scrapy 基础组件专题(五):自定义扩展
    scrapy 基础组件专题(四):信号运用
  • 原文地址:https://www.cnblogs.com/tjw-bk/p/13823408.html
Copyright © 2011-2022 走看看