I am trying to fully refund the adaptive payment with reference to the sender, but I am stuck. I use CodeIgniter and Andrew Angell awesome library for responsive payments.
The return I want to do has the following details: (you can see the raw xml requests and respond below)
Array ( [Errors] => Array ( ) [Ack] => Success [Build] => 5472483 [CorrelationID] => 4d31bf900a109 [Timestamp] => 2013-03-20T09:45:02.585-07:00 [ActionType] => PAY_PRIMARY [CancelURL] => http://my-cancel-url.com [CurrencyCode] => TRY [FeesPayer] => PRIMARYRECEIVER [FundingTypes] => Array ( ) [IPNNotificationURL] => [Memo] => [PayKey] => my-paykey [PaymentInfo] => Array ( [PendingRefund] => false [RefundAmount] => 0.00 [SenderTransactionID] => [SenderTransactionStatus] => COMPLETED [TransactionID] => my-transaction-id [TransactionStatus] => COMPLETED ) [PreapprovalKey] => [ReturnURL] => http://success-url-area.com [ReverseAllParallelPaymentsOnError] => false [SenderEmail] => sender@email.com [Status] => INCOMPLETE [TrackingID] => [Receiver] => Array ( [Amount] => 5.00 [Email] => receiver@email.com [InvoiceID] => [PaymentType] => SERVICE [Primary] => true ) [XMLRequest] => <?xml version="1.0" encoding="utf-8"?><PaymentDetailsRequest xmlns="http://svcs.paypal.com/types/ap"><requestEnvelope xmlns=""><detailLevel>ReturnAll</detailLevel><errorLanguage>en_US</errorLanguage></requestEnvelope><payKey xmlns="">my-paykey</payKey></PaymentDetailsRequest> [XMLResponse] => <?xml version='1.0' encoding='UTF-8'?><ns2:PaymentDetailsResponse xmlns:ns2="http://svcs.paypal.com/types/ap"><responseEnvelope><timestamp>2013-03-20T09:45:02.585-07:00</timestamp><ack>Success</ack><correlationId>4d31bf900a109</correlationId><build>5472483</build></responseEnvelope><cancelUrl>http://my-cancel-url.com</cancelUrl><currencyCode>TRY</currencyCode><paymentInfoList><paymentInfo><transactionId>my-transaction-id</transactionId><transactionStatus>COMPLETED</transactionStatus><receiver><amount>5.00</amount><email> receiver@email.com </email><primary>true</primary><paymentType>SERVICE</paymentType><accountId>7VYWTSCQKWPAL</accountId></receiver><refundedAmount>0.00</refundedAmount><pendingRefund>false</pendingRefund><senderTransactionId>7P642947V2872150G</senderTransactionId><senderTransactionStatus>COMPLETED</senderTransactionStatus></paymentInfo><paymentInfo><receiver><amount>4.60</amount><email> soulsmasher@gmail.com </email><primary>false</primary><paymentType>SERVICE</paymentType><accountId>7UZSWUVKCU4UW</accountId></receiver><refundedAmount>0.00</refundedAmount><pendingRefund>false</pendingRefund></paymentInfo></paymentInfoList><returnUrl>http://success-url-area.com</returnUrl><senderEmail> sender@email.com </senderEmail><status>INCOMPLETE</status><payKey>my-paykey</payKey><actionType>PAY_PRIMARY</actionType><feesPayer>PRIMARYRECEIVER</feesPayer><reverseAllParallelPaymentsOnError>false</reverseAllParallelPaymentsOnError><sender><email> sender@email.com </email><accountId>Y2BSLXZ8DQYY2</accountId><useCredentials>false</useCredentials></sender></ns2:PaymentDetailsResponse> )
When I try to make a refund, providing the key to payment, the transaction ID (which I received from the above request) and the sender of the email (who will receive the refund), this error occurs (you can see the unhandled requests and answers below):
Array ( [Errors] => Array ( [0] => Array ( [Receiver] => [Category] => Application [Domain] => PLATFORM [ErrorID] => 589061 [ExceptionID] => [Message] => The receiver sender@email.com is invalid for this refund [Parameter] => sender@email.com [Severity] => Error [Subdomain] => Application ) ) [Ack] => Failure [Build] => 5472483 [CorrelationID] => 2a1630b772ee0 [Timestamp] => 2013-03-20T09:52:10.986-07:00 [EncryptedTransactionID] => [RefundFeeAmount] => [RefundGrossAmount] => [RefundHasBecomeFull] => [RefundNetAmount] => [RefundStatus] => [RefundTransactionStatus] => [TotalOfAllRefunds] => [Receiver] => Array ( [Amount] => [Email] => [InvoiceID] => [PaymentType] => [Primary] => ) [RawRequest] => <?xml version="1.0" encoding="utf-8"?><RefundRequest xmlns="http://svcs.paypal.com/types/ap"><requestEnvelope xmlns=""><detailLevel>ReturnAll</detailLevel><errorLanguage>en_US</errorLanguage></requestEnvelope><currencyCode>TRY</currencyCode><payKey xmlns="">my-paykey</payKey><receiverList xmlns=""><receiver xmlns=""><amount xmlns="">1.00</amount><email xmlns=""> sender@email.com </email><paymentType xmlns="">SERVICE</paymentType></receiver></receiverList><transactionId xmlns="">1VL98806A27476639</transactionId></RefundRequest> [RawResponse] => <?xml version='1.0' encoding='UTF-8'?><ns3:FaultMessage xmlns:ns3="http://svcs.paypal.com/types/common" xmlns:ns2="http://svcs.paypal.com/types/ap"><responseEnvelope><timestamp>2013-03-20T09:52:10.986-07:00</timestamp><ack>Failure</ack><correlationId>2a1630b772ee0</correlationId><build>5472483</build></responseEnvelope><error><errorId>589061</errorId><domain>PLATFORM</domain><subdomain>Application</subdomain><severity>Error</severity><category>Application</category><message>The receiver sender@email.com is invalid for this refund</message><parameter> sender@email.com </parameter></error></ns3:FaultMessage> ) 1
Also, when I do not provide the transaction identifier and leave the rest in PayPal, the problem changes to this (the raw XML request is below the array):
Array ( [Errors] => Array ( [0] => Array ( [Receiver] => [Category] => Application [Domain] => PLATFORM [ErrorID] => 589036 [ExceptionID] => [Message] => The currency code is missing or doesn't match the code in the payment request [Parameter] => [Severity] => Error [Subdomain] => Application ) ) [Ack] => Failure [Build] => 5472483 [CorrelationID] => e3fc5e41040f3 [Timestamp] => 2013-03-20T10:02:29.233-07:00 [EncryptedTransactionID] => [RefundFeeAmount] => [RefundGrossAmount] => [RefundHasBecomeFull] => [RefundNetAmount] => [RefundStatus] => [RefundTransactionStatus] => [TotalOfAllRefunds] => [Receiver] => Array ( [Amount] => [Email] => [InvoiceID] => [PaymentType] => [Primary] => ) [RawRequest] => <?xml version="1.0" encoding="utf-8"?><RefundRequest xmlns="http://svcs.paypal.com/types/ap"><requestEnvelope xmlns=""><detailLevel>ReturnAll</detailLevel><errorLanguage>en_US</errorLanguage></requestEnvelope><currencyCode>TRY</currencyCode><payKey xmlns="">AP-52A99028X8685964M</payKey><receiverList xmlns=""><receiver xmlns=""><amount xmlns="">1.00</amount><email xmlns=""> sender@email.com </email><paymentType xmlns="">SERVICE</paymentType></receiver></receiverList></RefundRequest> [RawResponse] => <?xml version='1.0' encoding='UTF-8'?><ns3:FaultMessage xmlns:ns3="http://svcs.paypal.com/types/common" xmlns:ns2="http://svcs.paypal.com/types/ap"><responseEnvelope><timestamp>2013-03-20T10:02:29.233-07:00</timestamp><ack>Failure</ack><correlationId>e3fc5e41040f3</correlationId><build>5472483</build></responseEnvelope><error><errorId>589036</errorId><domain>PLATFORM</domain><subdomain>Application</subdomain><severity>Error</severity><category>Application</category><message>The currency code is missing or doesn't match the code in the payment request</message></error></ns3:FaultMessage> ) 1
As you can see, I have already provided CurrencyCode, also the sender's email address is taken from the request itself to prevent typos. Even if I'm tough, this will not change the situation.
Can you help me, what am I missing?
Thanks,
source share