版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
一、Django 支付
(一)微信
请求地址
https://pay.weixin.qq.com/static/applyment_guide/applyment_index.shtml
申请条件
(二)支付宝
支付宝支付流程:
- 买家发出购买请求,服务生成订单
- [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-OTThqeSY-1569498531917)(day14.assets/1569464571160.png)]
- 提交订单,卖家将支付请求发到支付宝
- 支付宝返回支付页面
- 买家在支付页面完成付款
- 支付处理付款请求
- 支付宝返回处理结果(支付完成,支付失败,支付进行中)
支付url
https://open.alipay.com/platform/home.htm
开发测试 使用沙箱环境
扫描二维码关注公众号,回复:
7652459 查看本文章
下载安卓端
账号信息
支付宝接口文档地址 https://docs.open.alipay.com/
配置公钥 私钥
以卖家的身份进行收款,
支付宝已经写好的sdk,可以使用模块的方式使用,
使用需要安装
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 RSA PRIVATE KEY-----
## 放私钥
-----END RSA PRIVATE KEY-----"""
## 实例化支付对象
alipay = AliPay(
appid='2016101300673550',
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 = '10000000002', ## 订单号
total_amount = '100', ## 交易总金额
return_url=None, ## 请求支付,之后及时回调的一个接口
notify_url=None ## 通知地址,
)
## 发送支付请求
## 请求地址 支付网关 + 实例化订单
result = "https://openapi.alipaydev.com/gateway.do?"+order_string
print(result)
视图:
接收请求,处理,获取支付页面,并完成跳转支付页面
def AlipayViews(request):
order_id = request.GET.get("order_id") ## 订单id
payorder = PayOrder.objects.get(id=order_id)
## 实例化支付对象
alipay = AliPay(
appid='2016101300673550',
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
print(result)
return HttpResponseRedirect(result)
视图: 支付提交之后,跳转的我们的结果页面
def payresult(request):
return render(request,"buyer/payresult.html")
视图: 服务端,收到支付结果,然后修改订单状态
打印支付宝请求传的参数
修改订单状态
修改页面显示样式
(三)其他支付方式
富有,连连,渤海银行,攀枝花银行,民生银行
请求方式:
- api接口
- form表单(网关接口)
form表单支付流程
api支付流程
二、Django的部署
部署 虚拟机,docker ,云服务器
django 2.2.1
python 3.5.2
linux
python 3.5 + django 2.2.1 + nginx + uwsgi + linux
nginx apache
django 自带服务,python manage.py runserver 启动,django自带一个小型的服务器,最大并发量200,用来开发测试。需要nginx(反向代理,负载均衡),但是使用nginx直接加django不行,需要中间人Uwsgi,django项目的wsgi.py
云服务:
ip地址: 公网 私有网络
防火墙
配置安全组