文章目录
一、django 支付
1. 微信
① 请求地址
https://pay.weixin.qq.com/static/applyment_guide/applyment_index.shtml
② 申请条件
因为申请条件较苛刻,所以一般用支付宝较多
2. 支付宝
① 支付宝支付流程
- 买家发出购买请求,服务生成订单
- 提交订单,卖家将支付请求发到支付宝
- 支付宝返回支付页面
- 买家在支付页面完成付款
- 支付处理付款请求
- 支付宝返回处理结果(支付完成,支付失败,支付进行中)
② 支付url
https://open.alipay.com/platform/home.htm
③ 注册流程
④ 开发测试 使用沙箱环境
下载安卓端
账号信息
⑤ 支付宝接口文档地址
https://docs.open.alipay.com/
⑥ 支付宝接口文档找到rsa生成密钥文档,下载对应工具
下载到指定文件夹,然后双击打开下面的文件
⑦ 下载工具后生成密钥
⑧ 配置公钥 私钥
二、使用python完成支付
以卖家的身份进行收款,
支付宝已经写好的sdk,可以使用模块的方式使用,
使用需要安装
1.安装sdk
pip install pycryptodome ## 阿里sdk的依赖包
pip install python-alipay-sdk --upgrade
2.创建文件,测试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")
视图: 服务端,收到支付结果,然后修改订单状态
打印支付宝请求传的参数
修改订单状态
修改页面显示样式