日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > python >内容正文

python

python 支付宝支付 无效根证书_Python-支付宝SDK的使用与注意事项,pythonalipaysdk,及,点...

發布時間:2025/3/15 python 22 豆豆
生活随笔 收集整理的這篇文章主要介紹了 python 支付宝支付 无效根证书_Python-支付宝SDK的使用与注意事项,pythonalipaysdk,及,点... 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

一. 在

點擊跳轉

這里拿到自己的 appid? 和? 支付寶公鑰 ,

如果想要得到 支付寶的公鑰 就需要獲取 應用的公鑰,具體獲取方式 :

應用私鑰和支付寶公鑰 獲取 和 配置 過程:

1. 下載后打開文件夾? 點擊? RSA簽名驗簽工具.bat ? 然后生成密鑰 , 然后退出就行了

2. 找到 RSA密鑰 的文件夾 , 將里面的 應用公鑰 復制一下 , 然后在?沙箱應用 中點擊 -> 查看應用公鑰,

->?點擊修改, 將剛才的?應用公鑰?粘貼上去,然后保存,此刻你會多一個支付寶公鑰?( 注: 當你修改應用公鑰后,支付寶公鑰會自動生成 )

3. 準備兩個文本文件名為( 文件名隨意,注意規范 ) :

alipay_public_2048.txt?(存放支付寶公鑰) 和?app_private_2048.txt?(存放應用私鑰)

這里注意兩點 :

1. 應用私鑰指的是 剛剛 RSA密鑰 文件夾中 的應用私鑰 ,而 公鑰指的是 剛剛上傳 應用公鑰后給你自動生成的 應用公鑰

2. 將應用私鑰和支付寶公鑰保存在 文本中的時候 要添加 一個標識 ( 必須加 ):

- 打開?alipay_public_2048.txt(存放支付寶公鑰) 這個空文本 格式是這樣的:

-----BEGIN PUBLIC KEY-----

中間放入你的支付寶公鑰

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

- 打開?app_private_2048.txt?(存放應用私鑰)這個空文本 格式是這樣的:

-----BEGIN RSA PRIVATE KEY-----

中間放你的應用私鑰

-----END RSA PRIVATE KEY-----

下載工作

pip install python-alipay-sdk --upgrade

2. 導入加密模塊

pip install Crypto

二:示例代碼

- Url

urlpatterns=[

url(r"^index/$",views.index), # 商品頁面 API

url(r"^back_url/$",views.back_url), # 支付成功后的重定向 API

url(r"^update_order/$",views.back_url), # 支付成功后的異步POST請求 API

]

- Views

from django.shortcuts import render,HttpResponse,redirect

from django.views.decorators.csrf import csrf_exempt # 取消 csrf組件

import timedef Alipay():

alipay = AliPay(

appid='2016092800613180',  # appid (詳細在你的沙箱應用中的 APPID)

app_notify_url='http://127.0.0.1:8045/update_order/', # 異步回調url(回調地址需是服務器地址,否則接收不到回調結果)

app_private_key_path='app_test/app_private_2048.txt', # 應用私鑰

alipay_public_key_path='app_test/alipay_public_2048.txt', # 支付寶公鑰

sign_type="RSA2", # RSA 或者 RSA2 -- 這里注意一點:2018年1月5日后創建的應用只支持RSA2的格式;

debug=True, # 默認False -- 設置為True則是測試模式,正式上線的話改為 False就行了

)

return alipay

def index(request):

"""

# 這里發起POST的支付請求

"""

if request.method == 'GET':

return render(request,'index.html')

alipay = Alipay()

out_trade_no = "x2" + str(time.time())

order_string = alipay.api_alipay_trade_page_pay(

out_trade_no=out_trade_no, # 訂單號 - 注 : 每次的訂單號不能一致

total_amount=0.01, # 商品價格

subject='shop_name', # 商品名稱

return_url = 'http://127.0.0.1:8045/back_url/', # 支付成功后 - 重定向自己的網站

notify_url='http://127.0.0.1:8045/update_order/' # 支付成功后 - 異步發送支付結果到回調地址(地址需是服務器地址,否則無法接收到回調結果)

)

pay_url = "https://openapi.alipaydev.com/gateway.do?{}".format(order_string)

# 注 :這里結尾不能加 /

return redirect(pay_url)

def back_url(request):

"""

# 支付成功后的回調函數 -- 重定向自己的網站

# 同時在重定向之前會校驗此次支付信息是否正確

:param request:

:return:

"""

params = request.GET.dict()

sign = params.pop('sign', None)

print(params)

alipay = Alipay()

status = alipay.verify(params, sign) # 返回 True or False

if status:

return HttpResponse('支付成功')

return HttpResponse('支付失敗')

@csrf_exempt

def update_order(request):

"""

支付成功后,支付寶向該地址發送的POST請求(用于修改訂單狀態)

:param request:

:return:

"""

if request.method == 'POST':

from urllib.parse import parse_qs

body_str = request.body.decode('utf-8')

post_data = parse_qs(body_str)

post_dict = {}

for k, v in post_data.items():

post_dict[k] = v[0]

alipay = Alipay()

sign = post_dict.pop('sign', None)

status = alipay.verify(post_dict, sign)

if status:

# 1. 獲取訂單號(獲取的訂單號是你上面的參數: out_trade_no)

out_trade_no = post_dict.get('out_trade_no')

print(out_trade_no)

# 2. 根據訂單號將數據庫中的數據進行更新(修改訂單狀態)

return HttpResponse('success')

# 3. 最終需要返回 "success" 字符給支付寶,否則支付寶將一直請求該地址并發送回調結果(具體看官方文檔)

return HttpResponse('success')

- AliPay 中的加密配置(本身就是配置好的,但是如果驗證出問題了,看看這里對不對):

from datetime import datetime

from Crypto.PublicKey import RSA

from Crypto.Signature import PKCS1_v1_5

from Crypto.Hash import SHA256

from urllib.parse import quote_plus

from urllib.parse import urlparse, parse_qs

from base64 import decodebytes, encodebytes

import json

三:最后總結一點容易出現的錯誤 和 一些方法的說明

-?return_url :支付成功后 - 重定向自己的網站

- notify_url :支付成功后 - 發送的POST訂單驗證消息(異步)

- out_trade_no :這個是訂單號 -- 注意一點,千萬不要測試的時候每次使用一個同一個訂單號,否則會出現支付頁面無法打開的問題

- debug = True / False :如果等于 True 的話就是測試環境的支付,如果是 False 就是正式環境的支付

- app_private_key_path :后面寫 應用的私鑰 路徑位置

- alipay_public_key_path : 后面寫 支付寶的公鑰 路徑位置

- sign_type = "RSA2" :可以使用? RSA 或者 RSA2 ,

這里注意下 :2018年1月5日后創建的應用只支持RSA2的格式;

-?"https://openapi.alipaydev.com/gateway.do?{}".format(order_string)? --? 結尾不要加 / (反斜杠)

注:帶 dev 則是測試用的接口,但是不帶 dev 就是真正的支付接口

- 最后說一點規范:

1. 建議把 AliPay 下面的 appid 什么的信息 寫在 settings 中,

然后導入 settings 在通過 settings.APPID 拿到信息

2. 將存放 應用密鑰 和 支付寶公鑰 的 txt 文件放到單獨一個文件夾中

總結

以上是生活随笔為你收集整理的python 支付宝支付 无效根证书_Python-支付宝SDK的使用与注意事项,pythonalipaysdk,及,点...的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。