Kaynağa Gözat

支付宝 沙盒测试环境

chenjunkai 6 yıl önce
ebeveyn
işleme
32d83c3756

+ 12 - 4
Controller/CloudVod.py

@@ -78,6 +78,7 @@ class CloudVodView(View):
 
     def validation(self, request_dict, request, operation):
         response = ResponseObject()
+        # operation => cloudVod/path
         if operation is None:
             return response.json(444, 'error path')
         if operation == 'getSts':
@@ -192,6 +193,8 @@ class CloudVodView(View):
         did = request_dict.get('did', None)
         rank = request_dict.get('rank', None)
         channel = request_dict.get('channel', None)
+        #
+
         qs = Device_Info.objects.filter(userID_id=userID, id=did, isShare=False).values("UID")
         if not qs.exists():
             return response.json(12)
@@ -229,7 +232,8 @@ class CloudVodView(View):
             format(SERVER_DOMAIN=SERVER_DOMAIN, orderID=orderID)
         # call_sub_url = "http://192.168.136.40:8077/cloudVod/payExecute?orderID={orderID}".format(
         #     SERVER_DOMAIN=SERVER_DOMAIN, orderID=orderID)
-        call_clc_url = "{SERVER_DOMAIN}cloudVod/payError".format(SERVER_DOMAIN=SERVER_DOMAIN)
+        # call_clc_url = "{SERVER_DOMAIN}cloudVod/payError".format(SERVER_DOMAIN=SERVER_DOMAIN)
+        call_clc_url = "{SERVER_DOMAIN}web/paid/failed_en.html".format(SERVER_DOMAIN=SERVER_DOMAIN)
         # call_clc_url = "{SERVER_DOMAIN}cloudVod/cancleorder?orderID={orderID}". \
         #     format(SERVER_DOMAIN=SERVER_DOMAIN, orderID=orderID)
         paypalrestsdk.configure(PAYPAL_CRD)
@@ -398,7 +402,8 @@ class CloudVodView(View):
         PayerID = request_dict.get('PayerID', None)
         orderID = request_dict.get('orderID', None)
         if not paymentId or not PayerID or not orderID:
-            red_url = "{SERVER_DOMAIN}cloudVod/payError".format(SERVER_DOMAIN=SERVER_DOMAIN)
+            red_url = "{SERVER_DOMAIN}web/paid/failed_en.html".format(SERVER_DOMAIN=SERVER_DOMAIN)
+            red_url = "{SERVER_DOMAIN}web/paid/failed_cn.html".format(SERVER_DOMAIN=SERVER_DOMAIN)
             return HttpResponseRedirect(red_url)
         paypalrestsdk.configure(PAYPAL_CRD)
         # ID of the payment. This ID is provided when creating payment.
@@ -406,7 +411,8 @@ class CloudVodView(View):
         payres = payment.execute({"payer_id": PayerID})
         print(payres)
         if not payres:
-            red_url = "{SERVER_DOMAIN}cloudVod/payError".format(SERVER_DOMAIN=SERVER_DOMAIN)
+            red_url = "{SERVER_DOMAIN}web/paid/failed_en.html".format(SERVER_DOMAIN=SERVER_DOMAIN)
+            red_url = "{SERVER_DOMAIN}web/paid/failed_cn.html".format(SERVER_DOMAIN=SERVER_DOMAIN)
             return HttpResponseRedirect(red_url)
             # print(payment.error)  # Error Hash
             # return response.json(10, payment.error)
@@ -451,7 +457,9 @@ class CloudVodView(View):
             UID_Bucket.objects.create(uid=UID, channel=channel,
                                       bucket_id=bucketId, endTime=nowTime + addTime)
             # return response.json(0)
-        red_url = "{SERVER_DOMAIN}cloudVod/payOK".format(SERVER_DOMAIN=SERVER_DOMAIN)
+        red_url = "{SERVER_DOMAIN}web/paid/paid_en.html".format(SERVER_DOMAIN=SERVER_DOMAIN)
+        # red_url = "{SERVER_DOMAIN}web/paid/paid_cn.html".format(SERVER_DOMAIN=SERVER_DOMAIN)
+        # red_url = "{SERVER_DOMAIN}cloudVod/payOK".format(SERVER_DOMAIN=SERVER_DOMAIN)
         return HttpResponseRedirect(red_url)
 
     def do_change_status(self, request_dict, userID, response):

+ 30 - 40
Controller/Test.py

@@ -18,78 +18,68 @@ http://192.168.136.40:8077/Test
 '''
 from Object.ResponseObject import ResponseObject
 from Ansjer.config import BASE_DIR
+import json
+from alipay import AliPay
+import time
 
 # 测试接口sdk
 class Test(View):
 
     def get(self, request, *args, **kwargs):
         response = ResponseObject()
-        from alipay import AliPay, ISVAliPay
-        import time
+
         app_private_key_string = open(BASE_DIR + '/Controller/alipay_private_2048.pem').read()
         alipay_public_key_string = open(BASE_DIR + '/Controller/alipay_public_2048.pem').read()
-        orderID = int(time.time())+int(time.time())
+        orderID = int(time.time()) + int(time.time())
         alipay = AliPay(
             appid="2016092200569234",
             app_notify_url=None,  # the default notify path
             app_private_key_string=app_private_key_string,
             # alipay public key, do not use your own public key!
             alipay_public_key_string=alipay_public_key_string,
-            sign_type="RSA",  # RSA or RSA2
+            sign_type="RSA2",  # RSA or RSA2
             debug=False  # False by default
         )
         order_string = alipay.api_alipay_trade_wap_pay(
             out_trade_no=str(orderID),
             total_amount=0.01,
             subject="实用性充气式玩具",
-            return_url="https://test.dvema.com",
-            # notify_url="https://example.com/notify"  # this is optional
+            return_url="http://192.168.136.40:8077/",
+            notify_url="http://test.dvema.com/Test"  # this is optional
         )
         print(order_string)
         from django.http import HttpResponseRedirect
         # return response.json(0,"https://openapi.alipay.com/gateway.do? + {order_string}".format(order_string=order_string))
         print(order_string)
-        return HttpResponseRedirect("https://openapi.alipaydev.com/gateway.do?"+order_string)
-        return HttpResponseRedirect("https://openapi.alipay.com/gateway.do?"+order_string)
-    #     # 增加
-    # def get(self, request, *args, **kwargs):
-    #     response = ResponseObject()
-    #     from alipay import AliPay, ISVAliPay
-    #     import time
-    #     app_private_key_string = open(BASE_DIR + '/Controller/alipay_private_2048.pem').read()
-    #     alipay_public_key_string = open(BASE_DIR + '/Controller/alipay_public_2048.pem').read()
-    #     orderID = int(time.time())+int(time.time())
-    #     alipay = AliPay(
-    #         appid="2016092200569234",
-    #         app_notify_url=None,  # the default notify path
-    #         app_private_key_string=app_private_key_string,
-    #         # alipay public key, do not use your own public key!
-    #         alipay_public_key_string=alipay_public_key_string,
-    #         sign_type="RSA",  # RSA or RSA2
-    #         debug=False  # False by default
-    #     )
-    #     order_string = alipay.api_alipay_trade_wap_pay(
-    #         out_trade_no=str(orderID),
-    #         total_amount=0.01,
-    #         subject="实用性充气版玩具",
-    #         return_url="https://test.dvema.com",
-    #         # notify_url="https://example.com/notify"  # this is optional
-    #     )
-    #     print(order_string)
-    #     from django.http import HttpResponseRedirect
-    #     # return response.json(0,"https://openapi.alipay.com/gateway.do? + {order_string}".format(order_string=order_string))
-    #     print(order_string)
-    #     return HttpResponseRedirect("https://openapi.alipaydev.com/gateway.do?"+order_string)
-    #     # 增加
+        return HttpResponseRedirect("https://openapi.alipaydev.com/gateway.do?" + order_string)
+        return HttpResponseRedirect("https://openapi.alipay.com/gateway.do?" + order_string)
 
     def post(self, request, *args, **kwargs):
+        data = request.POST
         response = ResponseObject()
-        return response.json(0)
+        signature = data.pop("sign")
+        print(json.dumps(data))
+        print(signature)
+        # verify
+        app_private_key_string = open(BASE_DIR + '/Controller/alipay_private_2048.pem').read()
+        alipay_public_key_string = open(BASE_DIR + '/Controller/alipay_public_2048.pem').read()
+        alipay = AliPay(
+            appid="2016092200569234",
+            app_notify_url=None,  # the default notify path
+            app_private_key_string=app_private_key_string,
+            alipay_public_key_string=alipay_public_key_string,
+            sign_type="RSA2",  # RSA or RSA2
+            debug=False  # False by default
+        )
+        success = alipay.verify(data, signature)
+        if success and data["trade_status"] in ("TRADE_SUCCESS", "TRADE_FINISHED"):
+            print("trade succeed")
+        return response.json(0, signature)
 
     # 修改 资源改变
     def put(self, request):
         response = ResponseObject()
-        return response.json(0)
+        return response.json(0, '')
 
     # 修改 属性改变
     def PATCH(self, request):

+ 1 - 1
Controller/alipay_private_2048.pem

@@ -1,3 +1,3 @@
 -----BEGIN RSA PRIVATE KEY-----
-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
+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
 -----END RSA PRIVATE KEY-----

+ 1 - 1
Controller/alipay_public_2048.pem

@@ -1,3 +1,3 @@
 -----BEGIN PUBLIC KEY-----
-MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQDIgHnOn7LLILlKETd6BFRJ0GqgS2Y3mn1wMQmyh9zEyWlz5p1zrahRahbXAfCfSqshSNfqOmAQzSHRVjCqjsAw1jyqrXaPdKBmr90DIpIxmIyKXv4GGAkPyJ/6FTFY99uhpiq0qadD/uSzQsefWo0aTvP/65zi3eof7TcZ32oWpwIDAQAB
+MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEA6WSh//F8thrOf8Zm5CwIr9+HYy3+K4uRQtZoOolCRkbO47k++4da5/uBJz/vEoyX2/YwyqbdzIRbpwZlSyTKrRJpf5JwUE26dSVIjZ+2FOOUoRqf9MTDHhMEtvRvW2nSD3u4gDSz2vTuQPdiFzpJamuszR9ONdeIIYttoC//BR5TO3aDPHD1Q0D1WVnaBvWWnFUNaaW0BLjqLa3gtxWeUgMSePjusG28EX+aMomqSMReMRC87Hoan0TeQYU35Mgq6ZHGQ8RFBGAPfueHcvvtBLmiuL+UmJS5FyAq6QLCMSd74NnUAJwdQOi4e5vXeQX772DEyA/19RBXA4PESwJ0lwIDAQAB
 -----END PUBLIC KEY-----