[ 支付宝-python支付 ]


目录:

对接支付宝基本使用

1.密钥生成文档

2.或者使用OpenSSL生成密钥

  • 在ubuntu终端执行openssl进入:
OpenSSL> genrsa -out app_private_key.pem   2048  #生成私钥
OpenSSL> pkcs8 -topk8 -inform PEM -in app_private_key.pem -outform PEM -nocrypt -out app_private_key_pkcs8.pem #Java开发者需要将私钥转换成PKCS8格式
OpenSSL> rsa -in app_private_key.pem -pubout -out app_public_key.pem #生成公钥
OpenSSL> exit #退出OpenSSL程序
  • 查看在本地生成的文件,
  • RSA私钥
    • app_private_key.pem
  • pkcs8格式开发者RSA私钥Java语言适用-
    • app_private_key_pkcs8.pem
  • 开发者RSA公钥
    • app_public_key.pem

注意事项

私钥: 保留使用
公钥: 去支付宝沙盒配置,自定义密钥 -> 生成支付宝公钥(下面那个)
支付宝公钥: 保存使用

2.支付宝沙盒配置

2.1默认私钥内容:

-----BEGIN RSA PRIVATE KEY-----
MIIEpQIBAAKCAQEAvHgBMV6V8hzsOM3JFmQSYeetiGnf1xhS/L9Tr4bKh3WRWptR
MYfnO2vPoaDs0krMlbdneDx7GFjVfYuwB6VnHJwfEHtF+IQCPt28Mei3feMfb0Kx
FhsumWMR38unM/nA+oTWpJ5t+Av0tCGX1JkMqBCU1+rA2oL+9hxEbDFwowagcV71
oLvsdbYwftpPxsgqmluvtmcANBZiLvlDjk2jbH6G1MojYonyBVt90t0ArxsF9acR
iDS0EqR0f5sP4pZuowyRXBEvls0Rl2tX6d/EqfVwewKx7rg7YLt97tTSS+p7fYLF
prvfS6q9f8Y9EJS545RjTvBXDkoPMTAWVriXPQIDAQABAoIBAQCHsVsigXgx/jLx
XvBFx70YcmaVjazUv7WYNeR5vvF4f+QsOSFHKRMJzECMnUGE0sfjj03W2qzBxcvH
/Ve62ZKYnascAbVKDTlUq+7AfE4IPAs43uqDAQUW+KY42/bBTDNt61Bi65I/gdQo
EPuw3JSpOG8B2goKCUCqT4XP4/S12mV8oLiRWDWbimaFJE1L1Q7FBgTOUteEK+kI
2LoZ+06aH1zOceVY+QY3q4krUkpi/2iIxhrFh1q7ojjpUxKeioPuFjpFYPq+jsur
L+bDkc5kkUMAZCPVPIEpcMRKMDRQymfNqQRDY/x/5Ogd4dYRiFC7VlQ7LZEtg0Hb
l1bJXPl9AoGBAOufOqu61lJLiqz2YDvewSENWN8bIeV75Gg9AJZkcCw3qRQW0Up+
yWhS0fhX8fhD6bUnpCshUS9aJQYiwKq8EDuNgKsqyaGGSApyV7OTaOQP2TIlVUyH
VgdyZ1fjRWQGf1nMGdwndpwvXlBooBIYt0kek8oH3poyCdsBnbNrL5gvAoGBAMzE
yH0rD8//V2Zj2yRkwblQOE4qegfRMYI2UpIvMNBPywVYI07VlCxEcJeibd6IXGmd
RWFrrcGWwza4wqdVDr6qvXr/n9kcpeTiGK61auSJ8cDxiJavxgo1pCjDeDfJ7mcU
KjXmzvzlHTKP0R0ASIFFLadvb42AStzkH9j9icBTAoGBAOsiDpG7tQ+RFUW/5I86
n26VfD/BOtVhCrG/Vqu+dXaa4R8MGjYGSoXSSHlVgkInu70tXxYvfG4Nvm7eFXkM
jgJwFpw56ddIQvIx4zVwgLc+3Ze+S95AHGj4EQtS4TeNiF8bYB8kPqhkWPFTR5Jn
mdjdK8zsh4dHMjCc7zxSVb+/AoGAX/CrRwoQBJJMburGWEzk/2B4oRcByfvXyHyP
P3Lg2hkotD5RfLRRElSWtFUkSSl2sv0+7qA27wcmO9NhUGln2SnCUYjHakAj8hOF
IQZbKO0A2jfQmVmN3ma3nWnIP8ta6ezmwg58WL04auI7Re1GC1tQQqzRhWjgqpIv
4ckY64UCgYEA5F7PGwXUAcUfrPlifcM5WH+ySxjEEALlOGSBKs0o8NAMX1NuFaZl
PnnJplrBjqlJKm7EM6FKfONuFtwq/kAAmvVqn4imGf/KOwxnVvqcwUSUyJkJmR4o
UKc4m9Cup40ptz0O6i8snatYFyb9+oH1uueS0UPIChemIAFy8FYP/3o=
-----END RSA PRIVATE KEY-----

2.2默认公钥内容:

-----BEGIN PUBLIC KEY-----
MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAvHgBMV6V8hzsOM3JFmQS
YeetiGnf1xhS/L9Tr4bKh3WRWptRMYfnO2vPoaDs0krMlbdneDx7GFjVfYuwB6Vn
HJwfEHtF+IQCPt28Mei3feMfb0KxFhsumWMR38unM/nA+oTWpJ5t+Av0tCGX1JkM
qBCU1+rA2oL+9hxEbDFwowagcV71oLvsdbYwftpPxsgqmluvtmcANBZiLvlDjk2j
bH6G1MojYonyBVt90t0ArxsF9acRiDS0EqR0f5sP4pZuowyRXBEvls0Rl2tX6d/E
qfVwewKx7rg7YLt97tTSS+p7fYLFprvfS6q9f8Y9EJS545RjTvBXDkoPMTAWVriX
PQIDAQAB
-----END PUBLIC KEY-----

2.3公钥复制到支付宝沙盒后的公钥文件内容:

-----BEGIN PUBLIC KEY-----
MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEApOD7EqXuNWHoBopVNh0Fi9vGJhX9CUXqShfM1ofRbGTscFUQWpVo/jWWYk0j2G3uvr107vQ7Sh/DXiRSxCahcDAeJvT9f/PvknImu0kfcH/NiIMF2M3yy3EeyMgmtYSXN7JhciiB3c/ehckKDUrKF+xe6DkORntinqqvPo+ozqLOlkJ2we6IhVns/XvcqC55e+fzFZK5DksO4ELqLoKkIJm2ROHNWYjaAcLertS2AVafkuhq4CjfyxKgotnUaDK6qJdFU1CgWs1bf0McCHWbQFbaxx6F5pirgWNLNlRjJu5X/GTQAJLRdCqWYV2LhYPc4odEO7swOX9cf+45DfbMuwIDAQAB
-----END PUBLIC KEY-----

2.4钥匙文件格式要求: - 私钥

-----BEGIN RSA PRIVATE KEY-----
xxx私钥的内容不需要改
-----END RSA PRIVATE KEY-----
  • 公钥
-----BEGIN PUBLIC KEY-----
xxxx从支付宝沙盒粘贴过来的公钥匙
-----END PUBLIC KEY-----

3.python文件配置

  • 需要配置:
  • appid
  • 私钥文件
  • 支付宝公钥文件
  • 安装pip install python-alipay-sdk
from alipay.utils import AliPayConfig
from alipay import AliPay
from flask import Blueprint, jsonify, redirect

alipay_view = Blueprint('alipayView', __name__, url_prefix='/alipay')


app_private_key_string = open(
    "/home/ouzijun/flask-work/flask_work/applications/views/app_private_key.txt").read()   # 私
alipay_public_key_string = open(
    "/home/ouzijun/flask-work/flask_work/applications/views/app_public_key.txt").read()  # 共

alipay = AliPay(
    appid="2021000122674347",
    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(默认生成的加密模式是RSA2)
    debug=True,  # 默认 False
    verbose=False,  # 输出调试数据
    config=AliPayConfig(timeout=15)  # 可选,请求超时时间
)
# alipay.api_alipay_tra
res = alipay.api_alipay_trade_page_pay(
    out_trade_no='1000101',  # 订单号
    total_amount=float(999),  # 价格
    subject='气球',  # 名称
    return_url='http://127.0.0.1:5000/alipay/ok/',  # 支付成功后会跳转的页面
    notify_url='http://127.0.0.1:5000/',  # 回调地址,支付成功后支付宝会向这个地址发送post请求
)

gataway = 'https://openapi.alipaydev.com/gateway.do?'
# 支付链接
pay_url = gataway + res
# print(pay_url)


@alipay_view.route('/', methods=['GET'])
def alipay():
    return redirect(pay_url)

结果展示



总结

  1. 在本地生成公钥与私钥
  2. 把公钥复制, 到支付宝沙盒, 粘贴生成支付宝公钥
  3. 复制生成的支付宝公钥,当作公钥
  4. 现在需要用到的有:本地的私钥:支付宝公钥:两个钥匙, 并且文件内的内容格式按照要求
  5. python中安装pip install python-alipay-sdk
  6. 通过sdk实例化参数生成链接地址
  7. 我们只需要跳转到此支付链接