diff --git a/unipay/init.py b/unipay/init.py index e6c71d7..404ba22 100644 --- a/unipay/init.py +++ b/unipay/init.py @@ -20,9 +20,8 @@ CONF = { }, "alipay": { "app_id": os.getenv("ALIPAY_APPID",""), - "privkey_pem": open(os.getenv("ALIPAY_PRIV","./alipay_priv.pem"),"rb").read(), - "alipay_pub_pem": open(os.getenv("ALIPAY_PUB","./alipay_pub.pem"),"rb").read(), - "sandbox": True + "app_private_key_pem": open(os.getenv("ALIPAY_PRIV","./alipay_priv.pem"),"rb").read(), + "alipay_public_key_pem": open(os.getenv("ALIPAY_PUB","./alipay_pub.pem"),"rb").read() }, "stripe": { "api_key": os.getenv("STRIPE_KEY","") diff --git a/unipay/providers/alipay.py b/unipay/providers/alipay.py index 2c3d5a7..9cf5cf3 100644 --- a/unipay/providers/alipay.py +++ b/unipay/providers/alipay.py @@ -26,10 +26,8 @@ class AlipayGateway(Gateway): app_id: str, app_private_key_pem: str, alipay_public_key_pem: str, - notify_url: str, ): self.app_id = app_id - self.notify_url = notify_url # -------- load keys ------- self._private_key = serialization.load_pem_private_key( @@ -82,15 +80,29 @@ class AlipayGateway(Gateway): # 支付 - H5 页面跳转 # ============================================================================== - async def create_payment(self, *, out_trade_no: str, subject: str, amount: str) -> str: + async def create_payment(self, dayload: payload: Dict[str, Any]) -> str: """ 返回一个可以在 H5 里直接重定向的支付宝支付 URL """ + "appid": self.appid, + "mchid": self.mchid, + "description": payload["subject"], + "out_trade_no": payload["out_trade_no"], + "notify_url": payload["notify_url"], + "amount": { + "total": int(payload["amount"]), + "currency": payload.get("currency", "CNY") + }, + "scene_info": { + "payer_client_ip": payload.get("client_ip", "127.0.0.1"), + "h5_info": {"type": "Wap"} + } + biz_content = { - "out_trade_no": out_trade_no, - "total_amount": amount, - "subject": subject, + "out_trade_no": payload["out_trade_no"], + "total_amount": payload["amount"], + "subject": payload["subject"], "product_code": "QUICK_WAP_WAY" } @@ -102,7 +114,7 @@ class AlipayGateway(Gateway): "sign_type": "RSA2", "timestamp": time.strftime("%Y-%m-%d %H:%M:%S"), "version": "1.0", - "notify_url": self.notify_url, + "notify_url": payload["notify_url"], "biz_content": json.dumps(biz_content, separators=(",", ":")) }