PayPal реализация App Fee (плата за платформу) - PullRequest
0 голосов
/ 27 июня 2019

Мы используем PayPal sdk (Runtime Version- 2.0.50727)
Для реализации концепции App Fee, после завершения транзакции между покупателем и продавцом (т.е. сумма зачисляется Merchant), мы пытаемся вычесть App Appee из подключенногоСчет продавца и перевод на счет Платформы.При этом мы получаем код состояния - PayPalPaymentStatusCode.CREATED вместо PayPalPaymentStatusCode.COMPLETED.Пожалуйста, обратитесь приложенные снимки экрана.

Кроме того, мы не видим транзакции платы за платформу в нашей консоли учетной записи платформы, а также в подключенной консоли учетной записи.

Кроме того, где мы можем проверить журналы API и сами увидеть ошибки, еслилюбой?(как полоса и мы платим).Хорошо иметь экран в учетной записи Merchant или Platform.

У нас есть интеграция PayPal в наше веб-приложение.

public bool PreApprovalPayment (decimal appFee) {string receiverEmail = ConfigurationManager.AppSettings ["Paypal.Receiver.EmailId"]. ToString ();

        //PAY – Use this option if you are not using the Pay request in combination with ExecutePayment.
        //CREATE – Use this option to set up the payment instructions with SetPaymentOptions 
        //and then execute the payment at a later time with the ExecutePayment.
        //PAY_PRIMARY – For chained payments only, specify this value to delay payments to the secondary receivers; 
        //only the payment to the primary receiver is processed.
        string actionType = "PAY";
        string fundingType = "BALANCE";//ECHECK,BALANSE,CREDITCARD 
        string returnUrl = this.ReturnUrl;
        //cancel url to redirect to Payment integration app for Set Express check out Payment
        string cancelUrl = this.ReturnUrl;

        ReceiverList receiverList = new ReceiverList();
        receiverList.receiver = new List<Receiver>();
        Receiver rec = new Receiver(appFee);
        rec.email = receiverEmail;
        receiverList.receiver.Add(rec);
        PayRequest request = new PayRequest(new RequestEnvelope("en_US"), actionType,
                            cancelUrl, this.CurrencyCode,
                            receiverList, returnUrl);
        if (!string.IsNullOrWhiteSpace(this.PreApprovalKey))
        {
            request.preapprovalKey = this.PreApprovalKey;
        }

        if (!string.IsNullOrWhiteSpace(this.SenderEmail))
            request.senderEmail = this.SenderEmail;

        if (!string.IsNullOrWhiteSpace(fundingType))
        {
            request.fundingConstraint = new FundingConstraint();
            request.fundingConstraint.allowedFundingType = new FundingTypeList();
            request.fundingConstraint.allowedFundingType.fundingTypeInfo.Add(
                new FundingTypeInfo(fundingType));
        }
        AdaptivePaymentsService service = null;
        PayResponse response = null;
        try
        {
            // Configuration map containing signature credentials and other required configuration.
            Dictionary<string, string> configurationMap = PayPalConfiguration.GetAcctAndConfig();

            // Creating service wrapper object to make an API call and loading
            // configuration map for your credentials and endpoint
            service = new AdaptivePaymentsService(configurationMap);

            if (service != null)
            {
                response = service.Pay(request);
                if (response != null && !(response.responseEnvelope.ack == AckCode.FAILURE) &&
                    !(response.responseEnvelope.ack == AckCode.FAILUREWITHWARNING))
                {
                    if (!string.IsNullOrEmpty(response.payKey) && response.paymentExecStatus.Equals(PayPalPaymentStatusCode.COMPLETED.ToString()))
                    {
                        return true;
                    }
                }
            }
        }
        catch (Exception e)
        {
            return false;
        }
        return false;
    }

Нам нужно вычесть плату за приложениеиз транзакции клиента, которая поступает на счет владельца платформы, а оставшаяся сумма должна поступить организатору магазина.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...