IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

ASP.NET Discussion :

ASP.NET MVC c# and Paypal


Sujet :

ASP.NET

  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Janvier 2011
    Messages
    39
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2011
    Messages : 39
    Par défaut ASP.NET MVC c# and Paypal
    Bonjour,

    Je viens solliciter votre aide concernant l'intégration de Paypal dans mon appli asp.Net MVC
    J'ai regardé beaucoup de tuto et de vidéo sur internet mais pas mal de choses m'échape.
    J'essaye de suivre ce tuto
    https://developer.paypal.com/docs/checkout/
    Mais je comprend pas bien les parties "connexion" avec le coté serveur.
    C'est à dire que je ne sais pas dans quel fichier stocker mon code serveur (classe à part, controleur?) et comment communiquer avec depuis le côté client (fetch ?)
    Si quelqu'un pouvait m'aider dans ce sens et m'indiquer comment structurer mon code et comment les uns communique avec les autres, ce serait très aimable
    Ce lien est aussi très intéressant mais il traite surtout de php, que je ne maitrise pas
    https://www.primfx.com/integrer-payp...teme-paiement/

    Merci par avance de votre aide

  2. #2
    Membre averti
    Profil pro
    Inscrit en
    Janvier 2011
    Messages
    39
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2011
    Messages : 39
    Par défaut
    Bonjour,

    Après plusieurs jour de recherche et de test, je bloque sur l'étape suivante:

    Voici le code que j'utilise pour le bouton paypal - ClientID est à remplacer par celui de l'app sandbox.
    Code HTML : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    <script
    		src="https://www.paypal.com/sdk/js?client-id=ClientId&currency=USD&intent=capture"> 
    </script>
     
    <script>
            paypal.Buttons({
            createOrder: function (data, actions) {
     
                return fetch("/Paypal/paypal_CreateOrder", {
                    method: 'post',
                    headers: {
                        'content-type': 'application/json'
                    }
                            }).then(function (res) {
                                    return res.json();
                            }).then(function (data) {
                    return data.orderID;
                            });
                            //return actions.order.create({
                            //      purchase_units: [{
                            //              amount: {
                            //                      value: '0.01'
                            //              }
                            //      }]
                            //});
                                    
            },       
            }).render('#paypal-button-container');
    </script>

    dans mon fichier routeConfig.cs j'ai ajouté la route suivante (lien vers la methode de mon controller)
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    routes.MapRoute(
                    name: "paypal_CreateOrder",
                    url: "Paypal/paypal_CreateOrder",
                    defaults: new { controller = "Paypal", action = "CreateOrder", id = UrlParameter.Optional });
    Voici le code de mon controller

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
    115
    116
    117
    118
    119
    120
    121
    122
    123
    124
    125
    126
    127
    128
    129
    130
    131
    132
    133
    134
    135
    136
    137
    138
    139
    140
    141
    142
    143
    144
    145
    146
    147
    148
    149
    150
    151
    152
    153
    154
    155
    156
    157
    158
    159
    160
    161
    162
    163
    164
    165
    166
    public class PaypalController : Controller
        {
            //
            // GET: /Paypal/        
            public ActionResult Index()
            {
                return View();
            }
     
            [HttpPost]
            public async System.Threading.Tasks.Task<PayPalHttp.HttpResponse> CreateOrder(bool debug = false)
            {
                var request = new OrdersCreateRequest();
                request.Headers.Add("prefer", "return=representation");
     
                request.RequestBody(BuildRequestBody());
     
                //3. Call PayPal to set up a transaction
                try
                {
                    PayPalHttp.HttpResponse response = await PayPalClient.client().Execute(request);
                    //response = await PayPalClient.client().Execute(request);
                    //string o = PayPalClient.ObjectToJSONString(response.Result<Order>());
                    return response;
                }
                catch (Exception ex)
                {
     
                }
     
                debug = true;
                if (debug)
                {
                    //var result = response.Result<Order>();
                    //Console.WriteLine("Status: {0}", result.Status);
                    //Console.WriteLine("Order Id: {0}", result.Id);
                    //Console.WriteLine("Intent: {0}", result.CheckoutPaymentIntent);
                    //Console.WriteLine("Links:");
                    //foreach (LinkDescription link in result.Links)
                    //{
                    //    Console.WriteLine("\t{0}: {1}\tCall Type: {2}", link.Rel, link.Href, link.Method);
                    //}
                    //AmountWithBreakdown amount = result.PurchaseUnits[0].AmountWithBreakdown;
                    //Console.WriteLine("Total Amount: {0} {1}", amount.CurrencyCode, amount.Value);
                }
     
                return null;
            }
     
            private static OrderRequest BuildRequestBody()
            {
                OrderRequest orderRequest = new OrderRequest()
                {
                    CheckoutPaymentIntent = "CAPTURE",
     
                    ApplicationContext = new ApplicationContext
                    {
                        BrandName = "EXAMPLE INC",
                        LandingPage = "BILLING",
                        UserAction = "CONTINUE",
                        ShippingPreference = "SET_PROVIDED_ADDRESS",
                        CancelUrl = "http://localhost:4627/Checkout/CheckoutCancel.aspx",
                        ReturnUrl = "http://localhost:4627/Payment/Success"             
                    },
                    PurchaseUnits = new List<PurchaseUnitRequest>
            {
              new PurchaseUnitRequest{
                ReferenceId =  "PUHF", InvoiceId = "10",
                Description = "Sporting Goods",
                CustomId = "CUST-HighFashions",
                SoftDescriptor = "HighFashions",
                AmountWithBreakdown = new AmountWithBreakdown
                {
                  CurrencyCode = "USD",
                  Value = "230.00",
                   AmountBreakdown = new AmountBreakdown
                  {
                    ItemTotal = new Money
                    {
                      CurrencyCode = "USD",
                      Value = "180.00"
                    },
                    Shipping = new Money
                    {
                      CurrencyCode = "USD",
                      Value = "30.00"
                    },
                    Handling = new Money
                    {
                      CurrencyCode = "USD",
                      Value = "10.00"
                    },
                    TaxTotal = new Money
                    {
                      CurrencyCode = "USD",
                      Value = "20.00"
                    },
                    ShippingDiscount = new Money
                    {
                      CurrencyCode = "USD",
                      Value = "10.00"
                    }
                  }
                },
                Items = new List<Item>
                {
                  new Item
                  {
                    Name = "T-shirt",
                    Description = "Green XL",
                    Sku = "sku01",
                    UnitAmount = new Money
                    {
                      CurrencyCode = "USD",
                      Value = "90.00"
                    },
                    Tax = new Money
                    {
                      CurrencyCode = "USD",
                      Value = "10.00"
                    },
                    Quantity = "1",
                    Category = "PHYSICAL_GOODS"
                  },
                  new Item
                  {
                    Name = "Shoes",
                    Description = "Running, Size 10.5",
                    Sku = "sku02",
                    UnitAmount = new Money
                    {
                      CurrencyCode = "USD",
                      Value = "45.00"
                    },
                    Tax = new Money
                    {
                      CurrencyCode = "USD",
                      Value = "5.00"
                    },
                    Quantity = "2",
                    Category = "PHYSICAL_GOODS"
                  }
                },
                 ShippingDetail = new ShippingDetail
                {
                  Name = new Name
                  {
                    FullName = "John Doe"
                  },
                  AddressPortable = new AddressPortable
                  {
                    AddressLine1 = "123 Townsend St",
                    AddressLine2 = "Floor 6",
                    AdminArea2 = "San Francisco",
                    AdminArea1 = "CA",
                    PostalCode = "94107",
                    CountryCode = "US"
                  }
                }
              }
            }
                };
     
                return orderRequest;
            }
    }
    Toutes ces étapes sont indiquées par paypal. A la seule différence que j'ai supprimé le caractère static de la méthode createOrder car sinon elle n'est pas appellée par la methode fetch de java. Et je pense que le soucis est là, j'ai trouvé sur internet que le caractère static de la methode "bloque" les autres process en attendant la réponse. Hors actuellement, j'ai constaté que le code java de mon boutton paypal n'attend pas le retour de "CreateOrder".
    Savez vous comment appeler une méthode static en mvc? ou bien comment faire autrement?

    Merci de votre attention

  3. #3
    Membre averti
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Avril 2020
    Messages
    13
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 66
    Localisation : France, Seine et Marne (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Avril 2020
    Messages : 13
    Par défaut Intégration Paypal
    Bonjour

    je suis moi même perdu VS2019 + VBNET
    j'ai ajouté le Package Nuget Paypal
    créé tous ce qui va bien au niveau du compte Paypal
    mais pour l'utilisation je trouve plein d'exemples très différent dans le coup je suis perdu

    j'ai déjà intégré à des projets plusieurs solution de banque et en deux coup de cuillère à pot cela fonctionnait

    si quelqu'un c'est ou trouver un code simple( paiement d'un panier avec le choix par le client d'utiliser son compte paypal ou avec sa CB sans compte Paypal)

    Un grand merci

  4. #4
    Modérateur
    Avatar de DotNetMatt
    Homme Profil pro
    CTO
    Inscrit en
    Février 2010
    Messages
    3 611
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : Etats-Unis

    Informations professionnelles :
    Activité : CTO
    Secteur : Finance

    Informations forums :
    Inscription : Février 2010
    Messages : 3 611
    Billets dans le blog
    3
    Par défaut
    J'ai potentiellement besoin d'utiliser Paypal sur un projet. Je vais monter un POC en fin de semaine donc j'espere pouvoir vous tenir au courant en debut de semaine prochaine, voire durant le week-end.
    Less Is More
    Pensez à utiliser les boutons , et les balises code
    Desole pour l'absence d'accents, clavier US oblige
    Celui qui pense qu'un professionnel coute cher n'a aucune idee de ce que peut lui couter un incompetent.

  5. #5
    Membre averti
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Avril 2020
    Messages
    13
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 66
    Localisation : France, Seine et Marne (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Avril 2020
    Messages : 13
    Par défaut
    Merci
    je continu à chercher de mon côté (a taton)

  6. #6
    Modérateur
    Avatar de DotNetMatt
    Homme Profil pro
    CTO
    Inscrit en
    Février 2010
    Messages
    3 611
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : Etats-Unis

    Informations professionnelles :
    Activité : CTO
    Secteur : Finance

    Informations forums :
    Inscription : Février 2010
    Messages : 3 611
    Billets dans le blog
    3
    Par défaut
    Citation Envoyé par leonhart77 Voir le message
    A la seule différence que j'ai supprimé le caractère static de la méthode createOrder
    Effectivement il faut etre tres prudent avec le mot cle static sur les appli ASP.NET.

    Citation Envoyé par leonhart77 Voir le message
    Hors actuellement, j'ai constaté que le code java de mon boutton paypal n'attend pas le retour de "CreateOrder".
    Attention java et javascript sont 2 langages completement differents. Ici je pense que tu parles de javascript.

    Citation Envoyé par leonhart77 Voir le message
    Savez vous comment appeler une méthode static en mvc?
    Aucune difference, mais il ne faut pas utiliser ce mot cle en regle generale !

    Ton probleme n'est pas cote serveur mais cote client (javascript). D'ou est-ce qu'il sort ton code ?
    Less Is More
    Pensez à utiliser les boutons , et les balises code
    Desole pour l'absence d'accents, clavier US oblige
    Celui qui pense qu'un professionnel coute cher n'a aucune idee de ce que peut lui couter un incompetent.

Discussions similaires

  1. [ASP.NET MVC] C'est quoi ?
    Par DranDane dans le forum ASP.NET
    Réponses: 2
    Dernier message: 05/09/2008, 11h48
  2. ASP.NET MVC Preview 4
    Par hollywood dans le forum Général Dotnet
    Réponses: 0
    Dernier message: 22/07/2008, 11h57
  3. Framework ASP.NET MVC
    Par superbobo dans le forum Général Dotnet
    Réponses: 5
    Dernier message: 02/07/2008, 16h11
  4. ASP.NET MVC Preview 2
    Par cereal59 dans le forum ASP.NET
    Réponses: 1
    Dernier message: 04/04/2008, 16h41
  5. [ASP.NET][C#] Drag and Drop entre 2 gridview
    Par hurricane dans le forum ASP.NET
    Réponses: 1
    Dernier message: 16/01/2008, 08h55

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo