Django(十):Django实现支付宝扫码支付(商城系统的直接购买功能) - Go语言中文社区

Django(十):Django实现支付宝扫码支付(商城系统的直接购买功能)


一、支付宝支付


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.请求条件

在这里插入图片描述

版权声明:本文来源CSDN,感谢博主原创文章,遵循 CC 4.0 by-sa 版权协议,转载请附上原文出处链接和本声明。
原文链接:https://blog.csdn.net/qq_40558166/article/details/102405133
站方申明:本站部分内容来自社区用户分享,若涉及侵权,请联系站方删除。

0 条评论

请先 登录 后评论

官方社群

GO教程

猜你喜欢