Changeset 39 for trunk

Show
Ignore:
Timestamp:
04/09/08 01:15:42 (4 years ago)
Author:
tim
Message:

Settle is implemented

Location:
trunk/fpys
Files:
3 modified

Legend:

Unmodified
Added
Removed
  • trunk/fpys/client.py

    r38 r39  
    100100        # Hackish at best...  
    101101        root_tag = document.getroot().tag 
    102         if root_tag.find("PayResponse") >= 0 or root_tag.find("ReserveResponse") >= 0: 
    103             self.transaction = TransactionResponse() 
    104             self.transaction.id = document.find("//TransactionId").text 
    105             self.transaction.status = document.find("//Status").text 
    106              
     102        for tag_name in ["PayResponse", "ReserveResponse", "SettleResponse"]: 
     103            if self.success and root_tag.find(tag_name) >= 0: 
     104                self.transaction = TransactionResponse() 
     105                self.transaction.id = document.find("//TransactionId").text 
     106                self.transaction.status = document.find("//Status").text 
     107 
    107108 
    108109class FlexiblePaymentClient(object): 
     
    370371        pass 
    371372 
    372     def settle(self): 
    373         pass 
    374  
     373    def settle(self, 
     374               transaction_id, 
     375               amount, 
     376               date = None): 
     377        params = {'Action': 'Settle', 
     378                  'ReserveTransactionId': transaction_id, 
     379                  'TransactionAmount.Amount': amount, 
     380                  'TransactionAmount.CurrencyCode': 'USD'} 
     381        if date is not None: 
     382            params['TransactionDate'] = date 
     383 
     384        return self.execute(params) 
     385 
     386                   
     387 
  • trunk/fpys/tests/client_test.py

    r38 r39  
    172172    assert response.transaction.id == "134OLF7MHB2L4V9T54RHADQ9FCK5NLVZHDC" 
    173173 
     174def test_settle_over_amount(): 
     175    response = fps_client.settle("134OLF7MHB2L4V9T54RHADQ9FCK5NLVZHDC", 
     176                                 "100.00") 
     177    assert response.success == False 
     178    assert 1 == len(response.errors) 
     179    assert response.errors[0]['errorCode'] == 'SettleAmountGreaterThanReserveAmount' 
     180 
     181def test_settle(): 
     182    response = fps_client.settle("134OLF7MHB2L4V9T54RHADQ9FCK5NLVZHDC", 
     183                                 "19.95") 
     184    assert response.success == True 
     185    assert response.transaction.id == "134OLF7MHB2L4V9T54RHADQ9FCK5NLVZHDC" 
     186    assert response.transaction.status == "Initiated" 
     187 
    174188     
  • trunk/fpys/tests/wsgi_responder.py

    r38 r39  
    7575        return [response] 
    7676 
     77    def Settle(self, environ): 
     78        if environ['fps.params']['TransactionAmount.Amount'][0] == "100.00": 
     79            response = """<ns0:SettleResponse xmlns:ns0="http://fps.amazonaws.com/doc/2007-01-08/"><Status>Failure</Status><Errors><Errors><ErrorType>Business</ErrorType><IsRetriable>false</IsRetriable><ErrorCode>SettleAmountGreaterThanReserveAmount</ErrorCode><ReasonText>Settle Amount "$100.000000" is greater than the Reserve Amount "$19.950000"</ReasonText></Errors></Errors><RequestId>d6449438-af36-441d-9b79-88b3a363f3e0:0</RequestId></ns0:SettleResponse>""" 
     80        else: 
     81            response = """<ns0:SettleResponse xmlns:ns0="http://fps.amazonaws.com/doc/2007-01-08/"><ns0:TransactionResponse><TransactionId>134OLF7MHB2L4V9T54RHADQ9FCK5NLVZHDC</TransactionId><Status>Initiated</Status></ns0:TransactionResponse><Status>Success</Status><RequestId>a412e705-389e-4579-ad78-eee5bb611467:0</RequestId></ns0:SettleResponse>""" 
     82        return[response] 
     83        
    7784flexible_payment_service = FlexiblePaymentService() 
    7885