为什么要用三方支付?
在没有第三方支付平台之前,当用户发起支付请求时,用户要和银行签约(转账),特别不方便。为了解决这些问题,出现了第三方支付,第三方平台完成签约,节省了用户时间。支付宝支付流程
商家获取支付宝的公钥和自己的私钥(私钥加密和公钥解密),用私钥向支付宝请求,解密,验证,支付,支付宝将处理后的返回值传给商家。支付成功时,返回商家的订单号、金额、时间戳等消息,支付失败后也反馈给商家。

配置过程
1。获取APPID
支付宝开放平台:https://open.alipay.com/
2。在线生成密钥
3。获取公钥
现在我们有了所需的公钥。
在python项目中集成支付宝
class pay:" "支付宝支付接口(PC支付接口)" "
def __init__(self,appid,app_notify_url,app_private_key_path,支付宝_public_key_path,return_url,debug = False):self . appid = appid self . app _ notify _ URL = app _ notify _ notify_ _ gateway = " https://open API . AliPay dev . com/gateway . do " else:self。_ _ gateway = " https://open API . AliPay . com/gateway . do "
def direct _ PAY(self,subject,out_trade_no,total_amount,return_url=None,* * kwargs):biz _ content = { " subject ":subject," out_trade_no": out_trade_no," total_amount": total_amount," product _ code ":" FAST _ INSTANT _ TRADE _ PAY " ,}
biz _ content . update(kwarg" .加入(“{0}={1}”。format(k,v) for k,v in unsigned _ items)sign = self . sign(unsigned _ string . encode(" utf-8 "))quoted _ string = " & amp;" .加入(“{0}={1}”。format(k,quote_plus(v)) for k,v in unsigned _ items)
signed _ string = quoted _ string+" & amp;sign = "+quote _ plus(sign)return signed _ string
def ordered _ data(self,data): complex_keys = for key,value in data . items:if is instance(value,dict):complex _ keys . append(key)
for key in complex _ keys:data[key]= JSON . dumps(data[key],分隔符=(',',':')
return sorted([(k,v) for k解码(“utf8”)。replace("n "," ")return sign
def _ verify(self,raw_content,signature):key = self . AliPay _ public _ key signer = PKCS1 _ v1 _ 5 . new(key)digest = sha 256 . new digest . update(raw _ content . encode(" utf8 "))if signer . verify(digest,decode bytes(signature . encode(" utf8 ")):return True return False
def verify(self,data,signature): if "sign_type" .join (u "{} = {} "format (k,v) for k,v in unsigned _ items)返回self。_ verify(消息,签名)实例化该类。Def init _支付宝:#初始化支付宝支付宝=支付宝(AppID = "AppID ",app _ notify _ URL = "回调地址",return_url= "回调地址",app_private_key_path= "私钥相对路径",Pay _ public _ key _ path = "公钥相对路径",debug=True #支付环境)返回支付宝APIasycdef get(self):
Alipay = init _ Alipay #传递一个标题、订单号和订单价格params = alipay.direct_pay("三方广告平台",order _ no,money)URL = f " https://open API . Alipay dev . com/gateway . do? "回归自我。写(ret _ JSON (URL))
#建立一个支付成功后回调的回调地址,在这里可以得到订单号(out_trade_no)、金额(total_amount)和时间戳,然后处理业务逻辑。
摘要
支付包有自己的接口文档,我在Python环境下配置的,可以直接使用。
版权声明:本文为博主原创文章,版权协议遵循CC 4.0。转载请附上原出处链接和本声明。本文链接:https://blog.csdn.net/weixin _ 45394086/文章/详情/121843483








