支付功能查看官方文档。
常见的支付
支付宝
- 需要企业资质
- 营业执照
微信
- 要求同支付宝
- 要认证,认证一次两百,一年收一次
银联
- 也有一定要求
- 百度钱包
- 京东钱包
支付宝支付
支付宝开放平台(蚂蚁金服开放平台):https://open.alipay.com/platform/home.htm
开发文档:https://opendocs.alipay.com/open/200
调用接口API文档:https://opendocs.alipay.com/apis/api_1
支付流程(看明白工资加1000)
创建应用
添加功能
这些功能都需要签约
签约需要认证等待,为保证开发者开发的便捷,支付宝还有沙箱测试:https://opendocs.alipay.com/open/200/105311
使用沙箱的话,需要使用专门的沙箱支付宝app。
去github上使用Python的接口来调用支付宝:https://github.com/fzlee/alipay/blob/master/README.zh-hans.md#alipay.trade.page.pay
官方也出现了python调用接口的文档:https://opendocs.alipay.com/open/54/103419/
这里采用github上的第三方库。
Python SDK调用
安装
# 安装python-alipay-sdk
pip install python-alipay-sdk --upgrade
生成密钥文件
初始化
我们先写一个url用于支付页面:
url(r'^alipay/', views.alipay, name='alipay'),
views:
def alipay(request):
# 构建支付的客户端 AlipayClient
alipay_client = AliPay(
appid=ALIPAY_APPID,
app_notify_url=None, # 默认回调url
app_private_key_string=APP_PRIVATE_KEY,
# 支付宝的公钥,验证支付宝回传消息使用,不是你自己的公钥,
alipay_public_key_string=ALIPAY_PUBLIC_KEY,
sign_type="RSA", # RSA 或者 RSA2
debug=False # 默认False
)
# 使用Alipay进行支付请求的发起
subject = 'Airpods Pro'
# 电脑网站支付,需要跳转到https://openapi.alipay.com/gateway.do? + order_string
order_string = alipay_client.api_alipay_trade_page_pay(
out_trade_no="111",
total_amount=1115,
subject=subject,
return_url="https://www.justinwuwei.cn",
notify_url="https://www.justinwuwei.cn" # 可选, 不填则使用默认notify url
)
# 客户端操作
return redirect('https://openapi.alipaydev.com/gateway.do?'+order_string)
app_private_key是自己生成的私钥
alipay_public_key是阿里的公钥
settings.py:
ALIPAY_APPID = '2021000116677905'
APP_PRIVATE_KEY = open(os.path.join(BASE_DIR, 'alipay_config/app_rsa_private_key.pem'), 'r').read()
ALIPAY_PUBLIC_KEY = open(os.path.join(BASE_DIR, 'alipay_config/alipay_rsa_public_key.pem'), 'r').read()
总结一下就是,服务端生成订单信息,加密好发送给支付宝,剩下的支付流程和服务器没有关系。
接口接入商城数据库
将刚刚写好的支付宝接口接入商城数据库:
order_detail.js:
$(function(){
$('#alipay').click(function(){
console.log('支付');
var order_id = $(this).attr('orderid');
// $.getJSON('/peiqi1/payed/', {'orderid': orderid}, function(data) {
// console.log(data);
//
// if(data['status']===200){
// window.open('/peiqi1/mine/', target='_self');
// }
// })
window.open('/peiqi1/alipay/?orderid='+ order_id, target='_self');
})
})
views:将订单的信息传入支付宝调用接口
def alipay(request):
# 获取订单号,并且再次计算总价格
order_id = request.GET.get('orderid')
order = Order.objects.get(pk=order_id)
order_total = order.o_price
# print(order_id)
# print(order_total)
# 构建支付的客户端 AlipayClient
alipay_client = AliPay(
appid=ALIPAY_APPID,
app_notify_url=None, # 默认回调url
app_private_key_string=APP_PRIVATE_KEY,
# 支付宝的公钥,验证支付宝回传消息使用,不是你自己的公钥,
alipay_public_key_string=ALIPAY_PUBLIC_KEY,
sign_type="RSA", # RSA 或者 RSA2
debug=False # 默认False
)
# 使用Alipay进行支付请求的发起
subject = 'Airpods Pro'
# 电脑网站支付,需要跳转到https://openapi.alipay.com/gateway.do? + order_string
order_string = alipay_client.api_alipay_trade_page_pay(
out_trade_no=str(uuid.uuid4()), # 订单号
total_amount=order_total,
subject=subject,
return_url="https://www.justinwuwei.cn",
notify_url="https://www.justinwuwei.cn" # 可选, 不填则使用默认notify url
)
# 客户端操作
return redirect('https://openapi.alipaydev.com/gateway.do?'+order_string)
支付成功返回
当用户支付结束时,支付宝会发送支付结果至服务器,这时需要修改订单信息,并且返回给用户支付结果的界面(成功/失败)。
此处评论已关闭