2021 最新版 Django 接入 支付(支付宝为例

Django 接入 支付(支付宝为例)

支付宝开放平台入口

登录 账号

控制台

创建应用
在这里插入图片描述

开发服务-测试

沙箱环境

在这里插入图片描述

沙箱环境

支付宝提供给开发者的模拟支付的环境。跟真实环境是分开的。

支付宝开发文档

配置RSA2公私钥

生成项目公钥

$ openssl
$ OpenSSL> genrsa -out app_private_key.pem 2048  # 制作私钥RSA2
$ OpenSSL> rsa -in app_private_key.pem -pubout -out app_public_key.pem # 导出公钥

$ OpenSSL> exit

会生成 app_private_key.pem, app_public_key.pem 两个文件

支付宝设置(setting中)

#   支付宝 设置
ALIPAY_APPID = '2021000117671833'
ALIPAY_DEBUG = True    
ALIPAY_URL = 'https://openapi.alipaydev.com/gateway.do'
ALIPAY_RETURN_URL = 'http://www.demo.site:8080/pay_success.html'
APP_PRIVATE_KEY_PATH = os.path.join(BASE_DIR, 'apps/payment/keys/app_private_key.pem')
ALIPAY_PUBLIC_KEY_PATH = os.path.join(BASE_DIR, 'apps/payment/keys/alipay_public_key.pem')
调用时注意

notify_url=" ", 此参数一定要写,Str类型

   # 生成登录支付宝连接
   order_string = alipay.api_alipay_trade_page_pay(
        out_trade_no=order_id,
        total_amount=str(order.total_amount),
        subject="美多商城%s" % order_id,
        return_url=settings.ALIPAY_RETURN_URL,
        notify_url=" ",

完整代码

app_private_key_string = open(settings.APP_PRIVATE_KEY_PATH).read()
        alipay_public_key_string = open(settings.ALIPAY_PUBLIC_KEY_PATH).read()
        # 创建支付宝对象
        alipay = AliPay(
            appid=settings.ALIPAY_APPID,
            app_notify_url=None,  # 默认回调url
            app_private_key_string=app_private_key_string,
            # 支付宝的公钥,验证支付宝回传消息使用,不是你自己的公钥,
            alipay_public_key_string=alipay_public_key_string,
            sign_type='RSA2',
            debug=True
        )

        print("打印参数》》》》》")

        print(type(settings.ALIPAY_RETURN_URL))
        print("执行》》》》》》》")
        # 生成登录支付宝连接
        # 老版本接口
        # order_string = alipay.api_alipay_trade_page_pay(
        #     out_trade_no=order_id,
        #     total_amount=str(order.total_amount),
        #     subject="美多商城%s" % order_id,
        #     return_url=settings.ALIPAY_RETURN_URL,
        #     notify_url=" ",
        # )
        
		# 生成登录支付宝连接
        # 3.0 接口方法
        order_string = alipay.client_api(
            "alipay.trade.page.pay",
            biz_content={
                "subject": "美多商城%s" % order_id,
                "out_trade_no": order_id,
                "total_amount": str(order.total_amount),
                "product_code": "FAST_INSTANT_TRADE_PAY",
            },
            return_url=settings.ALIPAY_RETURN_URL,
        )
        # 响应登录支付宝连接
        # 真实环境电脑网站支付网关:https://openapi.alipay.com/gateway.do? + order_string
        # 沙箱环境电脑网站支付网关:https://openapi.alipaydev.com/gateway.do? + order_string
        alipay_url = settings.ALIPAY_URL + "?" + order_string
        # print("alipay_url")
        # print(alipay_url)
        return JsonResponse({'code': 0, 'errmsg': 'OK', 'alipay_url': alipay_url})

版权声明:本文为k8vg___原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。