global-open-sdk-python 1.7.2__py3-none-any.whl → 1.7.3__py3-none-any.whl

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1,2 +1,2 @@
1
- VERSION = "1.7.2"
1
+ VERSION = "1.7.3"
2
2
  USER_AGENT = "global-open-sdk-python/" + VERSION
@@ -0,0 +1,176 @@
1
+ import json
2
+ from com.alipay.ams.api.model.user_name import UserName
3
+ from com.alipay.ams.api.model.address import Address
4
+
5
+
6
+
7
+
8
+ class InquirePaymentMethodCard:
9
+ def __init__(self):
10
+
11
+ self.__card_token = None # type: str
12
+ self.__card_no = None # type: str
13
+ self.__mask = None # type: str
14
+ self.__brand = None # type: str
15
+ self.__country_issue = None # type: str
16
+ self.__card_issuer = None # type: str
17
+ self.__expiry_month = None # type: str
18
+ self.__expiry_year = None # type: str
19
+ self.__inst_user_name = None # type: UserName
20
+ self.__billing_address = None # type: Address
21
+
22
+
23
+ @property
24
+ def card_token(self):
25
+ """
26
+ The card token, consistent with the request.
27
+ """
28
+ return self.__card_token
29
+
30
+ @card_token.setter
31
+ def card_token(self, value):
32
+ self.__card_token = value
33
+ @property
34
+ def card_no(self):
35
+ """
36
+ The full bank card number (PAN). This is the core capability of this API.
37
+ """
38
+ return self.__card_no
39
+
40
+ @card_no.setter
41
+ def card_no(self, value):
42
+ self.__card_no = value
43
+ @property
44
+ def mask(self):
45
+ """
46
+ The masked card number, for example 411734******7890.
47
+ """
48
+ return self.__mask
49
+
50
+ @mask.setter
51
+ def mask(self, value):
52
+ self.__mask = value
53
+ @property
54
+ def brand(self):
55
+ """
56
+ The card brand, for example VISA or MASTER. Queried in real time from the card BIN.
57
+ """
58
+ return self.__brand
59
+
60
+ @brand.setter
61
+ def brand(self, value):
62
+ self.__brand = value
63
+ @property
64
+ def country_issue(self):
65
+ """
66
+ The issuing country or region as a two-letter country code. Queried in real time from the card BIN.
67
+ """
68
+ return self.__country_issue
69
+
70
+ @country_issue.setter
71
+ def country_issue(self, value):
72
+ self.__country_issue = value
73
+ @property
74
+ def card_issuer(self):
75
+ """
76
+ The card issuer name from the stored card binding. Returned only when a value exists; the field is absent when no value is available.
77
+ """
78
+ return self.__card_issuer
79
+
80
+ @card_issuer.setter
81
+ def card_issuer(self, value):
82
+ self.__card_issuer = value
83
+ @property
84
+ def expiry_month(self):
85
+ """
86
+ The card expiry month as two digits, from the stored card binding.
87
+ """
88
+ return self.__expiry_month
89
+
90
+ @expiry_month.setter
91
+ def expiry_month(self, value):
92
+ self.__expiry_month = value
93
+ @property
94
+ def expiry_year(self):
95
+ """
96
+ The card expiry year as two digits, from the stored card binding.
97
+ """
98
+ return self.__expiry_year
99
+
100
+ @expiry_year.setter
101
+ def expiry_year(self, value):
102
+ self.__expiry_year = value
103
+ @property
104
+ def inst_user_name(self):
105
+ """Gets the inst_user_name of this InquirePaymentMethodCard.
106
+
107
+ """
108
+ return self.__inst_user_name
109
+
110
+ @inst_user_name.setter
111
+ def inst_user_name(self, value):
112
+ self.__inst_user_name = value
113
+ @property
114
+ def billing_address(self):
115
+ """Gets the billing_address of this InquirePaymentMethodCard.
116
+
117
+ """
118
+ return self.__billing_address
119
+
120
+ @billing_address.setter
121
+ def billing_address(self, value):
122
+ self.__billing_address = value
123
+
124
+
125
+
126
+
127
+ def to_ams_dict(self):
128
+ params = dict()
129
+ if hasattr(self, "card_token") and self.card_token is not None:
130
+ params['cardToken'] = self.card_token
131
+ if hasattr(self, "card_no") and self.card_no is not None:
132
+ params['cardNo'] = self.card_no
133
+ if hasattr(self, "mask") and self.mask is not None:
134
+ params['mask'] = self.mask
135
+ if hasattr(self, "brand") and self.brand is not None:
136
+ params['brand'] = self.brand
137
+ if hasattr(self, "country_issue") and self.country_issue is not None:
138
+ params['countryIssue'] = self.country_issue
139
+ if hasattr(self, "card_issuer") and self.card_issuer is not None:
140
+ params['cardIssuer'] = self.card_issuer
141
+ if hasattr(self, "expiry_month") and self.expiry_month is not None:
142
+ params['expiryMonth'] = self.expiry_month
143
+ if hasattr(self, "expiry_year") and self.expiry_year is not None:
144
+ params['expiryYear'] = self.expiry_year
145
+ if hasattr(self, "inst_user_name") and self.inst_user_name is not None:
146
+ params['instUserName'] = self.inst_user_name
147
+ if hasattr(self, "billing_address") and self.billing_address is not None:
148
+ params['billingAddress'] = self.billing_address
149
+ return params
150
+
151
+
152
+ def parse_rsp_body(self, response_body):
153
+ if isinstance(response_body, str):
154
+ response_body = json.loads(response_body)
155
+ if 'cardToken' in response_body:
156
+ self.__card_token = response_body['cardToken']
157
+ if 'cardNo' in response_body:
158
+ self.__card_no = response_body['cardNo']
159
+ if 'mask' in response_body:
160
+ self.__mask = response_body['mask']
161
+ if 'brand' in response_body:
162
+ self.__brand = response_body['brand']
163
+ if 'countryIssue' in response_body:
164
+ self.__country_issue = response_body['countryIssue']
165
+ if 'cardIssuer' in response_body:
166
+ self.__card_issuer = response_body['cardIssuer']
167
+ if 'expiryMonth' in response_body:
168
+ self.__expiry_month = response_body['expiryMonth']
169
+ if 'expiryYear' in response_body:
170
+ self.__expiry_year = response_body['expiryYear']
171
+ if 'instUserName' in response_body:
172
+ self.__inst_user_name = UserName()
173
+ self.__inst_user_name.parse_rsp_body(response_body['instUserName'])
174
+ if 'billingAddress' in response_body:
175
+ self.__billing_address = Address()
176
+ self.__billing_address.parse_rsp_body(response_body['billingAddress'])
@@ -0,0 +1,54 @@
1
+ import json
2
+ from com.alipay.ams.api.model.inquire_payment_method_card import InquirePaymentMethodCard
3
+
4
+
5
+
6
+
7
+ class InquirePaymentMethodDetail:
8
+ def __init__(self):
9
+
10
+ self.__payment_method_detail_type = None # type: str
11
+ self.__card = None # type: InquirePaymentMethodCard
12
+
13
+
14
+ @property
15
+ def payment_method_detail_type(self):
16
+ """
17
+ The payment method detail type. The value is CARD; only credit card assets are supported.
18
+ """
19
+ return self.__payment_method_detail_type
20
+
21
+ @payment_method_detail_type.setter
22
+ def payment_method_detail_type(self, value):
23
+ self.__payment_method_detail_type = value
24
+ @property
25
+ def card(self):
26
+ """Gets the card of this InquirePaymentMethodDetail.
27
+
28
+ """
29
+ return self.__card
30
+
31
+ @card.setter
32
+ def card(self, value):
33
+ self.__card = value
34
+
35
+
36
+
37
+
38
+ def to_ams_dict(self):
39
+ params = dict()
40
+ if hasattr(self, "payment_method_detail_type") and self.payment_method_detail_type is not None:
41
+ params['paymentMethodDetailType'] = self.payment_method_detail_type
42
+ if hasattr(self, "card") and self.card is not None:
43
+ params['card'] = self.card
44
+ return params
45
+
46
+
47
+ def parse_rsp_body(self, response_body):
48
+ if isinstance(response_body, str):
49
+ response_body = json.loads(response_body)
50
+ if 'paymentMethodDetailType' in response_body:
51
+ self.__payment_method_detail_type = response_body['paymentMethodDetailType']
52
+ if 'card' in response_body:
53
+ self.__card = InquirePaymentMethodCard()
54
+ self.__card.parse_rsp_body(response_body['card'])
@@ -14,6 +14,7 @@ class PaymentMethod:
14
14
  self.__extend_info = None # type: str
15
15
  self.__require_issuer_authentication = None # type: bool
16
16
  self.__payment_method_meta_data = None # type: {str: ({str: (bool, date, datetime, dict, float, int, list, str, none_type)},)}
17
+ self.__card_brand = None # type: str
17
18
 
18
19
 
19
20
  @property
@@ -86,6 +87,16 @@ class PaymentMethod:
86
87
  @payment_method_meta_data.setter
87
88
  def payment_method_meta_data(self, value):
88
89
  self.__payment_method_meta_data = value
90
+ @property
91
+ def card_brand(self):
92
+ """
93
+ The card brand returned for card subscription payments, or UNKNOWN if it cannot be determined.
94
+ """
95
+ return self.__card_brand
96
+
97
+ @card_brand.setter
98
+ def card_brand(self, value):
99
+ self.__card_brand = value
89
100
 
90
101
 
91
102
 
@@ -106,6 +117,8 @@ class PaymentMethod:
106
117
  params['requireIssuerAuthentication'] = self.require_issuer_authentication
107
118
  if hasattr(self, "payment_method_meta_data") and self.payment_method_meta_data is not None:
108
119
  params['paymentMethodMetaData'] = self.payment_method_meta_data
120
+ if hasattr(self, "card_brand") and self.card_brand is not None:
121
+ params['cardBrand'] = self.card_brand
109
122
  return params
110
123
 
111
124
 
@@ -127,3 +140,5 @@ class PaymentMethod:
127
140
  self.__require_issuer_authentication = response_body['requireIssuerAuthentication']
128
141
  if 'paymentMethodMetaData' in response_body:
129
142
  self.__payment_method_meta_data = response_body['paymentMethodMetaData']
143
+ if 'cardBrand' in response_body:
144
+ self.__card_brand = response_body['cardBrand']
@@ -5,6 +5,7 @@ from com.alipay.ams.api.model.external_payment_method_detail import ExternalPaym
5
5
  from com.alipay.ams.api.model.discount_payment_method_detail import DiscountPaymentMethodDetail
6
6
  from com.alipay.ams.api.model.coupon_payment_method_detail import CouponPaymentMethodDetail
7
7
  from com.alipay.ams.api.model.wallet import Wallet
8
+ from com.alipay.ams.api.model.payment_method_meta_data import PaymentMethodMetaData
8
9
 
9
10
 
10
11
 
@@ -21,6 +22,7 @@ class PaymentMethodDetail:
21
22
  self.__extend_info = None # type: str
22
23
  self.__wallet = None # type: Wallet
23
24
  self.__interaction_type = None # type: str
25
+ self.__payment_method_meta_data = None # type: PaymentMethodMetaData
24
26
 
25
27
 
26
28
  @property
@@ -76,7 +78,7 @@ class PaymentMethodDetail:
76
78
  @property
77
79
  def payment_method_type(self):
78
80
  """
79
- The type of payment method to be vaulted. The value of this parameter is fixed to CARD. More information: Maximum length: 64 characters
81
+ The type of payment method to be vaulted. The value of this parameter is fixed to CARD. More information: Maximum length: 64 characters
80
82
  """
81
83
  return self.__payment_method_type
82
84
 
@@ -113,6 +115,15 @@ class PaymentMethodDetail:
113
115
  @interaction_type.setter
114
116
  def interaction_type(self, value):
115
117
  self.__interaction_type = value
118
+ @property
119
+ def payment_method_meta_data(self):
120
+ """Gets the payment_method_meta_data of this PaymentMethodDetail.
121
+ """
122
+ return self.__payment_method_meta_data
123
+
124
+ @payment_method_meta_data.setter
125
+ def payment_method_meta_data(self, value):
126
+ self.__payment_method_meta_data = value
116
127
 
117
128
 
118
129
 
@@ -137,6 +148,8 @@ class PaymentMethodDetail:
137
148
  params['wallet'] = self.wallet
138
149
  if hasattr(self, "interaction_type") and self.interaction_type is not None:
139
150
  params['interactionType'] = self.interaction_type
151
+ if hasattr(self, "payment_method_meta_data") and self.payment_method_meta_data is not None:
152
+ params['paymentMethodMetaData'] = self.payment_method_meta_data
140
153
  return params
141
154
 
142
155
 
@@ -167,3 +180,6 @@ class PaymentMethodDetail:
167
180
  self.__wallet.parse_rsp_body(response_body['wallet'])
168
181
  if 'interactionType' in response_body:
169
182
  self.__interaction_type = response_body['interactionType']
183
+ if 'paymentMethodMetaData' in response_body:
184
+ self.__payment_method_meta_data = PaymentMethodMetaData()
185
+ self.__payment_method_meta_data.parse_rsp_body(response_body['paymentMethodMetaData'])
@@ -0,0 +1,37 @@
1
+ import json
2
+
3
+
4
+
5
+
6
+ class PaymentMethodMetaData:
7
+ def __init__(self):
8
+
9
+ self.__recurring_type = None # type: str
10
+
11
+
12
+ @property
13
+ def recurring_type(self):
14
+ """
15
+ The recurring type of subsequent deductions on the vaulted card: SCHEDULED for fixed-schedule deductions or UNSCHEDULED for on-demand deductions. Optional; if omitted, no recurring type is declared, and any other value returns PARAM_ILLEGAL.
16
+ """
17
+ return self.__recurring_type
18
+
19
+ @recurring_type.setter
20
+ def recurring_type(self, value):
21
+ self.__recurring_type = value
22
+
23
+
24
+
25
+
26
+ def to_ams_dict(self):
27
+ params = dict()
28
+ if hasattr(self, "recurring_type") and self.recurring_type is not None:
29
+ params['recurringType'] = self.recurring_type
30
+ return params
31
+
32
+
33
+ def parse_rsp_body(self, response_body):
34
+ if isinstance(response_body, str):
35
+ response_body = json.loads(response_body)
36
+ if 'recurringType' in response_body:
37
+ self.__recurring_type = response_body['recurringType']
@@ -0,0 +1,287 @@
1
+ import json
2
+
3
+ from com.alipay.ams.api.model.amount import Amount
4
+ from com.alipay.ams.api.model.event_merchant_info import EventMerchantInfo
5
+
6
+
7
+ class AlipayCardTransactionEventNotify:
8
+ """One flat ABA VCC card transaction event callback (notification profile v2.1, document v2.13).
9
+
10
+ Verify the raw-body signature before constructing this object. The merchant handles
11
+ durable acceptance, eventId deduplication and ACK. Amount values remain quoted
12
+ minor-unit strings of up to 20 digits. Parsing does not enforce business validation.
13
+ """
14
+
15
+ def __init__(self, notify_body):
16
+ self.__event_id = None # type: str
17
+ self.__lifecycle_id = None # type: str
18
+ self.__event_type = None # type: str
19
+ self.__auth_time = None # type: str
20
+ self.__auth_expire_time = None # type: str
21
+ self.__auth_type = None # type: str
22
+ self.__auth_code = None # type: str
23
+ self.__failure_reason = None # type: str
24
+ self.__status = None # type: str
25
+ self.__balance_type = None # type: str
26
+ self.__transaction_time = None # type: str
27
+ self.__bill_type = None # type: str
28
+ self.__out_amount = None # type: Amount
29
+ self.__in_amount = None # type: Amount
30
+ self.__exchange_currency_pair = None # type: str
31
+ self.__exchange_rate = None # type: str
32
+ self.__transaction_amount = None # type: Amount
33
+ self.__asset_id = None # type: str
34
+ self.__masked_card_no = None # type: str
35
+ self.__card_product = None # type: str
36
+ self.__merchant_info = None # type: EventMerchantInfo
37
+ self.__metadata = None # type: dict
38
+ self.__parse_notify_body(notify_body)
39
+
40
+ @property
41
+ def event_id(self):
42
+ """Stable event ID and the only callback idempotency key. Required; maximum 64 characters."""
43
+ return self.__event_id
44
+
45
+ @event_id.setter
46
+ def event_id(self, value):
47
+ self.__event_id = value
48
+
49
+ @property
50
+ def lifecycle_id(self):
51
+ """Spend-group ID shared with inquiry. Required; maximum 64 characters."""
52
+ return self.__lifecycle_id
53
+
54
+ @lifecycle_id.setter
55
+ def lifecycle_id(self, value):
56
+ self.__lifecycle_id = value
57
+
58
+ @property
59
+ def event_type(self):
60
+ """Required event type: AUTH, AUTH_CANCEL, CAPTURE, REFUND, CHARGEBACK or REPAYMENT. Preserve unknown future values."""
61
+ return self.__event_type
62
+
63
+ @event_type.setter
64
+ def event_type(self, value):
65
+ self.__event_type = value
66
+
67
+ @property
68
+ def auth_time(self):
69
+ """Optional ISO 8601 time of the channel-correlated authorization, maximum 32 characters. Omitted for AUTH or when unavailable; never inferred from transactionTime or authExpireTime."""
70
+ return self.__auth_time
71
+
72
+ @auth_time.setter
73
+ def auth_time(self, value):
74
+ self.__auth_time = value
75
+
76
+ @property
77
+ def auth_expire_time(self):
78
+ """Optional ISO 8601 authorization expiry time, maximum 32 characters. Sent only for AUTH when available."""
79
+ return self.__auth_expire_time
80
+
81
+ @auth_expire_time.setter
82
+ def auth_expire_time(self, value):
83
+ self.__auth_expire_time = value
84
+
85
+ @property
86
+ def auth_type(self):
87
+ """Optional AUTH or PRE_AUTH, maximum 32 characters. Sent only for AUTH when available."""
88
+ return self.__auth_type
89
+
90
+ @auth_type.setter
91
+ def auth_type(self, value):
92
+ self.__auth_type = value
93
+
94
+ @property
95
+ def auth_code(self):
96
+ """Optional network approval code, maximum 64 characters. Sent only for AUTH when available."""
97
+ return self.__auth_code
98
+
99
+ @auth_code.setter
100
+ def auth_code(self, value):
101
+ self.__auth_code = value
102
+
103
+ @property
104
+ def failure_reason(self):
105
+ """Optional Antom-normalized failure code, maximum 64 characters. Sent only for FAIL when a mapped code exists."""
106
+ return self.__failure_reason
107
+
108
+ @failure_reason.setter
109
+ def failure_reason(self, value):
110
+ self.__failure_reason = value
111
+
112
+ @property
113
+ def status(self):
114
+ """Required terminal status: SUCCESS or FAIL. CAPTURE is SUCCESS-only. The accepted status never changes."""
115
+ return self.__status
116
+
117
+ @status.setter
118
+ def status(self, value):
119
+ self.__status = value
120
+
121
+ @property
122
+ def balance_type(self):
123
+ """ANTOM_BIZ_ACCOUNT or ANTOM_FUND_ACCOUNT, maximum 32 characters. Required with a directional amount; CAPTURE sends ANTOM_BIZ_ACCOUNT."""
124
+ return self.__balance_type
125
+
126
+ @balance_type.setter
127
+ def balance_type(self, value):
128
+ self.__balance_type = value
129
+
130
+ @property
131
+ def transaction_time(self):
132
+ """Required business-event time in ISO 8601 format with timezone; maximum 32 characters."""
133
+ return self.__transaction_time
134
+
135
+ @transaction_time.setter
136
+ def transaction_time(self, value):
137
+ self.__transaction_time = value
138
+
139
+ @property
140
+ def bill_type(self):
141
+ """Required CARD_PAYMENT for AUTH, CAPTURE and REPAYMENT, or CARD_REFUND for AUTH_CANCEL, REFUND and CHARGEBACK."""
142
+ return self.__bill_type
143
+
144
+ @bill_type.setter
145
+ def bill_type(self, value):
146
+ self.__bill_type = value
147
+
148
+ @property
149
+ def out_amount(self):
150
+ """Required for successful AUTH, CAPTURE and REPAYMENT. CAPTURE carries value "0" and billing currency, not another debit; omitted otherwise."""
151
+ return self.__out_amount
152
+
153
+ @out_amount.setter
154
+ def out_amount(self, value):
155
+ self.__out_amount = value
156
+
157
+ @property
158
+ def in_amount(self):
159
+ """Optional billing-currency inflow for successful AUTH_CANCEL, REFUND or CHARGEBACK when available. Omitted for CAPTURE."""
160
+ return self.__in_amount
161
+
162
+ @in_amount.setter
163
+ def in_amount(self, value):
164
+ self.__in_amount = value
165
+
166
+ @property
167
+ def exchange_currency_pair(self):
168
+ """Optional BASE/QUOTE currency pair, maximum 8 characters. Sent with exchangeRate for a cross-currency transaction when both are available."""
169
+ return self.__exchange_currency_pair
170
+
171
+ @exchange_currency_pair.setter
172
+ def exchange_currency_pair(self, value):
173
+ self.__exchange_currency_pair = value
174
+
175
+ @property
176
+ def exchange_rate(self):
177
+ """Optional positive quoted decimal string, maximum 32 characters. One major BASE unit equals this many QUOTE units; paired with exchangeCurrencyPair."""
178
+ return self.__exchange_rate
179
+
180
+ @exchange_rate.setter
181
+ def exchange_rate(self, value):
182
+ self.__exchange_rate = value
183
+
184
+ @property
185
+ def transaction_amount(self):
186
+ """Required current-event amount in original transaction currency. For CAPTURE this is the captured amount, not the zero additional outflow."""
187
+ return self.__transaction_amount
188
+
189
+ @transaction_amount.setter
190
+ def transaction_amount(self, value):
191
+ self.__transaction_amount = value
192
+
193
+ @property
194
+ def asset_id(self):
195
+ """Required merchant-owned card asset ID; maximum 32 characters."""
196
+ return self.__asset_id
197
+
198
+ @asset_id.setter
199
+ def asset_id(self, value):
200
+ self.__asset_id = value
201
+
202
+ @property
203
+ def masked_card_no(self):
204
+ """Optional PCI-safe card mask exposing at most the last four digits; maximum 32 characters."""
205
+ return self.__masked_card_no
206
+
207
+ @masked_card_no.setter
208
+ def masked_card_no(self, value):
209
+ self.__masked_card_no = value
210
+
211
+ @property
212
+ def card_product(self):
213
+ """Optional original-transaction program code matching ^[A-Z0-9]{3}$. Extensible string, not a fixed enum or rebate rate; later card-profile changes do not rewrite it."""
214
+ return self.__card_product
215
+
216
+ @card_product.setter
217
+ def card_product(self, value):
218
+ self.__card_product = value
219
+
220
+ @property
221
+ def merchant_info(self):
222
+ """Optional approved merchant context. Name maximum 256 characters, region exactly 2 and mcc exactly 4; parent omitted when no child is available."""
223
+ return self.__merchant_info
224
+
225
+ @merchant_info.setter
226
+ def merchant_info(self, value):
227
+ self.__merchant_info = value
228
+
229
+ @property
230
+ def metadata(self):
231
+ """Optional approved context: at most 30 entries, keys at most 32 characters, values at most 128 and serialized JSON at most 3096. No key is approved in notification profile v2.1, so it is omitted."""
232
+ return self.__metadata
233
+
234
+ @metadata.setter
235
+ def metadata(self, value):
236
+ self.__metadata = value
237
+
238
+ def __parse_notify_body(self, notify_body):
239
+ notify = json.loads(notify_body)
240
+ if "eventId" in notify:
241
+ self.__event_id = notify["eventId"]
242
+ if "lifecycleId" in notify:
243
+ self.__lifecycle_id = notify["lifecycleId"]
244
+ if "eventType" in notify:
245
+ self.__event_type = notify["eventType"]
246
+ if "authTime" in notify:
247
+ self.__auth_time = notify["authTime"]
248
+ if "authExpireTime" in notify:
249
+ self.__auth_expire_time = notify["authExpireTime"]
250
+ if "authType" in notify:
251
+ self.__auth_type = notify["authType"]
252
+ if "authCode" in notify:
253
+ self.__auth_code = notify["authCode"]
254
+ if "failureReason" in notify:
255
+ self.__failure_reason = notify["failureReason"]
256
+ if "status" in notify:
257
+ self.__status = notify["status"]
258
+ if "balanceType" in notify:
259
+ self.__balance_type = notify["balanceType"]
260
+ if "transactionTime" in notify:
261
+ self.__transaction_time = notify["transactionTime"]
262
+ if "billType" in notify:
263
+ self.__bill_type = notify["billType"]
264
+ if notify.get("outAmount") is not None:
265
+ self.__out_amount = Amount()
266
+ self.__out_amount.parse_rsp_body(notify["outAmount"])
267
+ if notify.get("inAmount") is not None:
268
+ self.__in_amount = Amount()
269
+ self.__in_amount.parse_rsp_body(notify["inAmount"])
270
+ if "exchangeCurrencyPair" in notify:
271
+ self.__exchange_currency_pair = notify["exchangeCurrencyPair"]
272
+ if "exchangeRate" in notify:
273
+ self.__exchange_rate = notify["exchangeRate"]
274
+ if notify.get("transactionAmount") is not None:
275
+ self.__transaction_amount = Amount()
276
+ self.__transaction_amount.parse_rsp_body(notify["transactionAmount"])
277
+ if "assetId" in notify:
278
+ self.__asset_id = notify["assetId"]
279
+ if "maskedCardNo" in notify:
280
+ self.__masked_card_no = notify["maskedCardNo"]
281
+ if "cardProduct" in notify:
282
+ self.__card_product = notify["cardProduct"]
283
+ if notify.get("merchantInfo") is not None:
284
+ self.__merchant_info = EventMerchantInfo()
285
+ self.__merchant_info.parse_rsp_body(notify["merchantInfo"])
286
+ if "metadata" in notify:
287
+ self.__metadata = notify["metadata"]
@@ -0,0 +1,42 @@
1
+ import json
2
+
3
+
4
+
5
+ from com.alipay.ams.api.request.alipay_request import AlipayRequest
6
+
7
+ class AlipayInquirePaymentMethodRequest(AlipayRequest):
8
+ def __init__(self):
9
+ super(AlipayInquirePaymentMethodRequest, self).__init__("/ams/api/v1/paymentMethods/inquirePaymentMethod")
10
+
11
+ self.__card_token = None # type: str
12
+
13
+
14
+ @property
15
+ def card_token(self):
16
+ """
17
+ The permanent card token provided to the merchant after payment.
18
+ """
19
+ return self.__card_token
20
+
21
+ @card_token.setter
22
+ def card_token(self, value):
23
+ self.__card_token = value
24
+
25
+
26
+ def to_ams_json(self):
27
+ json_str = json.dumps(obj=self.to_ams_dict(), default=lambda o: o.to_ams_dict(), indent=3)
28
+ return json_str
29
+
30
+
31
+ def to_ams_dict(self):
32
+ params = dict()
33
+ if hasattr(self, "card_token") and self.card_token is not None:
34
+ params['cardToken'] = self.card_token
35
+ return params
36
+
37
+
38
+ def parse_rsp_body(self, response_body):
39
+ if isinstance(response_body, str):
40
+ response_body = json.loads(response_body)
41
+ if 'cardToken' in response_body:
42
+ self.__card_token = response_body['cardToken']
@@ -1,4 +1,5 @@
1
1
  import json
2
+ from com.alipay.ams.api.model.payment_method_meta_data import PaymentMethodMetaData
2
3
 
3
4
 
4
5
 
@@ -14,6 +15,7 @@ class AlipayVaultingSessionRequest(AlipayRequest):
14
15
  self.__redirect_url = None # type: str
15
16
  self.__merchant_region = None # type: str
16
17
  self.__is3_ds_authentication = None # type: bool
18
+ self.__payment_method_meta_data = None # type: PaymentMethodMetaData
17
19
 
18
20
 
19
21
  @property
@@ -76,6 +78,16 @@ class AlipayVaultingSessionRequest(AlipayRequest):
76
78
  @is3_ds_authentication.setter
77
79
  def is3_ds_authentication(self, value):
78
80
  self.__is3_ds_authentication = value
81
+ @property
82
+ def payment_method_meta_data(self):
83
+ """Gets the payment_method_meta_data of this AlipayVaultingSessionRequest.
84
+
85
+ """
86
+ return self.__payment_method_meta_data
87
+
88
+ @payment_method_meta_data.setter
89
+ def payment_method_meta_data(self, value):
90
+ self.__payment_method_meta_data = value
79
91
 
80
92
 
81
93
  def to_ams_json(self):
@@ -97,6 +109,8 @@ class AlipayVaultingSessionRequest(AlipayRequest):
97
109
  params['merchantRegion'] = self.merchant_region
98
110
  if hasattr(self, "is3_ds_authentication") and self.is3_ds_authentication is not None:
99
111
  params['is3DSAuthentication'] = self.is3_ds_authentication
112
+ if hasattr(self, "payment_method_meta_data") and self.payment_method_meta_data is not None:
113
+ params['paymentMethodMetaData'] = self.payment_method_meta_data
100
114
  return params
101
115
 
102
116
 
@@ -115,3 +129,6 @@ class AlipayVaultingSessionRequest(AlipayRequest):
115
129
  self.__merchant_region = response_body['merchantRegion']
116
130
  if 'is3DSAuthentication' in response_body:
117
131
  self.__is3_ds_authentication = response_body['is3DSAuthentication']
132
+ if 'paymentMethodMetaData' in response_body:
133
+ self.__payment_method_meta_data = PaymentMethodMetaData()
134
+ self.__payment_method_meta_data.parse_rsp_body(response_body['paymentMethodMetaData'])
@@ -0,0 +1,61 @@
1
+ import json
2
+ from com.alipay.ams.api.model.result import Result
3
+ from com.alipay.ams.api.model.inquire_payment_method_detail import InquirePaymentMethodDetail
4
+
5
+
6
+
7
+ from com.alipay.ams.api.response.alipay_response import AlipayResponse
8
+
9
+ class AlipayInquirePaymentMethodResponse(AlipayResponse):
10
+ def __init__(self, rsp_body):
11
+ super(AlipayResponse, self).__init__()
12
+
13
+ self.__result = None # type: Result
14
+ self.__payment_method_details = None # type: [InquirePaymentMethodDetail]
15
+ self.parse_rsp_body(rsp_body)
16
+
17
+
18
+ @property
19
+ def result(self):
20
+ """Gets the result of this AlipayInquirePaymentMethodResponse.
21
+
22
+ """
23
+ return self.__result
24
+
25
+ @result.setter
26
+ def result(self, value):
27
+ self.__result = value
28
+ @property
29
+ def payment_method_details(self):
30
+ """
31
+ The payment method details. Returned when the inquiry succeeds; one token maps to one card, so the array contains at most one element and can be empty after country filtering.
32
+ """
33
+ return self.__payment_method_details
34
+
35
+ @payment_method_details.setter
36
+ def payment_method_details(self, value):
37
+ self.__payment_method_details = value
38
+
39
+
40
+
41
+
42
+ def to_ams_dict(self):
43
+ params = dict()
44
+ if hasattr(self, "result") and self.result is not None:
45
+ params['result'] = self.result
46
+ if hasattr(self, "payment_method_details") and self.payment_method_details is not None:
47
+ params['paymentMethodDetails'] = self.payment_method_details
48
+ return params
49
+
50
+
51
+ def parse_rsp_body(self, response_body):
52
+ response_body = super(AlipayInquirePaymentMethodResponse, self).parse_rsp_body(response_body)
53
+ if 'result' in response_body:
54
+ self.__result = Result()
55
+ self.__result.parse_rsp_body(response_body['result'])
56
+ if 'paymentMethodDetails' in response_body:
57
+ self.__payment_method_details = []
58
+ for item in response_body['paymentMethodDetails']:
59
+ obj = InquirePaymentMethodDetail()
60
+ obj.parse_rsp_body(item)
61
+ self.__payment_method_details.append(obj)
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: global-open-sdk-python
3
- Version: 1.7.2
3
+ Version: 1.7.3
4
4
  Summary: The global alipay gateway SDK for Python.
5
5
  Home-page: https://github.com/alipay/global-open-sdk-python
6
6
  Author: guodong.wzj
@@ -2,7 +2,7 @@ com/__init__.py,sha256=AbpHGcgLb-kRsJGnwFEktk7uzpZOCcBY74-YBdrKVGs,1
2
2
  com/alipay/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
3
3
  com/alipay/ams/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
4
4
  com/alipay/ams/api/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
5
- com/alipay/ams/api/_version.py,sha256=jJ0xP4AhL7zNLRrz9tBkMUkCsbS8L-Bqx3W41oHRLvw,67
5
+ com/alipay/ams/api/_version.py,sha256=IwCJyPJ5R8VCuInJOOIUuSIMScvH23Q3Ww8zu4UyhjE,67
6
6
  com/alipay/ams/api/api_key_alipay_client.py,sha256=Ru39_7CXwK2VBWVJlRhCXDZOSduX1vJ2XN11R3eNlpU,2251
7
7
  com/alipay/ams/api/api_key_auth.py,sha256=KfsTco4pVrF7QhJDWxx_p3VzV5TlXCYDDZSM7xe5oLk,2910
8
8
  com/alipay/ams/api/default_alipay_client.py,sha256=SgOl-1-TY_vQrLfkzzmwnsWyG11K-baHNG7kyrvJWas,10172
@@ -173,6 +173,8 @@ com/alipay/ams/api/model/http_method.py,sha256=mqKEMLchjeEH3zFUPfYlNrzxqEr4mzVi6
173
173
  com/alipay/ams/api/model/identity_check_result.py,sha256=SSu-PyuTGw61_fUemAAM2s-vGnBfvqbsyLTvwPECh4w,186
174
174
  com/alipay/ams/api/model/in_store_payment_scenario.py,sha256=AMmhlk2cwyki_o3xAXWMRoq85TY91mwLhy4N94X7XNE,970
175
175
  com/alipay/ams/api/model/individual.py,sha256=A7rdvH1KdbZtcZegVqRyJgsk2eYpfpZnKgqGVpMyy4Q,5340
176
+ com/alipay/ams/api/model/inquire_payment_method_card.py,sha256=mVOVo2iZF7JWO8diejVf9lgLfbQyQ5J-k4KnXU5p0so,5967
177
+ com/alipay/ams/api/model/inquire_payment_method_detail.py,sha256=hxCrxgxkFn8TyTTctMcpV1unR_8m-LPgD0cwenekglg,1692
176
178
  com/alipay/ams/api/model/inquiry_rate_condition.py,sha256=A8RtycI9J6RAwU3l_odyZwH8qMqUGiGucgUKTrKUv_M,1411
177
179
  com/alipay/ams/api/model/installment.py,sha256=qkDVvePSXfrNOSacH435WR9bABugymON2TGPobwh5i4,1940
178
180
  com/alipay/ams/api/model/interaction_type.py,sha256=w4ELdzPkrR_ytKymrzuMKxzckQLcJlBoK91hAjGlNPY,1427
@@ -219,11 +221,12 @@ com/alipay/ams/api/model/payment_attempt.py,sha256=cnnMSU7883mo4z0mIxdpdPCu7nRTA
219
221
  com/alipay/ams/api/model/payment_detail.py,sha256=CE629wNeZcWrRT0FdjZm7eQgYwqjy_tDlbwsBLS8w7s,858
220
222
  com/alipay/ams/api/model/payment_evaluation.py,sha256=WS46IDrOdyOcPe99bRpGpp4cVLydAD0d2eUIy2fjtCE,1127
221
223
  com/alipay/ams/api/model/payment_factor.py,sha256=kaBkc_yz52jeRuCXLkD6hKdMOvOfP7fjxDBR7FMdSzg,6021
222
- com/alipay/ams/api/model/payment_method.py,sha256=flEdCcM_zVloQ6bje3JLgh8PDJdOCYza90oGaywt0VE,6019
224
+ com/alipay/ams/api/model/payment_method.py,sha256=vyI2IECjFdflmrq61gawEE-hxCBPlVlimdo4jbbkY3k,6578
223
225
  com/alipay/ams/api/model/payment_method_category_type.py,sha256=yL2AVJHrf9gt8m3lCUCoxPJpD42gWLPK_vKKT8yMzb0,1899
224
- com/alipay/ams/api/model/payment_method_detail.py,sha256=V9CG9GDc_UXsjCpdSlx55JIIdDr7oH7K2-PrPhEjyOA,6402
226
+ com/alipay/ams/api/model/payment_method_detail.py,sha256=FqmBGmoHLsmqJJT84cUMVL-GUL6ZdTi2k3g7f5o1JIw,7281
225
227
  com/alipay/ams/api/model/payment_method_detail_type.py,sha256=_sjpeppyjtdMhuMkest6w7DkJrTY8nyropaPmpl5Pp8,1129
226
228
  com/alipay/ams/api/model/payment_method_info.py,sha256=afEv2UsCEkxwb3tpaBmZa-fl_RG7Z5NxwQPVlmTpcxk,3105
229
+ com/alipay/ams/api/model/payment_method_meta_data.py,sha256=g1gIhOD4vCYolxmfsxQA4q80AXnSKHos2Sos9HLF04w,1072
227
230
  com/alipay/ams/api/model/payment_method_scope.py,sha256=QEwFKNgqqwJUir0DGRsUHZ9HnIzq85XqfnSTtWpyeUI,718
228
231
  com/alipay/ams/api/model/payment_method_type.py,sha256=jmC9IIVWzp2_XPndZAbizO-7vPfPVgfiZmiK0U_il2U,366
229
232
  com/alipay/ams/api/model/payment_method_type_item.py,sha256=mZt5r1LKhXlx4Qmsf0-JHJ6tp33mhn7nF-i05xWuJwM,2847
@@ -500,6 +503,7 @@ com/alipay/ams/api/request/notify/alipay_bill_notify.py,sha256=NDh-HxOrcf53GwFwY
500
503
  com/alipay/ams/api/request/notify/alipay_billing_subscription_notify.py,sha256=_fTzOeduoZTDuca17R_BpdIOMIKoRjHyaDKatB8dBnI,3607
501
504
  com/alipay/ams/api/request/notify/alipay_capture_result_notify.py,sha256=wUGD0dl2sy-14YZ1GthQ99_C7_WKnZLBAXlexdETobE,2602
502
505
  com/alipay/ams/api/request/notify/alipay_card_status_change_notify.py,sha256=T-zd75vnDtt7ZLso-Q0zd2Nzut5OrIhpWMsxzdtR2g8,2149
506
+ com/alipay/ams/api/request/notify/alipay_card_transaction_event_notify.py,sha256=_m8vbsKNkpGQUNqhVBO9wyccQ1q3ESutLNDDP_-2SXg,10827
503
507
  com/alipay/ams/api/request/notify/alipay_credit_note_notify.py,sha256=I4ZpFo59IgPqIWaKXdtlzxPmMgxjm1c68pQj20jvrfE,5916
504
508
  com/alipay/ams/api/request/notify/alipay_defense_document_notify.py,sha256=_BcQuQV78dyk-UPdx4Y2hrvIwEKXXf8xOA0ICSvNEI0,2332
505
509
  com/alipay/ams/api/request/notify/alipay_defense_strategy_suggestion_notify.py,sha256=k2upgncwLuCVGNaDBOHt6gQ8Uw5gZw5uvLjB9t11IiM,2455
@@ -527,6 +531,7 @@ com/alipay/ams/api/request/pay/alipay_inquire_batch_payment_request.py,sha256=--
527
531
  com/alipay/ams/api/request/pay/alipay_inquire_exchange-rate_request.py,sha256=8l66nRaEGhqlqzZ2xjP-WtjNAkoqBzS_B-cTUPDwMt0,3142
528
532
  com/alipay/ams/api/request/pay/alipay_inquire_exchange_rate_request.py,sha256=68_mBlH0WAneuOqOd8XLNVNj55CUXcaJNl7bi54P3Z4,5199
529
533
  com/alipay/ams/api/request/pay/alipay_inquire_hold_list_request.py,sha256=83mCK1QedT7roJ3Ael_zeBtAKCyxDtuNBsIkBfvXSn0,4028
534
+ com/alipay/ams/api/request/pay/alipay_inquire_payment_method_request.py,sha256=NBUMH4N_iEgsEm1v9kvqTCf-YYurxMzlyDDkwZCpxPU,1194
530
535
  com/alipay/ams/api/request/pay/alipay_inquire_release_request.py,sha256=0gofGLIXpvvRlOlK3KKeQFJS6HGbn16cbIQEvYpPVq0,1898
531
536
  com/alipay/ams/api/request/pay/alipay_inquire_rule_list_request.py,sha256=QU1FFoSjNMWZUgbh3FJPHmPxk2lbCTgtIYbHNriPFWc,4565
532
537
  com/alipay/ams/api/request/pay/alipay_inquiry_refund_request.py,sha256=e2AF3D4fIAWeqDhqHyHMEBbNZGGI5Ym7xVSXmd0Be0Q,2855
@@ -544,7 +549,7 @@ com/alipay/ams/api/request/pay/alipay_update_rule_request.py,sha256=4kL6ljBXYUQV
544
549
  com/alipay/ams/api/request/pay/alipay_upload_invoice_shipping_file_request.py,sha256=gff2Iz66m4LKUHhSECBhW2u6BGIGf5NmLlBYFMiO1os,2140
545
550
  com/alipay/ams/api/request/pay/alipay_vaulting_payment_method_request.py,sha256=7LE4F23K-6HcU9qFAfhYFBxApNyX_Gn3oWB1IWBat3w,7959
546
551
  com/alipay/ams/api/request/pay/alipay_vaulting_query_request.py,sha256=AEGJ9A1XfcpYoX9SbhZV1LpN4pDJBZ2p3xYaec7gzl4,2307
547
- com/alipay/ams/api/request/pay/alipay_vaulting_session_request.py,sha256=tpjBOaGNdfF8E1W2uTm1deQX3rC45U9wKWIgrtSjedo,5376
552
+ com/alipay/ams/api/request/pay/alipay_vaulting_session_request.py,sha256=osg-tuRXe9r63jVq_km12m7OYqaKQ6kiOyHeFUBQ1ps,6274
548
553
  com/alipay/ams/api/request/pay/alipay_vaults_fetch_nonce_request.py,sha256=Goqnvkf8absWcG3mEnFmaCiHRFOclne4pAtMfpOBT_Y,1176
549
554
  com/alipay/ams/api/request/pay/alipay_verify_and_complete_payment_request.py,sha256=29uOVvxZgxw470tR0V2Il68n7FMQeOu-boNC0RPd9ZY,2538
550
555
  com/alipay/ams/api/request/pay/ams_api_v1_payments_capture_post_request.py,sha256=tXmCghgJVpvDqjCQAP5XoDB3sKMHV2M8DGEives9aqo,5622
@@ -719,6 +724,7 @@ com/alipay/ams/api/response/pay/alipay_create_session_response.py,sha256=DS_SCuU
719
724
  com/alipay/ams/api/response/pay/alipay_inquire_batch_payment_response.py,sha256=aSXN9GPQ6nO3N1WUInm1afq8ZLjGR9q47YyJjP2AkxU,8414
720
725
  com/alipay/ams/api/response/pay/alipay_inquire_exchange_rate_response.py,sha256=-1ch0aTFRmYqhP8Ir2acdEPk93NBawzab6JbAHKI8C0,2558
721
726
  com/alipay/ams/api/response/pay/alipay_inquire_hold_list_response.py,sha256=v8fSz0zSmxE9JXhg8zhbZRaeGE_64m33DcoxK9-NfFw,2556
727
+ com/alipay/ams/api/response/pay/alipay_inquire_payment_method_response.py,sha256=B6SiR9tMV1aYk4m-_mTD-Ue-LC-OFU0kHI-aVX7kxuQ,2169
722
728
  com/alipay/ams/api/response/pay/alipay_inquire_release_response.py,sha256=DEtcXP1KC2xlydcRSr02NvKlCuJ8h5DqudFlNovadEw,4148
723
729
  com/alipay/ams/api/response/pay/alipay_inquire_rule_list_response.py,sha256=RIObYPahGWNZ1HfjDSi5kgiA2ROlswVZOHj28vC-cwc,2301
724
730
  com/alipay/ams/api/response/pay/alipay_inquiry_refund_response.py,sha256=ivuYQCdqlsDHsYVASFH8grgJ16bWOn5b3VZhXQPQzMY,12132
@@ -774,8 +780,8 @@ com/alipay/ams/api/tools/signature_tool.py,sha256=BPkhyBjoelK14fdFnWzJCSBw3DDpi2
774
780
  com/alipay/ams/api/tools/webhook_tool.py,sha256=egmjmWl_fiCc3Dh2Md1IZ6A_JH_6he5obFKcZy4ZVHM,613
775
781
  com/alipay/ams/api/tools/resources/__init__.py,sha256=bKHpCZYZY3O29jAYctDwJPtIpHg-PS57lE67nBkmfgs,56
776
782
  com/alipay/ams/api/tools/resources/amount-currency-rules.json,sha256=Sx9Ip1E8XJOwjMTRIa0Sk84PzIPV7IaFagEM3rlLg7o,1360
777
- global_open_sdk_python-1.7.2.dist-info/licenses/LICENSE,sha256=76Wscr16XZ-XStXIsmXgcsxutSSumPK2kJZj8C6bhJg,1063
778
- global_open_sdk_python-1.7.2.dist-info/METADATA,sha256=HtWkpct3opjdgrrqUVcnD_9ex-U40Cl7Dhtpic_Cj9g,1267
779
- global_open_sdk_python-1.7.2.dist-info/WHEEL,sha256=mOdXR9C3wMVov7cSY8PY-XCzo3SmmWCHvGQr5csJoao,91
780
- global_open_sdk_python-1.7.2.dist-info/top_level.txt,sha256=A7eVUp0bsHtbJ7vD4f_Ju79_mDJojU9deED6-LV9_s0,4
781
- global_open_sdk_python-1.7.2.dist-info/RECORD,,
783
+ global_open_sdk_python-1.7.3.dist-info/licenses/LICENSE,sha256=76Wscr16XZ-XStXIsmXgcsxutSSumPK2kJZj8C6bhJg,1063
784
+ global_open_sdk_python-1.7.3.dist-info/METADATA,sha256=2T9d1P25iZOi5HuJARR_f4rYD17-gD4xJdn1yRfxxPo,1267
785
+ global_open_sdk_python-1.7.3.dist-info/WHEEL,sha256=aeYiig01lYGDzBgS8HxWXOg3uV61G9ijOsup-k9o1sk,91
786
+ global_open_sdk_python-1.7.3.dist-info/top_level.txt,sha256=A7eVUp0bsHtbJ7vD4f_Ju79_mDJojU9deED6-LV9_s0,4
787
+ global_open_sdk_python-1.7.3.dist-info/RECORD,,
@@ -1,5 +1,5 @@
1
1
  Wheel-Version: 1.0
2
- Generator: setuptools (84.2.1)
2
+ Generator: setuptools (82.0.1)
3
3
  Root-Is-Purelib: true
4
4
  Tag: py3-none-any
5
5