支付宝支付功能
用于网上支付,借助三方平台完成支付功能。
支付宝开发平台地址
https://open.alipay.com/platform/home.htm
①支付宝扫码登录
②确定入驻身份
③开发者中心
④ 选择开发方向
⑤ 填写应用的细节
⑥在开发的时候可以先使用沙箱环境
⑦沙箱信息配置
⑧沙箱服务账号
⑨ 下载支付宝沙箱app
⑩查看开发手册,进行开发https://docs.open.alipay.com/
⑪ 工具下载
⑫ 下载完成,生成秘钥
⑬同时在生成工具的目录下RSA秘钥目录下也有文件版本
⑭ 然后将公钥设置到服务端
⑮ 集成并配置SDK
所以作为开发,步骤如下
1、接收订单
2、跳转请求支付宝
3、接收,并将支付页面发给买家
4、买家完成付款
支付宝的sdk已经集成为一个python模块,只需要安装模块进行开发。
⑯ 在django环境里下载模块
pip install pycryptodome
pip install python-alipay-sdk --upgrade
⑰ 安装完成,编写脚本测试支付功能
from alipay import AliPay
# 公钥
alipay_public_key_string = """-----BEGIN PUBLIC KEY-----
MIIBIjANBgkqhkiGw0AQEFAAOCAQ8AMIIBCgKCAQEAsT2a5eY/3xnxh8AlC7jxcgE/FUHPfw6gnzohK000LPzp3slpdvDLrl+EJnG5SuZbsM3BY41K8F5CdthxQiJGvg+a+UAcQdGw190eVjogtHOtXZCseLV66B47BfYCSOb3gLn31EB7h5zUG2DQEtpMKmjbIgQTJfv+CKxjyaiTXXpKgpb06/WTsMPIuwXOlWG1ei3mOJt6ZnF914q/NJWIjiEq/ubMsRTrWpK4OoQ636ZlEsJTUxSJ06mBE5uXBCDJSd952/b7NEEtyOz7UpW9RZC5BDGK3M+/pmPsoBMUDK8Mh6KVnY3a13u2/f9q8MsQcydfJAcpr/UwIDAQAB
-----END PUBLIC KEY-----"""
# 私钥
app_private_key_string = """-----BEGIN RSA PRIVATE KEY-----
MIIEowIBAAKCAQEAsT2a5eY3xnxh8AlC7jxcgE/FUHPfw6gnzohK000LPzp3slpdvDLrl+EJnG5SuZbsM3BYg41K8F5kCdthxQiJGvg++a+UAcQdGzw190eVjogtHOtXZcCseLV66B47oBfYOb3gLn31EB7h5zUG2DQEtpMKmjbIgQTJfv+CKxjyaiTXXpKgpb06/WTsMPIuwXOlWG1Uei3mOJt6ZnF94q/kNJWIjiEq/ubMsRTrWK4OoQ636ZlEsJTUxSJm0mBE5uXBCDJSd952/b7NEEtyOYz7UpW9RZC5BDGK3M+/pmPsoBMUDK8Mh6VnY3a13u2/f98MscydfJAcpr/UwIDAQABAIBAEsQeEXd2jc22aBQtF/emANcm8b49FQvcb998wZP0EUtaC8+xjfli53ym6GGusXDDpM3m/q0BZ+axjWlVUBvn/2PoJsq39jlC0LPz/6VIDm+0DQ9Tq6Qa+E/mOzNX/JYPJ5QIjYNnkc5ogh3H3fjlp3xjcF2sY/jztFJ4Kv49B7i18AkXDXf2mwFyzOOvppBMT4WNj+ZXYZEhIykXOfA2FFXJ6sgayyhxAYKt5uVkcTvETo9UWadfGQyjGrti+35VCjpFjhiaMbmRVFFI3dTtnntFf8078OrTP5Tjd4q5KEgs7l1GwKZlqhrifLrdGG3+SDQxDVelrVOECgYEA6vm/QR2j8GAyME80BSmuF/37kAHJUxqHlJ6nZnLNHVoETIM00sbLOYfEFDrz6wcvljKjR8uHZU1Zi9SDjsC5SRvf0ZWjw5fQ83ThNZxm3ZHSR9e9iznM22qh02usxC28V5ITbnHxeKwIuUctznKidO+3qw6otfPP3LD8CgYEwRln2YQ0NGgXe/fVha5NFUoHzefCAPbGZXSQYkqjijzQBbcPpiPhvL2yWCh+HDMx1LcccDvRhXfG19XIGMzE7rG1SVxsRrafCP1sxq1UCdsf0aMUaesM5ITczRmddPMkellgqZNvNHdrVEIajoZeXPnDmpefQqhat+0CgYBPpym2IHbadHX7l8No7KAfcfF8954PlcawETgdhKzls30Ap1BWU6HT4xEjEljsjhNS7pN6AyBofTb2koqfmOwrYMmm5c1aUWALin0JYLScZpNMcleoTuXnphbKOKCkNWYCwjhocfwWVLtFpMuwQvi8Kw/3I+vXCLkYNPYZkcQKBgQCRbd7m1UkiERByxYs0jey21GkWDbVKaqLzEwi9+KB4ivvik1hK+GgxOqIHxHJQgFmRD4kYgbhRXzikl77sIxf2hZHz6rNJnSTIdHoola3zKjVzspyRxnuJjRRLOLD/1zgs0xnUVl2aS4HUqYJ428SorGUvMXnsN6lKfgwf/6QKBgGapswT/Ml/4pPwjyA3ECoCji1b6uxTVDr9fEabmebtQf4hDtPQO4+tf4U/Ou9vdTTtcJ19BQuWmg0PzrwpO5agCYyqS
-----END RSA PRIVATE KEY-----"""
# 实例化支付请求
alipay = AliPay(
appid = "2016101000565243",
app_notify_url = None,
app_private_key_string = app_private_key_string,
alipay_public_key_string = alipay_public_key_string,
sign_type = "RSA2"
)
# 发起支付请求
order_string = alipay.api_alipay_trade_page_pay(
out_trade_no = '10001', #订单号
total_amount= str(10000), #支付金额
subject = '生鲜交易', # 交易主题
return_url= None,
notify_url=None
)
print("https://openapi.alipaydev.com/gateway.do?"+order_string)
⑱基于上述代码将代码封装为视图函数,并且用get请求发送了订单id和订单金额
def pay_order(request):
# 公钥
alipay_public_key_string = """-----BEGIN PUBLIC KEY-----
MIIBIjANBgkqhkiGw0AQEFAAOCAQ8AMIIBCgKCAQEAsT2a5eY/3xnxh8AlC7jxcgE/FUHPfw6gnzohK000LPzp3slpdvDLrl+EJnG5SuZbsM3BY41K8F5CdthxQiJGvg+a+UAcQdGw190eVjogtHOtXZCseLV66B47BfYCSOb3gLn31EB7h5zUG2DQEtpMKmjbIgQTJfv+CKxjyaiTXXpKgpb06/WTsMPIuwXOlWG1ei3mOJt6ZnF914q/NJWIjiEq/ubMsRTrWpK4OoQ636ZlEsJTUxSJ06mBE5uXBCDJSd952/b7NEEtyOz7UpW9RZC5BDGK3M+/pmPsoBMUDK8Mh6KVnY3a13u2/f9q8MsQcydfJAcpr/UwIDAQAB
-----END PUBLIC KEY-----"""
# 私钥
app_private_key_string = """-----BEGIN RSA PRIVATE KEY-----
MIIEowIBAAKCAQEAsT2a5eY3xnxh8AlC7jxcgE/FUHPfw6gnzohK000LPzp3slpdvDLrl+EJnG5SuZbsM3BYg41K8F5kCdthxQiJGvg++a+UAcQdGzw190eVjogtHOtXZcCseLV66B47oBfYOb3gLn31EB7h5zUG2DQEtpMKmjbIgQTJfv+CKxjyaiTXXpKgpb06/WTsMPIuwXOlWG1Uei3mOJt6ZnF94q/kNJWIjiEq/ubMsRTrWK4OoQ636ZlEsJTUxSJm0mBE5uXBCDJSd952/b7NEEtyOYz7UpW9RZC5BDGK3M+/pmPsoBMUDK8Mh6VnY3a13u2/f98MscydfJAcpr/UwIDAQABAIBAEsQeEXd2jc22aBQtF/emANcm8b49FQvcb998wZP0EUtaC8+xjfli53ym6GGusXDDpM3m/q0BZ+axjWlVUBvn/2PoJsq39jlC0LPz/6VIDm+0DQ9Tq6Qa+E/mOzNX/JYPJ5QIjYNnkc5ogh3H3fjlp3xjcF2sY/jztFJ4Kv49B7i18AkXDXf2mwFyzOOvppBMT4WNj+ZXYZEhIykXOfA2FFXJ6sgayyhxAYKt5uVkcTvETo9UWadfGQyjGrti+35VCjpFjhiaMbmRVFFI3dTtnntFf8078OrTP5Tjd4q5KEgs7l1GwKZlqhrifLrdGG3+SDQxDVelrVOECgYEA6vm/QR2j8GAyME80BSmuF/37kAHJUxqHlJ6nZnLNHVoETIM00sbLOYfEFDrz6wcvljKjR8uHZU1Zi9SDjsC5SRvf0ZWjw5fQ83ThNZxm3ZHSR9e9iznM22qh02usxC28V5ITbnHxeKwIuUctznKidO+3qw6otfPP3LD8CgYEwRln2YQ0NGgXe/fVha5NFUoHzefCAPbGZXSQYkqjijzQBbcPpiPhvL2yWCh+HDMx1LcccDvRhXfG19XIGMzE7rG1SVxsRrafCP1sxq1UCdsf0aMUaesM5ITczRmddPMkellgqZNvNHdrVEIajoZeXPnDmpefQqhat+0CgYBPpym2IHbadHX7l8No7KAfcfF8954PlcawETgdhKzls30Ap1BWU6HT4xEjEljsjhNS7pN6AyBofTb2koqfmOwrYMmm5c1aUWALin0JYLScZpNMcleoTuXnphbKOKCkNWYCwjhocfwWVLtFpMuwQvi8Kw/3I+vXCLkYNPYZkcQKBgQCRbd7m1UkiERByxYs0jey21GkWDbVKaqLzEwi9+KB4ivvik1hK+GgxOqIHxHJQgFmRD4kYgbhRXzikl77sIxf2hZHz6rNJnSTIdHoola3zKjVzspyRxnuJjRRLOLD/1zgs0xnUVl2aS4HUqYJ428SorGUvMXnsN6lKfgwf/6QKBgGapswT/Ml/4pPwjyA3ECoCji1b6uxTVDr9fEabmebtQf4hDtPQO4+tf4U/Ou9vdTTtcJ19BQuWmg0PzrwpO5agCYyqS
-----END RSA PRIVATE KEY-----"""
# 实例化支付请求
alipay = AliPay(
appid="2016101000652534",
app_notify_url=None,
app_private_key_string=app_private_key_string,
alipay_public_key_string=alipay_public_key_string,
sign_type="RSA2"
)
# 发起支付请求
order_string = alipay.api_alipay_trade_page_pay(
out_trade_no='10002', # 订单号
total_amount=str(10000), # 支付金额
subject='生鲜交易', # 交易主题
return_url="http://127.0.0.1:8000/buyer/pr/",
notify_url="http://127.0.0.1:8000/buyer/pr/"
)
return HttpResponseRedirect("https://openapi.alipaydev.com/gateway.do?" + order_string)
⑲编写接收支付结果的函数
def pay_result(request):
'''
支付宝支付成功自动用get请求返回的参数
#编码
charset=utf-8
#订单号
out_trade_no=10002
#订单类型
method=alipay.trade.page.pay.return
#订单金额
total_amount=1000.00
#校验值
sign=enBOqQsaL641Ssf%2FcIpVMycJTiDaKdE8bx8tH6shBDagaNxNfKvv5iD737ElbRICu1Ox9OuwjR5J92k0x8Xr3mSFYVJG1DiQk3DBOlzIbRG1jpVbAEavrgePBJ2UfQuIlyvAY1fu%2FmdKnCaPtqJLsCFQOWGbPcPRuez4FW0lavIN3UEoNGhL%2BHsBGH5mGFBY7DYllS2kOO5FQvE3XjkD26z1pzWoeZIbz6ZgLtyjz3HRszo%2BQFQmHMX%2BM4EWmyfQD1ZFtZVdDEXhT%2Fy63OZN0%2FoZtYHIpSUF2W0FUi7qDrzfM3y%2B%2BpunFIlNvl49eVjwsiqKF51GJBhMWVXPymjM%2Fg%3D%3D&trade_no=2019072622001422161000050134&auth_app_id=2016093000628355&version=1.0&app_id=2016093000628355
#订单号
trade_no=2019072622001422161000050134
#用户的应用id
auth_app_id=2016093000628355
#版本
version=1.0
#商家的应用id
app_id=2016093000628355
#加密方式
sign_type=RSA2
#商家id
seller_id=2088102177891440
#时间
timestamp=2019-07-2
'''
return render(request,'buyerapp/pay_result.html')
⑳前端修改样式
{% extends 'buyerapp/base.html' %}
{% block title %}
支付成功
{% endblock %}
{% block style %}
{% endblock %}
{% block content %}
<div style="font-size: 44px">
<h1 style="color: #00cc66">支付成功!</h1>
</div>
<div style="font-size: 24px">
<p>支付订单:{{ request.GET.out_trade_no }}</p>
<p>支付金额:{{ request.GET.total_amount }}</p>
<p>支付时间:{{ request.GET.timestamp }}</p>
</div>
{% endblock %}
{% block script %}
{% endblock %}