支付宝介绍

支付宝开发网址:

支付宝开放平台: https://open.alipay.com/platform/home.htm
支付宝沙箱环境: https://openhome.alipay.com/platform/appDaily.htm?tab=info
支付宝开发者文档:https://openhome.alipay.com/developmentDocument.htm
电脑网站支付流程:https://docs.open.alipay.com/270
生成签名:https://docs.open.alipay.com/291/106103/
python-alipay-adk : https://github.com/fzlee/alipay/blob/master/README.zh-hans.md

 使用python对接支付宝:

# 访问"支付宝开发平台"登录,可以访问开发者中心
https://open.alipay.com/platform/home.htm
# 可以参考"电脑网站支付" 熟悉电脑支付整体流程
https://docs.open.alipay.com/270/105899/

创建应用(这里使用沙箱环境测试)

 沙箱环境说明:

 公钥私钥的那点事儿

按照官方要求生成秘钥:

生成秘钥参考官网:https://docs.open.alipay.com/291/105971 

      公钥私钥的那点事儿

 把生成的app公钥粘贴到沙箱环境的app中:

       公钥私钥的那点事儿

  •  支付宝公钥一会再程序中要使用

公钥私钥的那点事儿

 使用 python-alipay-sdk 支付&查询支付结果

  • 说明

      1. 阿里官方没有提供python对接支付的sdk,但是python库中有非官方的sdk包可以使用

      2. python-alipay-adk : https://github.com/fzlee/alipay/blob/master/README.zh-hans.md

      3. 使用起来非常简单,只要传入几个必要的参数就可以完成

      4. 由于支付对安全要求很高,所以要理解对接支付宝安全的流程:公钥加密、私钥解密  这八个字

  • 上代码
from alipay import AliPay

# 沙箱环境中 app 私钥
app_private_key_string = open('app_private_key.pem').read()
# 支付宝公钥
alipay_public_key_string = open( 'alipay_public_key.pem').read()


def get_alipay_url():
    alipay = AliPay(
        appid="2016101800716047",  # 沙箱appid
        app_notify_url=None,  # 默认回调url
        app_private_key_string=app_private_key_string,
        # 支付宝的公钥,验证支付宝回传消息使用,不是你自己的公钥,
        alipay_public_key_string=alipay_public_key_string,
        sign_type="RSA",  # RSA 或者 RSA2
        debug=True,  # 默认False,我们是沙箱,所以改成True(让访问沙箱环境支付宝地址)
    )
    # 调用支付接口
    # 电脑网站支付,需要跳转到https://openapi.alipay.com/gateway.do? + order_string
    order_string = alipay.api_alipay_trade_page_pay(
        out_trade_no="201611124",  # 订单id,应该从前端获取
        total_amount=str(0.01),  # 订单总金额
        subject="测试阿里云付款",  # 付款标题信息
        return_url=None,  # 付款成功回调地址(可以为空)
        notify_url=None  # 付款成功后异步通知地址(可以为空)
    )
    pay_url = "https://openapi.alipaydev.com/gateway.do?" + order_string
    print(pay_url)  # 将这个url复制到浏览器,就会打开支付宝支付页面


def query_pay():
    alipay = AliPay(
        appid="2016101800716047",  # 沙箱appid
        app_notify_url=None,  # 默认回调url
        app_private_key_string=app_private_key_string,
        # 支付宝的公钥,验证支付宝回传消息使用,不是你自己的公钥
        alipay_public_key_string=alipay_public_key_string,
        sign_type="RSA",  # RSA 或者 RSA2
        debug=True,  # 默认False,我们是沙箱,所以改成True(让访问沙箱环境支付宝地址)
    )
    trade_query = alipay.api_alipay_trade_query(
        out_trade_no=20161112,  # 上面生成支付码页面时传入的商品订单号
        trade_no=None
    )
    print(trade_query)


if __name__ == '__main__':
    get_alipay_url()
    query_pay()


'''
trade_query 查询用户付款信息
返回信息详情请看官方:https://docs.open.alipay.com/api_1/alipay.trade.query
{
    "code": "10000",    # code=10000代表支付成功
    "msg": "Success",
    "buyer_logon_id": "foq***@sandbox.com",
    "buyer_pay_amount": "0.00",
    "buyer_user_id": "2088102180228981",
    "buyer_user_type": "PRIVATE",
    "invoice_amount": "0.00",
    "out_trade_no": "20161112",
    "point_amount": "0.00",
    "receipt_amount": "0.00",
    "send_pay_date": "2020-02-20 21:20:48",
    "total_amount": "0.01",
    "trade_no": "2020022022001428981000087565",
    "trade_status": "TRADE_SUCCESS"  
}
'''

alipay_test.py
alipay_test.py

相关文章:

  • 2022-03-06
  • 2022-01-01
  • 2022-12-23
  • 2021-12-26
猜你喜欢
  • 2021-12-05
  • 2021-08-24
  • 2021-10-17
  • 2022-12-23
  • 2021-07-24
相关资源
相似解决方案