简体   繁体   中英

PayPal Adaptive Payments refund Issue

I'm trying to refund an adaptive payment chained payment totally to the sender, but I'm stuck. I'm using CodeIgniter and Andrew Angell's awesome library for adaptive payments.

The refund I want to make has details like this: (you can see the raw xml requests and responds 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 execute refund, providing paykey, transaction ID (which I got from the request above), and sender email (which will get refund) this error comes up (you can see the raw request and responses 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 don't provide transaction ID and leave the rest to PayPal, the issue changes to this (raw XML request are 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've already provided the CurrencyCode, also the sender's email adress is taken from the request itself to prevent typos. Even if I hardcode it doesn't change the situation.

Can you help me, what am I missing?

Thanks,

check the documentation say by paypal here

Turkish Lira     TRY

NOTE:This currency is supported as a payment currency and a currency balance for in-country PayPal accounts only.

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM