day83_11_1 阿里配python使用。

一。环境准备。

  1。首先需要在支付包中注册开发者模式,并注册沙箱,模拟支付过程。

  https://openhome.alipay.com/platform/appDaily.htm?tab=info  

  2。然后阅读开发文档,熟悉支付宝支付流程:

  https://docs.open.alipay.com/270/105898/

  3。关于上线app的创建,需成立经营许可证/

https://openhome.alipay.com/platform/appManage.htm#/create/1-ab6b-4f9c4e5c01f11487667522647

  4。安装生成RSA的密钥生成器

  https://docs.open.alipay.com/291/105971

  5.在github中有开源的框架,可以用作开发:

  https://github.com/fzlee/alipay

  在python中需要安装的应用:pip install python-alipay-sdk     --upgrade

  6.设置公钥私钥的模式:

"""
# alipay_public_key.pem
-----BEGIN PUBLIC KEY-----
支付宝公钥
-----END PUBLIC KEY-----

# app_private_key.pem
-----BEGIN RSA PRIVATE KEY-----
用户私钥
-----END RSA PRIV

  7.支付宝链接

"""
开发:https://openapi.alipay.com/gateway.do
沙箱:https://openapi.alipaydev.com/gateway.do
"""

二。分析支付流程。

 

 

 

 

 

 

   1.首先前端提交订单和订单信息(订单金额,订单名字,订单支付方式)

  2.后台views接受数据,生成订单(默认未支付),通过order_string生成支付链接,返回到前端。

  3.前端接收到链接之后通过open的方式跳转,用户进行二维码支付:

then(response =>{
  let order_url = response.data.order_url;
  window.open(order_url,'_self')
  })

  4.支付成功后,就会像前端发送支付成功页面,之后跳转到指定的页面进行渲染(自渲染)。

  5.异步调用后台请求接口,分为8次,防止造成服务器攻击。

三。编写damo和分装:

  测试阶段:

from alipay import AliPay


app_private_key_string = """
-----BEGIN RSA PRIVATE KEY-----

-----END RSA PRIVATE KEY-----
"""
alipay_public_key_string = """
-----BEGIN PUBLIC KEY-----

-----END PUBLIC KEY-----
"""

alipay = AliPay(
    appid="2016101600696171",
    app_notify_url=None,  # 默认回调url
    app_private_key_string=app_private_key_string,
    # 支付宝的公钥,验证支付宝回传消息使用,不是你自己的公钥,   alipay_public_key_string=alipay_public_key_string,
    sign_type="RSA2", # RSA 或者 RSA2
    debug=True  # 默认False
)

import time
from luffyapi.libs.iPay import PAY_URL,alipay

order_string = alipay.api_alipay_trade_page_pay(
    out_trade_no=str(time.time()),
    total_amount=0.01,
    subject='购买商品',
    return_url="http://localhost:8080/",
    notify_url="https://example.com/notify" # 可选, 不填则使用默认notify url
)

order_url = PAY_URL + order_string

if __name__ == '__main__':
    print(order_url)
生成order_url

  使用应用公钥越换支付包公钥,和私钥一起配置。

  封装结构:

libs
    ├── iPay                              # aliapy二次封装包
    │   ├── __init__.py                 # 包文件
    │   ├── keys                        # 密钥文件夹
    │   │   ├── alipay_public_key.pem      # 支付宝公钥
    │   │   └── app_private_key.pem      # 应用私钥
    └── └── settings.py                  # 应用配置  
View Code

 

 

import os
# 支付宝应用id
APP_ID = '2016093000631831'
# 默认异步回调的地址,通常设置None就行
APP_NOTIFY_URL = None
# 应用私钥文件路径
APP_PRIVATE_KEY_PATH = os.path.join(os.path.dirname(__file__), 'keys', 'app_private_key.pem')
# 支付宝公钥文件路径
ALIPAY_PUBLIC_KEY_PATH = os.path.join(os.path.dirname(__file__), 'keys', 'alipay_public_key.pem')
# 签名方式
SIGN_TYPE = 'RSA2'
# 是否是测试环境 - 是否是支付宝沙箱
DEBUG = True
# 支付连接
DEV_PAY_URL = 'https://openapi.alipaydev.com/gateway.do?'
PROD_PAY_URL = 'https://openapi.alipay.com/gateway.do?'
settings
from alipay import AliPay
from .settings import *
# 对外提供支付对象
alipay = AliPay(
    appid=APP_ID,
    app_notify_url=APP_NOTIFY_URL,
    app_private_key_path=APP_PRIVATE_KEY_PATH,
    alipay_public_key_path=ALIPAY_PUBLIC_KEY_PATH,
    sign_type=SIGN_TYPE,
    debug=DEBUG
)

# 对外提供的支付链接前缀
pay_url = DEV_PAY_URL if DEBUG else PROD_PAY_URL
__init__.py
-----BEGIN PUBLIC KEY-----
支付宝公钥
-----END PUBLIC KEY-----
alipay_public_key.pem
-----BEGIN RSA PRIVATE KEY-----
应用私钥
-----END RSA PRIVATE KEY-----
app_private_key.pem

  在dev中偶尔配置钱后端的接口和同步回调接口,异步回调接口的地址。

# 前后台base_url
UP_BASE_URL = 'http://127.0.0.1:8080'
END_BASE_URL = 'http://127.0.0.1:8000'

# alipay回调接口配置
# 上线后必须换成官网地址
# 同步回调的接口(get),前后台分离时一般设置前台页面url
RETURN_URL = UP_BASE_URL + '/pay/success'
# 异步回调的接口(post),一定设置为后台服务器接口
NOTIFY_URL = END_BASE_URL + '/order/success/'
dev.pydev.py

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

posted on 2019-11-12 21:01  一只萌萌哒的提莫  阅读(177)  评论(0编辑  收藏  举报