Repository navigation
Expand file tree
/
Copy pathsubscription_demo.py
More file actions
164 lines (143 loc) · 6.68 KB
/
Copy pathsubscription_demo.py
File metadata and controls
164 lines (143 loc) · 6.68 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
import uuid
from com.alipay.ams.api.default_alipay_client import DefaultAlipayClient
from com.alipay.ams.api.model.amount import Amount
from com.alipay.ams.api.model.cancellation_type import CancellationType
from com.alipay.ams.api.model.customer_belongs_to import CustomerBelongsTo
from com.alipay.ams.api.model.env import Env
from com.alipay.ams.api.model.order_info import OrderInfo
from com.alipay.ams.api.model.os_type import OsType
from com.alipay.ams.api.model.payment_method import PaymentMethod
from com.alipay.ams.api.model.period_rule import PeriodRule
from com.alipay.ams.api.model.period_type import PeriodType
from com.alipay.ams.api.model.result_status_type import ResultStatusType
from com.alipay.ams.api.model.settlement_strategy import SettlementStrategy
from com.alipay.ams.api.model.terminal_type import TerminalType
from com.alipay.ams.api.request.subscription.alipay_subscription_cancel_request import (
AlipaySubscriptionCancelRequest,
)
from com.alipay.ams.api.request.subscription.alipay_subscription_change_request import (
AlipaySubscriptionChangeRequest,
)
from com.alipay.ams.api.request.subscription.alipay_subscription_create_request import (
AlipaySubscriptionCreateRequest,
)
from com.alipay.ams.api.response.subscription.alipay_subscription_cancel_response import (
AlipaySubscriptionCancelResponse,
)
from com.alipay.ams.api.response.subscription.alipay_subscription_change_response import (
AlipaySubscriptionChangeResponse,
)
from com.alipay.ams.api.response.subscription.alipay_subscription_create_response import (
AlipaySubscriptionCreateResponse,
)
MERCHANT_PRIVATE_KEY = ""
ALIPAY_PUBLIC_KEY = ""
CLIENT_ID = ""
GATEWAY_HOST = ""
def subscriptionsCreate():
default_alipay_client = DefaultAlipayClient(
GATEWAY_HOST, CLIENT_ID, MERCHANT_PRIVATE_KEY, ALIPAY_PUBLIC_KEY
)
alipay_subscription_create_request = AlipaySubscriptionCreateRequest()
alipay_subscription_create_request.subscription_request_id = str(uuid.uuid4())
env = Env()
env.client_ip = "1.1.1.1"
env.os_type = OsType.IOS
env.terminal_type = TerminalType.WEB
alipay_subscription_create_request.env = env
alipay_subscription_create_request.payment_amount = Amount("HKD", "100")
# replace with your notify url
# or configur your notify url https://dashboard.alipay.com/global-payments/developers/iNotifyNotification
alipay_subscription_create_request.payment_notification_url = (
"https://www.yourNotifyUrl.com"
)
period_rule = PeriodRule()
period_rule.period_type = PeriodType.MONTH
period_rule.period_count = 1
alipay_subscription_create_request.period_rule = period_rule
settlement_strategy = SettlementStrategy()
settlement_strategy.settlement_currency = "USD"
alipay_subscription_create_request.settlement_strategy = settlement_strategy
alipay_subscription_create_request.subscription_description = "test subscription"
alipay_subscription_create_request.subscription_start_time = (
"2024-10-16T00:00:00+08:00"
)
alipay_subscription_create_request.subscription_end_time = (
"2024-10-17T17:00:00+08:00"
)
alipay_subscription_create_request.subscription_expiry_time = (
"2024-10-18T00:00:00+08:00"
)
alipay_subscription_create_request.subscription_notification_url = (
"https://www.yourNotifyUrl.com"
)
order_info = OrderInfo()
order_info.order_amount = Amount("HKD", "100")
alipay_subscription_create_request.order_info = order_info
payment_method = PaymentMethod()
payment_method.payment_method_type = CustomerBelongsTo.ALIPAY_HK
alipay_subscription_create_request.payment_method = payment_method
alipay_subscription_create_request.subscription_redirect_url = (
"https://www.yourRedirectUrl.com"
)
alipay_subscription_create_request.payment_notification_url = (
"https://www.yourNotifyUrl.com"
)
alipay_subscription_create_request.subscription_notification_url = (
"https://www.yourNotifyUrl.com"
)
rsp_body = default_alipay_client.execute(alipay_subscription_create_request)
response = AlipaySubscriptionCreateResponse(rsp_body)
if response.result.result_status.name != ResultStatusType.F.name:
print(alipay_subscription_create_request.subscription_request_id)
print(response.normal_url)
print(response.result.result_status)
print(response.result.result_message)
else:
print(response.result.result_message)
def subscriptionsChange(subscriptionId):
default_alipay_client = DefaultAlipayClient(
GATEWAY_HOST, CLIENT_ID, MERCHANT_PRIVATE_KEY, ALIPAY_PUBLIC_KEY
)
alipay_subscription_change_request = AlipaySubscriptionChangeRequest()
alipay_subscription_change_request.subscription_id = subscriptionId
alipay_subscription_change_request.subscription_change_request_id = str(
uuid.uuid4()
)
alipay_subscription_change_request.payment_amount_difference = Amount("HKD", "100")
alipay_subscription_change_request.payment_amount = Amount("HKD", "100")
period_rule = PeriodRule()
period_rule.period_type = PeriodType.MONTH
period_rule.period_count = 1
alipay_subscription_change_request.period_rule = period_rule
alipay_subscription_change_request.subscription_start_time = (
"2024-10-16T00:00:00+08:00"
)
alipay_subscription_change_request.subscription_end_time = (
"2024-10-17T17:00:00+08:00"
)
order_info = OrderInfo()
order_info.order_amount = Amount("HKD", "100")
alipay_subscription_change_request.order_info = order_info
rsp_body = default_alipay_client.execute(alipay_subscription_change_request)
response = AlipaySubscriptionChangeResponse(rsp_body)
if response.result.result_status.name != ResultStatusType.F.name:
print(response.result.result_message)
else:
print(response.result.result_message)
def subscriptionCancel(subscriptionId):
default_alipay_client = DefaultAlipayClient(
GATEWAY_HOST, CLIENT_ID, MERCHANT_PRIVATE_KEY, ALIPAY_PUBLIC_KEY
)
alipay_subscription_cancel_request = AlipaySubscriptionCancelRequest()
alipay_subscription_cancel_request.subscription_id = subscriptionId
alipay_subscription_cancel_request.cancellation_type = CancellationType.CANCEL
rsp_body = default_alipay_client.execute(alipay_subscription_cancel_request)
response = AlipaySubscriptionCancelResponse(rsp_body)
if response.result.result_status.name != ResultStatusType.F.name:
print(response.result.result_message)
else:
print(response.result.result_message)
subscriptionsCreate()
# subscriptionsChange("202410171900000000000001J0000010317")
# subscriptionCancel("202410171900000000000001J0000010317")