def setUp(self): self.maxDiff = None self.mws_access_key = 'mws_access_key' self.mws_secret_key = 'mws_secret_key' self.merchant_id = 'merchant_id' self.service_version = '2013-01-01' self.mws_endpoint = \ 'https://mws.amazonservices.com/OffAmazonPayments_Sandbox/{}'.format( self.service_version) self.client = AmazonPayClient( mws_access_key=self.mws_access_key, mws_secret_key=self.mws_secret_key, merchant_id=self.merchant_id, handle_throttle=False, sandbox=True, region='na', currency_code='test') self.request = PaymentRequest( params={'test': 'test'}, config={'mws_access_key': self.mws_access_key, 'mws_secret_key': self.mws_secret_key, 'api_version': '2013-01-01', 'merchant_id': self.merchant_id, 'mws_endpoint': self.mws_endpoint, 'headers': {'test': 'test'}, 'handle_throttle': True}) self.response = PaymentResponse('<test>test</test>')
def setUp(self): self.maxDiff = None self.mws_access_key = 'mws_access_key' self.mws_secret_key = 'mws_secret_key' self.merchant_id = 'merchant_id' self.service_version = '2013-01-01' self.mws_endpoint = \ 'https://mws.amazonservices.com/OffAmazonPayments_Sandbox/{}'.format( self.service_version) self.client = AmazonPayClient( mws_access_key=self.mws_access_key, mws_secret_key=self.mws_secret_key, merchant_id=self.merchant_id, handle_throttle=False, sandbox=True, region='na', currency_code='USD' ) self.request = PaymentRequest( params={'test': 'test'}, config={'mws_access_key': self.mws_access_key, 'mws_secret_key': self.mws_secret_key, 'api_version': '2013-01-01', 'merchant_id': self.merchant_id, 'mws_endpoint': self.mws_endpoint, 'headers': {'test': 'test'}, 'handle_throttle': True}) self.response = PaymentResponse('<test>الفلانية فلا</test>') self.supplementary_data = '{"AirlineMetaData" : {"version": 1.0, "airlineCode": "PAX", "flightDate": "2018-03-24T20:29:19.22Z", "departureAirport": "CDG", "destinationAirport": "LUX", "bookedLastTime": -1, "classOfTravel": "F", "passengers": {"numberOfPassengers": 4, "numberOfChildren": 1, "numberOfInfants": 1 }}, "AccommodationMetaData": {"version": 1.0, "startDate": "2018-03-24T20:29:19.22Z", "endDate": "2018-03-24T20:29:19.22Z", "lengthOfStay": 5, "numberOfGuests": 4, "class": "Standard", "starRating": 5, "bookedLastTime": -1 }, "OrderMetaData": {"version": 1.0, "numberOfItems": 3, "type": "Digital" }, "BuyerMetaData": {"version" : 1.0, "isFirstTimeCustomer" : true, "numberOfPastPurchases" : 2, "numberOfDisputedPurchases" : 3, "hasOpenDispute" : true, "riskScore" : 0.75 }}'
def authorize(): from amazon_pay.client import AmazonPayClient client = AmazonPayClient( mws_access_key=session['mws_access_key'], mws_secret_key=session['mws_secret_key'], merchant_id=session['merchant_id'], sandbox=True, region='na', currency_code='USD', log_enabled=True, log_file_name="log.txt", log_level="DEBUG") response = client.authorize_on_billing_agreement( amazon_billing_agreement_id=session['billing_agreement_id'], authorization_reference_id=rand(), authorization_amount='1.99', seller_authorization_note='Python SDK payment authorization.', transaction_timeout=0, capture_now=True) response = client.get_billing_agreement_details( amazon_billing_agreement_id=session['billing_agreement_id'], address_consent_token=session['access_token']) pretty = json.dumps( json.loads( response.to_json()), indent=4) return pretty
def get_details(): from amazon_pay.client import AmazonPayClient client = AmazonPayClient( mws_access_key=session['mws_access_key'], mws_secret_key=session['mws_secret_key'], merchant_id=session['merchant_id'], sandbox=True, region='na', currency_code='USD', log_enabled=True, log_file_name="log.txt", log_level="DEBUG") billing_agreement_id = request.form['billingAgreementId'] session['billing_agreement_id'] = billing_agreement_id response = client.set_billing_agreement_details( amazon_billing_agreement_id=billing_agreement_id, store_name='Amazon Pay Python SDK') if response.success: response = client.get_billing_agreement_details( amazon_billing_agreement_id=billing_agreement_id, address_consent_token=session['access_token']) pretty = json.dumps( json.loads( response.to_json()), indent=4) return pretty
def get_details(): if request.method == 'POST': from amazon_pay.client import AmazonPayClient client = AmazonPayClient( mws_access_key=request.session['mws_access_key'], mws_secret_key=request.session['mws_secret_key'], merchant_id=request.session['merchant_id'], sandbox=True, region='na', currency_code='USD', log_enabled=True, log_file_name="log.txt", log_level="DEBUG") order_reference_id = request.POST.get('orderReferenceId') request.session['order_reference_id'] = order_reference_id print(request.session['order_reference_id']) response = client.set_order_reference_details( amazon_order_reference_id=order_reference_id, order_total='19.95') if response.success: response = client.get_order_reference_details( amazon_order_reference_id=order_reference_id, address_consent_token=request.session['access_token']) pretty = json.dumps(json.loads(response.to_json()), indent=4) return pretty
def SetOrderAttributes(**kwargs): print("Inside SetOrderAttributes()") print(kwargs) client = AmazonPayClient(mws_access_key=kwargs["MWS_ACCESS_KEY"], mws_secret_key=kwargs["MWS_SECRET_KEY"], merchant_id=kwargs["MERCHANT_ID"], region=kwargs["REGION"], currency_code=kwargs["CURRENCY_CODE"], sandbox=True) print(client) timestamp_ = time.time() ret = client.set_order_attributes( amazon_order_reference_id=kwargs["ORDER_REF_ID"], amount=kwargs["ORDER_TOTAL"], currency_code=kwargs["CURRENCY_CODE"], seller_note='Thank you for donating {} {} to the charity of the day!'. format(kwargs["ORDER_TOTAL"], kwargs["CURRENCY_CODE"]), seller_order_id='#-donatio-{}-{}'.format(timestamp_, kwargs["ORDER_TOTAL"]), store_name='Donatio: Gamify your Charity', custom_information='-') print("Set Order Attributes") print(ret.to_json()) response = client.confirm_order_reference( amazon_order_reference_id=kwargs["ORDER_REF_ID"], success_url= "https://donatio-site.herokuapp.com/paymentStatus?success=true", failure_url= "https://donatio-site.herokuapp.com/paymentStatus?success=false") print("Confirm Order Reference") print(response.to_json())
def review(): client = AmazonPayClient( mws_access_key=session['mws_access_key'], mws_secret_key=session['mws_secret_key'], merchant_id=session['merchant_id'], sandbox=True, region=REGION_CODE, currency_code=CURRENCY_CODE, log_enabled=True, log_file_name="/tmp/amzpay.log", log_level="DEBUG") order_reference_id = request.form['orderReferenceId'] session['order_reference_id'] = order_reference_id print('get details for orderId', session['order_reference_id']) response = client.set_order_reference_details( amazon_order_reference_id=order_reference_id, order_total=session['order_amount'], seller_note='My seller note.', seller_order_id=secrets.token_hex(16), store_name='My store name.', custom_information='My custom information.') if response.success: response = client.get_order_reference_details( amazon_order_reference_id=order_reference_id, address_consent_token=session['amazon_Login_accessToken']) order_detail = json.dumps(json.loads(response.to_json()), indent=4) return render_template('review.html', order_detail=order_detail)
def confirm(): pretty_confirm = None pretty_authorize = None client = AmazonPayClient( mws_access_key=session['mws_access_key'], mws_secret_key=session['mws_secret_key'], merchant_id=session['merchant_id'], sandbox=True, region=REGION_CODE, currency_code=CURRENCY_CODE, log_enabled=True, log_file_name="/tmp/amzpay.log", log_level="DEBUG") print('session', session) response = client.confirm_order_reference( amazon_order_reference_id=session['order_reference_id']) pretty_confirm = json.dumps(json.loads(response.to_json()), indent=4) if response.success: response = client.authorize( amazon_order_reference_id=session['order_reference_id'], authorization_reference_id=rand(), authorization_amount=session['order_amount'], transaction_timeout=0, capture_now=bool(random.randint(0, 1))) pretty_authorize = json.dumps(json.loads(response.to_json()), indent=4) return render_template( 'confirm.html', confirm=pretty_confirm, authorize=pretty_authorize)
def test_environment_variables(self): os.environ['AP_REGION'] = 'na' os.environ['AP_MWS_ACCESS_KEY'] = 'AP_MWS_ACCESS_KEY' os.environ['AP_MERCHANT_ID'] = 'AP_MERCHANT_ID' os.environ['AP_CURRENCY_CODE'] = 'AP_CURRENCY_CODE' os.environ['AP_MWS_SECRET_KEY'] = 'AP_MWS_SECRET_KEY' client = AmazonPayClient(sandbox=True) self.assertEqual(client.region, 'na') self.assertEqual(client.mws_access_key, 'AP_MWS_ACCESS_KEY') self.assertEqual(client.mws_secret_key, 'AP_MWS_SECRET_KEY') self.assertEqual(client.merchant_id, 'AP_MERCHANT_ID') self.assertEqual(client.currency_code, 'AP_CURRENCY_CODE') os.environ['AP_REGION'] = 'AP_REGION' with self.assertRaises(KeyError): client = AmazonPayClient()
def test_region_exception(self): with self.assertRaises(KeyError): AmazonPayClient(mws_access_key=self.mws_access_key, mws_secret_key=self.mws_secret_key, merchant_id=self.merchant_id, handle_throttle=False, sandbox=True, region='should_throw_exception', currency_code='test')
def api(self): return AmazonPayClient( mws_access_key=self.mws_access_key, mws_secret_key=self.mws_secret_key, merchant_id=self.merchant_id, region=self.region, currency_code=self.currency_code, handle_throttle=self.handle_throttle, sandbox=self.sandbox)
def test_application_settings(self): client = AmazonPayClient( mws_access_key=self.mws_access_key, mws_secret_key=self.mws_secret_key, merchant_id=self.merchant_id, handle_throttle=False, sandbox=True, region='na', currency_code='test', application_name='test_application', application_version='test_application_version') self.assertEqual(client.application_name, 'test_application') self.assertEqual(client.application_version, 'test_application_version')
def AmazonConfirmationBackend(): pretty_confirm = None pretty_authorize = None client = AmazonPayClient( mws_access_key=settings.MWS_ACCESS, mws_secret_key=settings.MWS_SECRET, merchant_id=settings.MERCHANT_ID, sandboz=True, region='na', currency_code='USD', log_enabled=True, log_file_name='log.txt', log_level='DEBUG' ) print(client)
def confirm(): from amazon_pay.client import AmazonPayClient pretty_confirm = None pretty_authorize = None client = AmazonPayClient( mws_access_key=session['mws_access_key'], mws_secret_key=session['mws_secret_key'], merchant_id=session['merchant_id'], sandbox=True, region='na', currency_code='USD', log_enabled=True, log_file_name="log.txt", log_level="DEBUG") print(session) response = client.confirm_order_reference( amazon_order_reference_id=session['order_reference_id']) pretty_confirm = json.dumps( json.loads( response.to_json()), indent=4) if response.success: response = client.authorize( amazon_order_reference_id=session['order_reference_id'], authorization_reference_id=rand(), authorization_amount='19.95', transaction_timeout=0, capture_now=False) pretty_authorize = json.dumps( json.loads( response.to_json()), indent=4) return render_template( 'confirm.html', confirm=pretty_confirm, authorize=pretty_authorize)
def confirm(): from amazon_pay.client import AmazonPayClient client = AmazonPayClient( mws_access_key=session['mws_access_key'], mws_secret_key=session['mws_secret_key'], merchant_id=session['merchant_id'], sandbox=True, region='na', currency_code='USD', log_enabled=True, log_file_name="log.txt", log_level="DEBUG") response = client.confirm_billing_agreement( amazon_billing_agreement_id=session['billing_agreement_id']) pretty = json.dumps( json.loads( response.to_json()), indent=4) return render_template('confirm.html', confirm_response=pretty)
def authorization_notification(payload): amzn_id = payload["AuthorizationNotification"]["AuthorizationDetails"][ "AmazonAuthorizationId"] # trim everything after the last dash - seems like there should be a more # straightforward way to do this match = re.search("^(.*)[-]", amzn_id) amzn_id = match.group(1) logging.info(amzn_id) client = AmazonPayClient( mws_access_key=MWS_ACCESS_KEY, mws_secret_key=MWS_SECRET_KEY, merchant_id=AMAZON_MERCHANT_ID, region="na", currency_code="USD", sandbox=AMAZON_SANDBOX, ) response = client.get_order_reference_details( amazon_order_reference_id=amzn_id) response = response.to_dict() logging.info(json.dumps(response, indent=4)) details = response["GetOrderReferenceDetailsResponse"][ "GetOrderReferenceDetailsResult"]["OrderReferenceDetails"] amount = details["OrderTotal"]["Amount"] logging.info(amount) name = HumanName(details["Buyer"]["Name"]) first_name = name.first last_name = name.last email = details["Buyer"]["Email"] zipcode = get_zip(details=details) description = details["SellerOrderAttributes"]["StoreName"] logging.info("----Getting contact....") contact = Contact.get_or_create(email=email, first_name=first_name, last_name=last_name, zipcode=zipcode) logging.info(contact) if contact.first_name == "Subscriber" and contact.last_name == "Subscriber": logging.info(f"Changing name of contact to {first_name} {last_name}") contact.first_name = first_name contact.last_name = last_name contact.save() if contact.first_name != first_name or contact.last_name != last_name: logging.info( f"Contact name doesn't match: {contact.first_name} {contact.last_name}" ) if zipcode and not contact.created and contact.mailing_postal_code != zipcode: contact.mailing_postal_code = zipcode contact.save() logging.info("----Adding opportunity...") opportunity = Opportunity(contact=contact, stage_name="Closed Won") opportunity.amount = amount opportunity.description = description opportunity.lead_source = "Amazon Alexa" opportunity.amazon_order_id = amzn_id opportunity.campaign_id = AMAZON_CAMPAIGN_ID opportunity.name = ( f"[Alexa] {contact.first_name} {contact.last_name} ({contact.email})") opportunity.save() logging.info(opportunity) notify_slack(contact=contact, opportunity=opportunity) if contact.duplicate_found: send_multiple_account_warning(contact)