文章目录
一、支付宝支付
1.业务逻辑
- ①买家发出购买请求,服务生成订单
- ②提交订单,卖家将支付请求发到支付宝
- ③支付宝返回支付页面
- ④买家在支付页面完成付款
- ⑤支付处理付款请求
- ⑥支付宝返回处理结果(支付完成,支付失败,支付进行中)
2.支付宝的请求地址
https://open.alipay.com/platform/home.htm
3.使用支付宝支付的准备工作
①选择沙箱环境
②进入沙箱页面
③下载安卓版测试支付宝
④登录沙箱版支付宝,输入指定账户密码
⑤支付宝的秘钥配置
支付宝接口文档地址: https://docs.open.alipay.com/
(1)下载秘钥工具
(2)打开秘钥工具
(3)生成秘钥
(4)查看秘钥位置
(5)配置公钥私钥
3.Pycharm的支付宝代码
安装依赖包
pip install pycryptodome ## 阿里sdk的依赖包
pip install python-alipay-sdk --upgrade
①安装好依赖包后,然后以卖家身份进行收款
②使用python完成支付,开始写一个测试的demo
from alipay import AliPay
# 公钥
alipay_public_key_string = '''-----BEGIN PUBLIC KEY-----
公钥
-----END PUBLIC KEY-----'''
# 私钥
alipay_private_key_string='''-----BEGIN PRIVATE KEY-----
私钥
-----END PRIVATE KEY-----'''
# 实例化支付对象
alipay = AliPay(
appid='2016101300673951',
app_notify_url=None,
app_private_key_string=alipay_private_key_string,
alipay_public_key_string=alipay_public_key_string,
sign_type="RSA2",
)
# 实例化订单
order_string = alipay.api_alipay_trade_page_pay(
subject = '牛羊生鲜', # 交易主题
out_trade_no = '10000000009', # 订单号
total_amount='400000', # 交易总金额
return_url=None, # 请求支付之后及时回调的一个接口
notify_url=None # 通知地址
)
# 发送支付请求
# 请求地址:支付网关+实例化订单
result = 'https://openapi.alipaydev.com/gateway.do?'+order_string
print(result)
注意:公钥私钥是刚才下载的应用中的,直接复制即可
4.购物车的支付宝立即购买功能
①将代码中的公钥私钥存入到settings文件中
# 公钥
alipay_public_key_string = '''-----BEGIN PUBLIC KEY-----
MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAk7pgNH3Osn0X4tvasldV0lWNzY3QkZpuOjTRPOPXWBB5yXP6/pWNsaWRCp+EZm9wGCXkckFF2RwVh8IBt0tICB8FziioLhSo1dC/MQkJP/73vBxNxNMw+AqMUSEfOTHEXGULMACeTMPugvXWmmr74OD6PZL28TVw1pjqoi8f56mzCFJLUkTwaqt6qXxiQxPm15tEJwzYLT7HCjBu1HQAmk8Yd2G1raapcN9SmSx7BdK0Cjb/YIfil0+nmZwX5+1p/kD3cH7SfO45GjV5INFfD/oiF5EykRjqJS8xYV93T3uKx97shvlZWUjjEQT2BSg9RgQwk7tz64DeOwvBjYrMwQIDAQAB
-----END PUBLIC KEY-----'''
# 私钥
alipay_private_key_string = '''-----BEGIN RSA PRIVATE KEY-----
MIIEowIBAAKCAQEAk7pgNH3Osn0X4tvasldV0lWNzY3QkZpuOjTRPOPXWBB5yXP6/pWNsaWRCp+EZm9wGCXkckFF2RwVh8IBt0tICB8FziioLhSo1dC/MQkJP/73vBxNxNMw+AqMUSEfOTHEXGULMACeTMPugvXWmmr74OD6PZL28TVw1pjqoi8f56mzCFJLUkTwaqt6qXxiQxPm15tEJwzYLT7HCjBu1HQAmk8Yd2G1raapcN9SmSx7BdK0Cjb/YIfil0+nmZwX5+1p/kD3cH7SfO45GjV5INFfD/oiF5EykRjqJS8xYV93T3uKx97shvlZWUjjEQT2BSg9RgQwk7tz64DeOwvBjYrMwQIDAQABAoIBAFR7+hkK+fLJ56ct5NypZcNsejRcLjOXBgLzwdX412bdxUiYs6p1DRvTfCd/ItESWiD1Sris661GimmhYinZO9CpLUDBr6zq08O0JiN873VR84v5A+DUhuTT43tiXeDvvUS55LQHJoDwbK8ouRqGpJXvFC2yptc7oNSZj1ZBbRWm8PT1QfLWHla2IcnImYzt1fK9TKRmmxGHNtbNA3o+C3WULT8ucO9zWfERI8UZzI/jbpEHXKrAtBOlhWcSuvUUfXs26bNm3yAmcqh1yzRDAfPBaYVANJoeJ61GgrP4IztZm8f5vr2HfE39dO+8m88yhIe/8c7xeJrLWgt6/4f/P6ECgYEAw0ZOWdI6+OvoSyiD8SwgL5kG6ygMqC4/MyP1XRR1HGp1ho3KR69ZqKO4SyEb3Z93crGGyyBJnNnQpMd9jDjaRgaq9HTnej1dB6kLCV8m9RZcE7Ho7FQ3icyLCghg9w/scu/XIIHSjrkUAmM+P0A5A3kdp4vosKD9OMU7oHSZTYcCgYEAwarp8OYAV3gQxkNRRIStpP1saIDBIjmrNQ21/9UTx81+9BUB0VkIXNgBWPP0vF7e2EsKtTFYBFus2VDVlYVU6ZxpjcJEb1Bp4tGpSpXoxfJhseWCSQI67FEc6emdBjUyztSo1kxA5ejed8jQTopCh7R/2fayotvkDqeqybQi5XcCgYEAqAp/cEI+p2jzLIJAELFlPTCVyJVdVvj9P/gItMHfCcX/PvwTf17BbCL/e/+Q6EXLV7K3iWNOlaDHMJXPT3S5ORuRz+4uKH5X6TiqG7V7Y9uK/xPRmlXauUWAvPB66QEV+86zNPEjDdjtBCT9MxcEOR3ny//VDPJtFoZ8CldseU8CgYBCi67c5rshUxE4fvMSvyBHfAjfE7bJQtWQYkiyQo4MbpD736gDPjuAY3x7C0CB5XtfCNICFpVu0e1fssXhHbJinysp2aHYOeJYXMB173LPaYymKv2MhqamguyTd4FMG8V8ilgFYqg+F7kxoZ/qDNn1dVElHP6etT30xyoJKst+2wKBgA9W94gDzZB9lTswWUPmQN+0EEpq9w3LO2PZBVzZCGV+dgp2dsL2VXjWZu5CzGDexbH46us69tFiT4rpcMLoiu1pK9Msap8AWD1OFKyenqSutaQ0ycDfYaP2+SlJcxMsPrheLFJTsT9Qu0ENj9lOUzrnZXSlsiaUODmzR79JqM0T
-----END RSA PRIVATE KEY-----
'''
②视图文件
# --------------------------------------支付宝支付
from alipay import AliPay
from Qshop.settings import *
def alipayViews(request):
order_id = request.GET.get('order_id')
payorder = PayOrder.objects.get(id=order_id)
# 实例化支付对象,可以alt+Alipay进入复制init的源码
alipay = AliPay(
appid='2016101300673936', # 在沙箱应用处显示
app_notify_url=None,
app_private_key_string=alipay_private_key_string,
alipay_public_key_string=alipay_public_key_string,
sign_type="RSA2",
)
# 实例化订单
order_string = alipay.api_alipay_trade_page_pay(
subject='天天生鲜', # 交易主题
out_trade_no=payorder.order_number, # 订单号
total_amount=str(payorder.order_total), # 交易总金额
return_url='http://127.0.0.1:8000/buyer/payresult/', # 请求支付,只会及时回调的一个接口
notify_url='http://127.0.0.1:8000/buyer/payresult/', # 通知地址
)
# 发送支付请求
# 请求地址 支付网关+实例化订单
result = 'https://openapi.alipaydev.com/gateway.do?' + order_string
return HttpResponseRedirect(result)
③配置html和url
{% extends 'buyer/base.html' %}
{% block title %}
支付结果
{% endblock %}
{% block content %}
<div class="list_model">
<h1>支付结果</h1>
<table>
{% for key,value in request.GET.items %}
<tr>
<th>{{ key }}:</th>
<td>{{ value }}</td>
</tr>
{% endfor %}
</table>
</div>
{% endblock %}
结果:
二、微信支付
1.微信支付的请求地址
https://pay.weixin.qq.com/static/applyment_guide/applyment_index.shtml
2.请求条件
转载:https://blog.csdn.net/qq_40558166/article/details/102405133
查看评论