对接支付宝基本使用
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)
结果展示



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