python接入支付寶的例項操作
Python接入支付寶流程:
第一步:
首先要下載一個python的sdk,這個sdk在支付寶的開發者文件中是沒有的,但是強大的python程式設計師自己開發了一套屬於python的支付寶支付sdk。
下載方式:pip install python-alipay-sdk,github的連結為 https://github.com/fzlee/alipay
第二步:
下載好sdk之後,需要對支付寶進行一些相關的配置,支付寶的環境分為兩種,一為正式環境,也就是程式上線之後的環境。
二為沙箱環境,即開發者在開發專案時候的測試環境。
正式環境需要建立應用,然後支付寶後臺進行稽核,通過後會分配一個appid作為一個唯一標誌。如圖為建立應用。
這裡我用到的是沙箱環境,所以不需要等待支付寶的稽核,點選進入開發者中心–>研發服務–>沙箱應用。如圖所示它會自動給你分配一個appid,你只需要這是一下私鑰和公鑰即可。
第三步:
需要生成自己的服務端的私鑰和公鑰,現在支付寶支援的加密方式為sha256,sha1,
推薦使用sha256.支付寶提供了生成祕鑰的方法和步驟(https://docs.open.alipay.com/291/105971/ )
開啟括號中的連結,即可看到詳細的生成祕鑰的方法和步驟。公鑰私鑰生成完之後,要將公鑰上傳到支付寶金鑰設定中。將支付寶的公鑰copy到本地,將自己的公鑰私鑰和支付寶的公鑰儲存好(這個很重要),一般都儲存到本地專案的檔案中。
第四步:
瞭解並熟悉支付寶的開發流程。如圖為客戶端通過後端程式與支付寶後端的互動流程圖
1、使用者選擇使用支付寶付款
2、使用者使用app向商戶伺服器發起請求獲取簽名後的訂單資訊
3、商戶服務端返回簽名後的訂單資訊(查詢字串或者url)例如:
app_id=201609239&biz_content=%7B%22subject%22%3A%22%5Cu6d4b%5Cu8bd5%5Cu8ba2%5Cu5%22out_trade_no%22%3A%22201702021111%22%2C%22total_amount%22%3A1000%2C%22product_code%22%3A%22FAST_INSTANT_TRADE_PAY%22%7D&charset=utf-8&method=alipay.trade.page.pay¬ify_url=http%3A%2F%dus.com%2F&return_url=http%3A%2F%2F47.92.87.172%3A8000%2F&sign_type=RSA2×tamp=2015+15%3A19%3A15&version=1.0&sign=BSzk6LzwNp
4、商戶app呼叫支付介面
5-8、支付寶服務端接收請求,返回支付結果。
9、商戶app向商戶服務端發起請求,同步支付結果,服務端驗證簽名,解析支付結果。
10、返回支付結果。
11、商戶app展示支付結果。
12、支付寶服務端向商戶服務端非同步傳送支付通知。
13、商戶服務端接收支付通知,並返回響應給支付寶服務端。
第五步:
python程式碼如下
#業務處理:使用pythonsdk呼叫支付寶的支付介面 #初始化 fromalipayimportAliPay alipay=AliPay( appid="2016092300574189",app_notify_url=None,app_private_key_path=r"D:\python原始碼\alipay_keys\private_keys",alipay_public_key_path=r"D:\python原始碼\alipay_keys\public_key",sign_type="RSA2",debug=True,) #呼叫介面 #total_pay=order.total_price+order.transit_price total_pay=12311 order_string=alipay.api_alipay_trade_page_pay( out_trade_no=1231231312313,total_amount=str(total_pay),subject='測試text%s'%1,return_url=None,notify_url=None,) #返回應答 pay_url="https://openapi.alipaydev.com/gateway.do?"+order_string print(pay_url)
這段程式碼實現的功能為生成一個簽名後的url,這個url就是訪問支付寶支付的url
其中初始化部分的引數:appid為支付寶的唯一標誌id,
app_notify_url為支付寶後臺完成支付的時候非同步通知到商戶的後臺伺服器的URL地址。
app_private_key_path為自己生成的私鑰,
alipay_public_key_path為支付寶的公鑰。sign_type為簽名的加密方式,
debug為true時,支付寶的支付的url為非正式的環境,如果為線上環境可以將其改為false。
呼叫介面部分的引數: out_trade_no為訂單編號這個是商戶後臺伺服器自己生成的訂單編號。
total_amount為支付金額(必須為字串型別),subject為標題,return_url為支付成功後支付頁面要跳轉到哪個頁面。
notify_url為非同步通知的url。
第六步:
執行這段程式碼會得到一個簽名之後的url。
訪問這個url,看到的結果為:
可以手機下載一個沙箱環境的支付寶,也可以點選右側的登入賬戶付款。在沙箱應用中提供了用於付款的賬號和密碼。
第七步:
登入完成支付
例項擴充套件:
Python對接支付寶支付自實現功能
# -*- coding: utf-8 -*- import base64 import json import urllib.parse from datetime import datetime import requests from cryptography.hazmat.backends import default_backend from cryptography.hazmat.primitives import hashes from cryptography.hazmat.primitives import serialization from cryptography.hazmat.primitives.asymmetric import padding class AliPayException(Exception): def __init__(self,data): super(AliPayException,self).__init__() self.data = data def __str__(self): return "alipay - {}".format(self.data) def __unicode__(self): return u"alipay - {}".format(self.data) class AliPayVerifyException(AliPayException): def __init__(self,msg,data): super(AliPayVerifyException,self).__init__('alipay verify except - {}:{}'.format(msg,data)) class AliPay: def __init__(self,**kwargs): """ :param kwargs:
到此這篇關於python接入支付寶的例項操作的文章就介紹到這了,更多相關python如何接入支付寶內容請搜尋我們以前的文章或繼續瀏覽下面的相關文章希望大家以後多多支援我們!