ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

45 支付宝支付(二次封装)

2022-03-03 20:00:25  阅读:234  来源: 互联网

标签:alipay 支付宝 公钥 封装 45 ----- KEY com


支付宝支付

一、入门

"""
1)支付宝API:六大接口
https://docs.open.alipay.com/270/105900/

2)支付宝工作流程(见下图):
https://docs.open.alipay.com/270/105898/

3)支付宝8次异步通知机制(支付宝对我们服务器发送POST请求,索要 success 7个字符)
https://docs.open.alipay.com/270/105902/
"""
# 1、在沙箱环境下实名认证:https://openhome.alipay.com/platform/appDaily.htm?tab=info

# 2、电脑网站支付API:https://docs.open.alipay.com/270/105900/

# 3、完成RSA密钥生成:https://docs.open.alipay.com/291/105971      #点在线生成(不需要下载)

# 4、在开发中心的沙箱应用下设置应用公钥:填入生成的公钥文件中的内容

# 5、Python支付宝开源框架:https://github.com/fzlee/alipay       #由于电脑网站支付没有 python sdk ,对着API列表里的找又比较麻烦,我们用第三方的sdk(也是扣着API做的封装,本身也是调用了API)
# >: pip install python-alipay-sdk --upgrade

# 7、公钥私钥设置
"""
# alipay_public_key.pem
-----BEGIN PUBLIC KEY-----
支付宝公钥
-----END PUBLIC KEY-----

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

# 8、支付宝链接
"""
开发:https://openapi.alipay.com/gateway.do
沙箱:https://openapi.alipaydev.com/gateway.do
"""

二、支付流程

 

 

三、支付宝支付测试
https://openhome.alipay.com/platform/appDaily.htm?tab=info
# 沙箱环境
    -商户号
    -用户号
# 非对称加密
    -公钥,私钥:
    -加密用公钥加密,解密用私钥解密
# 对称加密:加密和解密的密码一样
# 第三方支付宝sdk
# 生成公钥私钥
    -在本地使用命令生成
    -支付网站,软件生成:https://docs.open.alipay.com/291/105971     点链接,然后点web在线加密(如下图)
    -支付宝支付的话,仅有公钥私钥不行,还需要支付宝公钥---》把咱们的公钥填入---》生成支付宝公钥
 

 

 复制上面的公钥,配置在下图,把咱们的公钥填入---》生成支付宝公钥

 

 

 

 

 

 

 

 pri

-----BEGIN RSA PRIVATE KEY-----
MIIEpAIBAAKCAQEA1hB5TaKwYUAQXc/zrOe7SgS3eHnljHUrHehuINtAq0AQp3tq2SrFJp+yiCTx4XhOTpWpoRinTH0hpxE+oGVl4Cs0ukfO3cdfARAK+eHX70PlUvC1ZuPZphHOByzwrd2oNdfI0RL+8lgyRl+coooZCS2eB0H8kCWqyUSCUvW0c1wicVJhosl0hjMqwegWhm3tVKo7Rd4pPeskZZB7uYGE0sAEhavX0GmGYamruRNmVmgRHPdNXl8jgkMYZWBYnOhErULFZa7FuE4zeymIhe/mH5SzZYiod+pU/Gk2ANtaNXYC9LZEDyUdK7D8E2sXf1Apvm9O2GW4jyrSWvL8tZl8CwIDAQABAoIBADQt6dOxz3q1KggkE4rXJcEiKzLTy8+UFAGDUazypO3ZfPXGUMJE+a+zh8pF7yv9rmDbfHDHWKh9bAGUY4ankNC213B85oELAy54IaTNl1w8WZ8BC8bbzYb8mhMHslc/S6xsQAgusDSUqRScY8r/DKE/HGE6hX0BoYLUD0x3lhf0MBcQS45jRReFXSL9on830mrGMkdijLEIDB7VnQKKAoZCEtk7IPexWOx/m7rKiM93h3Au2teSEi8asYv08eJ+d5ycLFqmom690Op3gsgqLPWooldocliKIkz7YHa50+NNT10oVh5fE90BLa1V8vsnef0LOBATGwvv6da/94f7/BECgYEA+dZLkbo/Crq4Xn7+++Iq4SG02UDFW9DgXH+E9fEgzq2hAEawXuuJ0wl+igwwG/mHAjEOZoc01WtRsWzbE/z7vxmoT3c8Xt9A/xcs4bU8JBDhc7wW7sREtRx21/ccHdkJ6IGeXodhLZuIRk5WXsr3tcOyP2XtEDwOn7wjh5fFEjkCgYEA21hGsayYAsXxmNTSfCPto9m4pasWRO5uteeGCViJ6S4yoSiIFro9/390Ds62ZQti6SObrTlBg2LW6x5tjbU3LkVbRkaZzlTfgbkOmH56d2500Kv6xoWhowelXCEjjwg5OqsfJsn6Sfmef8oOAH636XNfJuMXtD8gqAJYUqW+8GMCgYARm7vpwnGtBOn3pwW7pP4WrfR8F2eRiBA4FLi/SMZiKrSdO1404m7tU876Vc+SOSz9x41XRpI/tHemhKCQMRVhK6LELwgvO5buI6kDI23gsNvi90+6dlTNWvs5T25I4EIlg/UwfmQn/b1GD0FhHvcEdY17kGh762+wbGcoqFa4aQKBgQDAgLgChRQgEvMXC2jzdGDClXkdRIrV0mAtm1UibKcUk+vxTm4pbCivTH9h439mLNkQ/aRKId7iXWN7lAfX/3u/SzVw9tNTp19FLVGm+hGnMbSp0tXTV0Jln3c75QWdKT14xOghFdBpDf9R7dXeD1h/NTcEHPgXw/N4IB694iMyOwKBgQCzeJ//qo0FZzcKhbpk1zeW+s2wHh984f2DEDUhCdBRNM7s5k9zLyrYhQGToA+d0WRFjak5DJKMah2V8nowu7j4XO3Xy1lfAxk1xCUcjIK/3ZAtW+zHA8gVq7ZBfHnNjSoHVA7b0VCs8wGJO17Nl6R158QTw/fMj+8RiJvFcllCmQ==
-----END RSA PRIVATE KEY-----

pub

-----BEGIN RSA PRIVATE KEY-----
MIIEpAIBAAKCAQEA1hB5TaKwYUAQXc/zrOe7SgS3eHnljHUrHehuINtAq0AQp3tq2SrFJp+yiCTx4XhOTpWpoRinTH0hpxE+oGVl4Cs0ukfO3cdfARAK+eHX70PlUvC1ZuPZphHOByzwrd2oNdfI0RL+8lgyRl+coooZCS2eB0H8kCWqyUSCUvW0c1wicVJhosl0hjMqwegWhm3tVKo7Rd4pPeskZZB7uYGE0sAEhavX0GmGYamruRNmVmgRHPdNXl8jgkMYZWBYnOhErULFZa7FuE4zeymIhe/mH5SzZYiod+pU/Gk2ANtaNXYC9LZEDyUdK7D8E2sXf1Apvm9O2GW4jyrSWvL8tZl8CwIDAQABAoIBADQt6dOxz3q1KggkE4rXJcEiKzLTy8+UFAGDUazypO3ZfPXGUMJE+a+zh8pF7yv9rmDbfHDHWKh9bAGUY4ankNC213B85oELAy54IaTNl1w8WZ8BC8bbzYb8mhMHslc/S6xsQAgusDSUqRScY8r/DKE/HGE6hX0BoYLUD0x3lhf0MBcQS45jRReFXSL9on830mrGMkdijLEIDB7VnQKKAoZCEtk7IPexWOx/m7rKiM93h3Au2teSEi8asYv08eJ+d5ycLFqmom690Op3gsgqLPWooldocliKIkz7YHa50+NNT10oVh5fE90BLa1V8vsnef0LOBATGwvv6da/94f7/BECgYEA+dZLkbo/Crq4Xn7+++Iq4SG02UDFW9DgXH+E9fEgzq2hAEawXuuJ0wl+igwwG/mHAjEOZoc01WtRsWzbE/z7vxmoT3c8Xt9A/xcs4bU8JBDhc7wW7sREtRx21/ccHdkJ6IGeXodhLZuIRk5WXsr3tcOyP2XtEDwOn7wjh5fFEjkCgYEA21hGsayYAsXxmNTSfCPto9m4pasWRO5uteeGCViJ6S4yoSiIFro9/390Ds62ZQti6SObrTlBg2LW6x5tjbU3LkVbRkaZzlTfgbkOmH56d2500Kv6xoWhowelXCEjjwg5OqsfJsn6Sfmef8oOAH636XNfJuMXtD8gqAJYUqW+8GMCgYARm7vpwnGtBOn3pwW7pP4WrfR8F2eRiBA4FLi/SMZiKrSdO1404m7tU876Vc+SOSz9x41XRpI/tHemhKCQMRVhK6LELwgvO5buI6kDI23gsNvi90+6dlTNWvs5T25I4EIlg/UwfmQn/b1GD0FhHvcEdY17kGh762+wbGcoqFa4aQKBgQDAgLgChRQgEvMXC2jzdGDClXkdRIrV0mAtm1UibKcUk+vxTm4pbCivTH9h439mLNkQ/aRKId7iXWN7lAfX/3u/SzVw9tNTp19FLVGm+hGnMbSp0tXTV0Jln3c75QWdKT14xOghFdBpDf9R7dXeD1h/NTcEHPgXw/N4IB694iMyOwKBgQCzeJ//qo0FZzcKhbpk1zeW+s2wHh984f2DEDUhCdBRNM7s5k9zLyrYhQGToA+d0WRFjak5DJKMah2V8nowu7j4XO3Xy1lfAxk1xCUcjIK/3ZAtW+zHA8gVq7ZBfHnNjSoHVA7b0VCs8wGJO17Nl6R158QTw/fMj+8RiJvFcllCmQ==
-----END RSA PRIVATE KEY-----

alipay/main.py

import os
# 应用私钥
APP_PRIVATE_KEY_STRING = open('./pri').read()

# 支付宝公钥
ALIPAY_PUBLIC_KEY_STRING = open('./pub').read()

from alipay import AliPay
pay=AliPay(
    appid=2021000119627825,
    app_notify_url=None,
    app_private_key_string=APP_PRIVATE_KEY_STRING ,
    alipay_public_key_string=ALIPAY_PUBLIC_KEY_STRING,
    sign_type='RSA2',
    debug=True)



res=pay.api_alipay_trade_page_pay(
            out_trade_no='123456',
            total_amount=float(99.99),  # 只有生成支付宝链接时,不能用Decimal
            subject='精品内衣',
            return_url='http://127.0.0.1:8080/home',
            notify_url='http://127.0.0.1:8080/home',
)
# print(res)
pay_url='https://openapi.alipaydev.com/gateway.do?'+res
print(pay_url)

 

 

 

 

 

 

aliapy二次封装包

GitHub开源框架
https://github.com/fzlee/alipay
依赖
>: pip install python-alipay-sdk --upgrade
# 如果抛ssl相关错误,代表缺失该包
>: pip install pyopenssl
结构

alipay_public_key.pem
-----BEGIN PUBLIC KEY-----
拿应用公钥跟支付宝换来的支付宝公钥
-----END PUBLIC KEY-----
app_private_key.pem
-----BEGIN RSA PRIVATE KEY-----
通过支付宝公钥私钥签发软件签发的应用私钥
-----END RSA PRIVATE KEY-----
setting.py
import os
# 应用私钥
APP_PRIVATE_KEY_STRING = open(os.path.join(os.path.dirname(os.path.abspath(__file__)), 'pem', 'app_private_key.pem')).read()

# 支付宝公钥
ALIPAY_PUBLIC_KEY_STRING = open(os.path.join(os.path.dirname(os.path.abspath(__file__)), 'pem', 'alipay_public_key.pem')).read()

# 应用ID
APP_ID = '2016093000631831'

# 加密方式
SIGN = 'RSA2'

# 是否是支付宝测试环境(沙箱环境),如果采用真是支付宝环境,配置False
DEBUG = True

# 支付网关
GATEWAY = 'https://openapi.alipaydev.com/gateway.do' if DEBUG else 'https://openapi.alipay.com/gateway.do'
pay.py
from alipay import AliPay
from . import settings

# 支付对象
alipay = AliPay(
    appid=settings.APP_ID,
    app_notify_url=None,
    app_private_key_string=settings.APP_PRIVATE_KEY_STRING,
    alipay_public_key_string=settings.ALIPAY_PUBLIC_KEY_STRING,
    sign_type=settings.SIGN,
    debug=settings.DEBUG
)

# 支付网关
gateway = settings.GATEWAY
_init_.py
# 包对外提供的变量
from .pay import gateway, alipay
补充:在自己项目的配置文件中配置支付宝回调接口:settings.py | dev.py
# 上线后必须换成公网地址
# 后台基URL
BASE_URL = 'http://127.0.0.1:8000'
# 前台基URL
LUFFY_URL = 'http://127.0.0.1:8080'
# 支付宝同步异步回调接口配置
# 后台异步回调接口
NOTIFY_URL = BASE_URL + "/order/success/"
# 前台同步回调接口,没有 / 结尾
RETURN_URL = LUFFY_URL + "/pay/success"

 

标签:alipay,支付宝,公钥,封装,45,-----,KEY,com
来源: https://www.cnblogs.com/Haier123/p/15961530.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有