支付寶(沙箱支付)
阿新 • • 發佈:2020-12-09
獲取支付寶開放平臺的的公鑰 用來加密
獲取支付寶開放平臺助手的私鑰 用來解密
存放進一個txt檔案然後讀出來(為了美觀)
也可以直接定義
獲取到開放平臺的沙箱id配置在setting.py和url 和vue回撥地址
編寫一個自定義函式
def creat_zfb_url(out_trade_no, total_amount, subject): appkey, alikey = read_alikey() alipay = AliPay( appid=SHAZFB_APPID, app_notify_url=None, # 預設回撥url app_private_key_string=appkey, # 支付寶的公鑰,驗證支付寶回傳訊息使用,不是你自己的公鑰, alipay_public_key_string=alikey, sign_type="RSA2", # RSA 或者 RSA2 debug=False, # 預設False ) # 如果你是 Python 3的使用者,使用預設的字串即可 num = str(random.randint(0, 999999)) # subject = "測試訂單"+num # money = random.randint(0,1000) # 電腦網站支付,需要跳轉到https://openapi.alipay.com/gateway.do? + order_string order_string = alipay.api_alipay_trade_page_pay( out_trade_no=out_trade_no, total_amount=total_amount, subject=subject, return_url=SHA_RETURN_URL, ) return SHA_URL + order_string
正常寫view
class ZFBView(APIView): def post(self,request): id=request.data.get('id') use_id =request.user.id if not all([id,use_id]): return Response({'code':4005,'msg':'引數不全'}) try: order_obj=Orders.objects.get(id=id) user_obj=User.objects.get(id=use_id) #拼接一個字串 string='%s先生的豪華訂單 號:%s'%(user_obj.username,order_obj.order_id) url=creat_zfb_url(order_obj.order_id,int(order_obj.total_amount),string) print(url) return Response({'code':200,'msg':'success','data':{'pay_url':url}}) except Exception as e: raise e return Response({'code':999,'msg':'建立失敗'}) class GetZFBinfo(APIView): def get(self,request): print(request.query_params) trade_no=request.query_params.get('trade_no') order_id=request.query_params.get('out_trade_no') order_obj=Orders.objects.filter(order_id=order_id).update(trade_no=trade_no) return Response({'code':0,'msg':'success'})