public PaypalRecord AddPaypalRecord(PaypalRecordPayload paypalRecordPayload)
        {
            PaypalRecord paypalRecord =
                Create <PaypalRecordPayload, PaypalRecord>(paypalRecordMapper, paypalRecordPayload);

            paypalRecord.companyId = paypalRecordPayload.companyId;
            paypalRecord.createBy  = paypalRecordPayload.companyId.ToString();
            paypalRecord.createOn  = DateTime.UtcNow;
            return(paypalRecord);
        }
Exemple #2
0
        public async Task <ActionResult <object> > paypal(PaypalOrderParamterModel par)
        {
            _myDbContext.Add(par);
            _myDbContext.SaveChanges();

            //取TOKEN
            var token = await GetPaypalAccessToken();

            PaypalRecordPayload paypalTransaction = new PaypalRecordPayload {
                paypalOrderId = par.orderID
            };

            dto = new PaypalRecordDto {
                paypalRecordPayload = paypalTransaction
            };
            PaypalAccessTokenResponse paypalAccessTokenResponse = new PaypalAccessTokenResponse();

            paypalAccessTokenResponse     = token;
            dto.paypalAccessTokenResponse = paypalAccessTokenResponse;
            //取ORDER資訊
            PaypalCapturePaymentResponse paypalCapturePaymentResponse = new PaypalCapturePaymentResponse();

            paypalCapturePaymentResponse = await CapturePaymentForOrder(par.orderID, token.accessToken);

            dto.paypalCapturePaymentResponse = paypalCapturePaymentResponse;
            if (paypalCapturePaymentResponse.name.IsNullOrEmpty())
            {
                GetCaptureResult(paypalCapturePaymentResponse);
            }

            ApiResponse response = new ApiResponse()
            {
                meta = new ApiResponseMeta()
            };

            if (CapturePaypalPaymentSuccess(response, dto))
            {
                //給公司代號
                dto.paypalRecordPayload.companyId = 1;
                //把資料存入PaypalRecord
                if (AddPaypalRecordSuccess(response, dto))
                {
                    try
                    {
                        var             apikey = _myDbContext.Apis.FirstOrDefault();
                        PaypalRecordDto dto2   = await TopUpApiBalance(apikey.apiKey.ToString(), dto);

                        if (AddApiTransactionSuccess(response, dto2))
                        {
                            if (await UpdatePaypalRecordSuccess(response, dto2))
                            {
                                return(dto);
                            }
                        }
                    }
                    catch (Exception ex)
                    {
                        var aa = ex.ToString();
                    }
                }
            }

            return(dto);
        }