示例#1
0
        private bool doRefresh(PayPalSession session, PayPalOAuthToken authToken, Transaction transaction, object extraData = null)
        {
            var logID = Log(MessageType.Info, "doRefresh()", "Refresh transaction");

            payoutItemDetails payoutItem = null;
            var payoutItemID             = getPayoutItemID(transaction);

            if (payoutItemID.IsNullOrWhiteSpace())
            {
                var payouts = getPayouts(getBatchID(transaction), authToken, logID);
                switch (payouts.BatchHeader.BatchStatus)
                {
                case payoutBatchStatus.NEW:
                case payoutBatchStatus.PENDING:
                case payoutBatchStatus.PROCESSING:
                    return(false);
                }
                if (!payouts.Items.Any())
                {
                    return(false);
                }
                payoutItem = payouts.Items.FirstOrDefault(item => item.PayoutItem.SenderItemId.Equals(transaction.ID.AsString()));
            }
            else
            {
                payoutItem = getPayoutItem(payoutItemID, authToken, logID);
            }
            if (payoutItem == null)
            {
                return(false);
            }

            var transactionStatus = mapTransactionStatus(payoutItem.TransactionStatus);

            if (transaction.Status == transactionStatus)
            {
                return(false);
            }

            transaction.__Apply(Transaction.Operation.Refresh(transactionStatus, payoutItem.TimeProcessed, payoutItem.Token, payoutItem.Amount, payoutItem.PayoutItemFee.Value, extraData));
            return(true);
        }
示例#2
0
        private payoutItemDetails cancelPayoutItem(string payoutItemID, PayPalOAuthToken authToken, Guid logID)
        {
            Log(MessageType.Info, "cancelPayoutIyem()", "Cancel payout item", relatedMessageID: logID);

            try
            {
                var request = new WebClient.RequestParams(this)
                {
                    Method      = HTTPRequestMethod.POST,
                    ContentType = ContentType.JSON,
                    Headers     = new Dictionary <string, string>
                    {
                        { HDR_AUTHORIZATION, authToken.AuthorizationHeader }
                    }
                };

                var response = WebClient.GetJson(URI_CancelPayoutItem(payoutItemID), request);
                Log(MessageType.Trace, "cancelPayoutIyem()", "Payout Item", relatedMessageID: logID, parameters: response.ToJSON());
                var payoutItem = new payoutItemDetails(response);
                if (payoutItem.TransactionStatus == payoutTransactionStatus.RETURNED)
                {
                    Log(MessageType.Info, "cancelPayoutIyem()", "Payout item canceled", relatedMessageID: logID);
                }
                else
                {
                    Log(MessageType.Info, "cancelPayoutIyem()", "Payout item not canceled", relatedMessageID: logID);
                }

                return(payoutItem);
            }
            catch (Exception ex)
            {
                var error = composeError(StringConsts.PAYPAL_PAYOUT_ITEM_CANCEL_ERROR_MESSAGE.Args(ex.ToMessageWithType()), ex);
                Log(MessageType.Error, "cancelPayoutIyem()", error.Message, ex, relatedMessageID: logID);
                throw error;
            }
        }