{"id":25398,"date":"2016-10-13T11:10:10","date_gmt":"2016-10-13T11:10:10","guid":{"rendered":"https:\/\/dev.railscarma.com\/ways-handling-paypal-refunds-rails\/"},"modified":"2022-09-06T08:28:15","modified_gmt":"2022-09-06T08:28:15","slug":"facons-de-gerer-les-remboursements-paypal","status":"publish","type":"post","link":"https:\/\/www.railscarma.com\/fr\/blog\/articles-techniques\/facons-de-gerer-les-remboursements-paypal\/","title":{"rendered":"Fa\u00e7ons de g\u00e9rer les remboursements PayPal dans Rails"},"content":{"rendered":"<div data-elementor-type=\"wp-post\" data-elementor-id=\"25398\" class=\"elementor elementor-25398\" data-elementor-post-type=\"post\">\n\t\t\t\t\t\t<section class=\"elementor-section elementor-top-section elementor-element elementor-element-26698b39 elementor-section-boxed elementor-section-height-default elementor-section-height-default\" data-id=\"26698b39\" data-element_type=\"section\">\n\t\t\t\t\t\t<div class=\"elementor-container elementor-column-gap-default\">\n\t\t\t\t\t<div class=\"elementor-column elementor-col-100 elementor-top-column elementor-element elementor-element-649f7882\" data-id=\"649f7882\" data-element_type=\"column\">\n\t\t\t<div class=\"elementor-widget-wrap elementor-element-populated\">\n\t\t\t\t\t\t<div class=\"elementor-element elementor-element-51675260 elementor-widget elementor-widget-text-editor\" data-id=\"51675260\" data-element_type=\"widget\" data-widget_type=\"text-editor.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t\t\t<p>PayPal Checkout comprend des solutions de paiement allant du simple au robuste qui permettent aux commer\u00e7ants ainsi qu&#039;aux d\u00e9veloppeurs de choisir l&#039;option d&#039;int\u00e9gration la mieux adapt\u00e9e \u00e0 leur site Web et \u00e0 leurs clients.<br><strong style=\"font-size: 16px; color: var( --e-global-color-text );\"><br>Afin d&#039;int\u00e9grer Paypal Payment Gateway, nous devons proc\u00e9der comme suit\u00a0:<\/strong><br><\/p>\n<p>\n<strong>1<\/strong>. Avoir un compte PayPal professionnel ou Premier.<br><strong>2.<\/strong> Cr\u00e9ez une application PayPal et obtenez un jeton d&#039;acc\u00e8s. Lorsque nous cr\u00e9ons une application PayPal, PayPal g\u00e9n\u00e8re un ensemble de client_id OAuth et de cl\u00e9s secr\u00e8tes pour l&#039;application. PayPal g\u00e9n\u00e8re ces cl\u00e9s pour les environnements PayPal sandbox et Live. Pour obtenir un jeton d&#039;acc\u00e8s, transmettez les informations d&#039;identification client-id:secret dans l&#039;en-t\u00eate Authorization. Nous utilisons le jeton d&#039;acc\u00e8s pour l&#039;authentification lorsque nous effectuons des requ\u00eates API REST.<br><strong>3.<\/strong> Pour effectuer un test de bout en bout de notre paiement express avec int\u00e9gration en contexte, cr\u00e9ez des comptes marchand et acheteur dans le <strong>Bac \u00e0 sable PayPal<\/strong> environnement.<br><a href=\"https:\/\/www.sandbox.paypal.com\/in\/webapps\/mpp\/home\" target=\"_blank\">https:\/\/www.sandbox.paypal.com\/in\/webapps\/mpp\/home<\/a><br><strong>Marchand :<\/strong> S\u00e9lectionnez le type de compte Business et saisissez une adresse e-mail et un mot de passe.<br><strong>Acheteur :<\/strong> S\u00e9lectionnez le type de compte Personnel et saisissez un solde PayPal \u00e9lev\u00e9, tel que 5 000.<\/p>\n<p>Une fois que nous avons cr\u00e9\u00e9 un compte sandbox Paypal, cliquez sur le lien \u00ab Profil \u00bb pour ce compte, regardez sous l&#039;onglet \u00ab Informations d&#039;identification API \u00bb. Nous aurons les informations suivantes\u00a0:<\/p>\n<ul style=\"font-family: \" montserrat\",sans-serif;\"=\"\">\n<li><strong>Nom d&#039;utilisateur de l&#039;API Paypal<\/strong><\/li>\n<li><strong>Signature API Paypal<\/strong><\/li>\n<li><strong>Mot de passe de l&#039;API Paypal<\/strong><\/li>\n<\/ul>\n<p>Remarque\u00a0: Lorsque nous serons pr\u00eats \u00e0 lancer la mise en ligne, nous utiliserons simplement les informations d&#039;identification de notre v\u00e9ritable compte Paypal au lieu de celles de notre compte sandbox. Les informations d&#039;identification se trouvent dans la zone \u00ab Mon profil \u00bb sous l&#039;onglet de gauche \u00ab Mes outils de vente \u00bb sous l&#039;option \u00ab Acc\u00e8s API \u00bb.<\/p>\n<p><strong>Comment g\u00e9rer les remboursements Paypal dans Rails\u00a0:<\/strong><\/p>\n<p><strong>M\u00e9thode 1\u00a0:<\/strong><\/p>\n<p><strong>API Rest Paypal\u00a0;<\/strong><\/p>\n<p>Pour les sites marchands plus complexes, les appels directs aux API PayPal pour une int\u00e9gration Express Checkout peuvent constituer une int\u00e9gration plus appropri\u00e9e.<br><strong>API REST<\/strong> \u2014 Nous pouvons d\u00e9velopper une int\u00e9gration Express Checkout \u00e0 l&#039;aide des API PayPal REST.<\/p>\n<p>Pour int\u00e9grer le paiement express avec le flux In-Context\u00a0;<br>https:\/\/developer.paypal.com\/docs\/api\/<br>OU<br><strong>API REST PayPal SDK Ruby<\/strong> (gemme paypal-sdk-rest)\u00a0:<br>Le SDK PayPal REST fournit des API Ruby pour cr\u00e9er, traiter et g\u00e9rer les paiements.<\/p>\n<p><strong>Installation:<\/strong><br>Ajoutez la gem \u00e0 notre application, dans Gemfile\u00a0:<\/p>\n<pre><code>gemme &#039;paypal-sdk-rest&#039;<\/code><\/pre>\n<p><strong>Et puis ex\u00e9cutez\u00a0:<\/strong><\/p>\n<pre><code>Installation du bundle $<\/code><\/pre>\n<p><strong>Configuration:<\/strong><\/p>\n<pre><code>rails g paypal:sdk:installer<\/code><\/pre>\n<p><strong>Rembourse une transaction\u00a0:<\/strong><br>Toute transaction pour laquelle nous pouvons \u00e9mettre un remboursement (paiements directs et captur\u00e9s)\u00a0:<\/p>\n<ul style=\"font-family: \" montserrat\",sans-serif;\"=\"\">\n<li>Rembourser un paiement direct compl\u00e9t\u00e9 (vente)<\/li>\n<li>Rembourser un paiement autoris\u00e9 et captur\u00e9 (capture)<\/li>\n<\/ul>\n<p><strong>Rembourser un paiement finalis\u00e9 (vente)\u00a0:<\/strong><br>Si nous devons rembourser un paiement effectu\u00e9 ou une vente, fournissez l&#039;identifiant de vente qui nous a \u00e9t\u00e9 fourni en r\u00e9ponse \u00e0 un paiement effectu\u00e9 ainsi qu&#039;une charge utile JSON vide pour un remboursement complet et pour des remboursements partiels, nous pouvons \u00e0 la place inclure un objet de montant dans la charge utile JSON. .<\/p>\n<pre><code>curl -v https:\/\/api.sandbox.paypal.com\/v1\/payments\/sale\/CARMAXYZC6136044L\/refund -H &quot;Content-Type:application\/json&quot; -H &quot;Autorisation\u00a0: jeton d&#039;acc\u00e8s au porteur&quot; -d &#039;{} &#039;\n<\/code><\/pre>\n<p>Remarque\u00a0: Nous devons remplacer tous les param\u00e8tres sp\u00e9cifiques \u00e0 l&#039;appel, tels que les jetons et les identifiants, par les n\u00f4tres.<br><strong>\u00c9tat de r\u00e9ponse du remboursement\u00a0:<\/strong><\/p>\n<ul style=\"font-family: \" montserrat\",sans-serif;\"=\"\">\n<li><strong>en attente-<\/strong> Le remboursement est en attente.<\/li>\n<li><strong>compl\u00e9t\u00e9-<\/strong> Le remboursement a \u00e9t\u00e9 effectu\u00e9 avec succ\u00e8s.<\/li>\n<li><strong>\u00e9chou\u00e9-<\/strong> Le remboursement a \u00e9chou\u00e9.<\/li>\n<\/ul>\n<p><strong>Rembourser un paiement captur\u00e9\u00a0;<\/strong><br>Nous pouvons \u00e9galement rembourser un paiement captur\u00e9 :<\/p>\n<pre><code>API\u00a0: https:\/\/api.paypal.com\/v1\/payments\/capture\/{capture_id}\/refund<\/code><\/pre>\n<p>&nbsp;<\/p>\n<p>Remarque\u00a0: Nous devons fournir un montant objet pour les remboursements complets et partiels.<\/p>\n<pre><code>curl -v https:\/\/api.sandbox.paypal.com\/v1\/payments\/capture\/CARMAXYZC6136044L\/refund -H &quot;Content-Type:application\/json&quot; -H &quot;Autorisation\u00a0: jeton d&#039;acc\u00e8s au porteur&quot; -d &#039;{ &quot; montant&quot;: { &quot;currency&quot;: &quot;USD&quot;, &quot;total&quot;: &quot;50.54&quot; }, &quot;description&quot;: &quot;Voici la description du remboursement de capture.&quot; }&#039;\n<\/code><\/pre>\n<p>R\u00e9f\u00e9rence: <a href=\"https:\/\/developer.paypal.com\">https:\/\/developer.paypal.com<\/a><\/p>\n<p><strong>M\u00e9thode 2\u00a0:<\/strong><\/p>\n<p><strong>Remboursement Paypal en utilisant Active Merchant Gem\u00a0:<\/strong><\/p><p><b>Int\u00e9gration ActiveMerchant\u00a0: <\/b><a href=\"http:\/\/railscasts.com\/episodes\/145-integrating-active-merchant\">http:\/\/railscasts.com\/episodes\/145-integrating-active-merchant<\/a><br><\/p>\n<p>Dans notre candidature\u00a0;<\/p>\n<pre><code>config\/environment\/development.rb config.after_initialize do ActiveMerchant::Billing::Base.mode = :test ::GATEWAY = ActiveMerchant::Billing::PaypalGateway.new( :login =&gt; &quot;seller_1229899173_biz_api1.xyz.com&quot;, : mot de passe =&gt; &quot;FXWU58S7KXFC6HBE&quot;, :signature =&gt; \u201cAGjv6SW.mTiKxtkm6L9DcSUCUgePAUDQ3L-kTdszkPG8mRfjaRZDYtSu&quot; ) fin<\/code><\/pre>\n<p><strong>Rembourse une transaction\u00a0:<\/strong><br>Jetez un \u0153il \u00e0 <strong>paypal_common_api.rb<\/strong> fichier dans Active Merchant Gem\u00a0;<br><a href=\"https:\/\/github.com\/activemerchant\/active_merchant\/blob\/master\/lib\/active_merchant\/billing\/gateways\/paypal\/paypal_common_api.rb\">https:\/\/github.com\/activemerchant\/active_merchant\/blob\/master\/lib\/active_merchant\/billing\/gateways\/paypal\/paypal_common_api.rb<\/a><\/p>\n<p><strong>1.<\/strong> Pour un remboursement int\u00e9gral pass nul pour le montant :<\/p>\n<pre><code>passerelle.remboursement nul, &#039;CARMAXYZC6136044L&#039;<\/code><\/pre>\n<p>Cela rendra automatiquement le :refund_type \u00ab\u00a0Full\u00a0\u00bb.<br><strong>2.<\/strong> Pour un remboursement partiel, transmettez simplement le montant comme d&#039;habitude\u00a0:<\/p>\n<pre><code>passerelle.remboursement 100, &#039;CARMAXYZC6136044L&#039;<\/code><\/pre>\n<pre><code>def remboursement (argent, identification, options = {}) commit &#039;RefundTransaction&#039;, build_refund_request (argent, identification, options) fin<\/code><\/pre>\n<p><strong>Ex:<\/strong><\/p>\n<pre><code>Gateway.refund(nil,&#039;CARMAXYZC6136044L&#039;) =&gt; Remboursement complet.<\/code><\/pre>\n<pre><code>Gateway.refund(798,&#039;CARMAXYZC6136044L&#039;) =&gt; Remboursement partiel.<\/code><\/pre>\n<p>R\u00e9f\u00e9rence\u00a0: http:\/\/www.rubydoc.info\/github\/Shopify\/active_merchant\/ActiveMerchant\/Billing\/PaypalCommonAPI<\/p>\n<p><strong><br>M\u00e9thode 3\u00a0:<\/strong><\/p>\n<p><strong>Utilisation de Braintree Gem\u00a0;<\/strong><\/p>\n<p><strong>Int\u00e9gration Braintree\u00a0:<\/strong><\/p>\n<ul style=\"font-family: \" montserrat\",sans-serif;\"=\"\">\n<li>Cr\u00e9ez un compte Braintree Sandbox.<br><a href=\"https:\/\/www.braintreepayments.com\/sandbox\">https:\/\/www.braintreepayments.com\/sandbox<\/a><\/li>\n<li>Suivez les tutoriels\u00a0;<br><a href=\"https:\/\/developers.braintreepayments.com\/start\/hello-server\/ruby\">https:\/\/developers.braintreepayments.com\/start\/hello-server\/ruby<\/a><\/li>\n<li>Configurez l&#039;environnement et les informations d&#039;identification de l&#039;API\u00a0:\n<pre><code>Braintree::Configuration.environment = :sandbox Braintree::Configuration.merchant_id = &quot;use_your_merchant_id&quot; Braintree::Configuration.public_key = &quot;use_your_public_key&quot; Braintree::Configuration.private_key = &quot;use_your_private_key&quot;<\/code><\/pre>\n<\/li>\n<li>Terminez les tests d\u2019int\u00e9gration et de sandbox.<\/li>\n<\/ul>\n<p><strong>Exigences:<\/strong><\/p>\n<ul style=\"font-family: \" montserrat\",sans-serif;\"=\"\">\n<li>Le statut de la transaction doit \u00eatre r\u00e9gl\u00e9 ou r\u00e9gl\u00e9.<\/li>\n<li>Le montant du remboursement ne peut pas \u00eatre sup\u00e9rieur au montant restant non rembours\u00e9 de la transaction initiale.<\/li>\n<li>La transaction ne peut plus \u00eatre rembours\u00e9e apr\u00e8s avoir \u00e9t\u00e9 enti\u00e8rement rembours\u00e9e.<\/li>\n<\/ul>\n<p><strong>Rembourse une transaction\u00a0:<\/strong><br>Pour \u00e9mettre un remboursement avec l&#039;API, il nous suffit d&#039;ex\u00e9cuter une requ\u00eate API Transaction.refund() et nous n&#039;avons besoin que d&#039;un transaction_id pour rembourser. Facultativement, nous pouvons transmettre un montant de remboursement s&#039;il existe une exigence de remboursement partiel, et nous pouvons transmettre un order_id s&#039;il est diff\u00e9rent de l&#039;ID de commande d&#039;origine.<\/p>\n<pre><code>r\u00e9sultat = Braintree::Transaction.refund(&quot;the_transaction_id&quot;)<\/code><\/pre>\n<p>Remboursement int\u00e9gral:<\/p>\n<pre><code>r\u00e9sultat = Braintree::Transaction.refund(&quot;CARMAXYZC6136044L&quot;, nul)<\/code><\/pre>\n<p>Remboursement partiel:<\/p>\n<pre><code>r\u00e9sultat = Braintree::Transaction.refund(&quot;CARMAXYZC6136044L&quot;, &quot;40.00&quot;)<\/code><\/pre>\n<p>r\u00e9sultat.succ\u00e8s ?<br>#=&gt; vrai<br>r\u00e9sultat.transaction.montant.to_f<br>#=&gt; 40,00<\/p>\n<p>Remarque\u00a0: Seuls les remboursements complets sont autoris\u00e9s pour les transactions d\u00e9tenues dans Escrow (conservez les fonds de transaction d&#039;un sous-commer\u00e7ant jusqu&#039;\u00e0 ce que nous fassions un appel suppl\u00e9mentaire pour les lib\u00e9rer). Un remboursement partiel d&#039;une transaction Escrow g\u00e9n\u00e9rera une erreur de validation.<br><a href=\"https:\/\/developers.braintreepayments.com\/guides\/braintree-marketplace\/create\/ruby#holding-funds-in-escrow\">https:\/\/developers.braintreepayments.com\/guides\/braintree-marketplace\/create\/ruby#holding-funds-in-escrow<\/a><\/p>\n<div><strong>LUBAIB CEEJEY<\/strong><\/div>\n<div>D\u00e9veloppeur senior Ruby on Rails<\/div>\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/section>\n\t\t\t\t<section class=\"elementor-section elementor-top-section elementor-element elementor-element-535472ac elementor-section-boxed elementor-section-height-default elementor-section-height-default\" data-id=\"535472ac\" data-element_type=\"section\" data-settings=\"{&quot;background_background&quot;:&quot;classic&quot;}\">\n\t\t\t\t\t\t<div class=\"elementor-container elementor-column-gap-default\">\n\t\t\t\t\t<div class=\"elementor-column elementor-col-100 elementor-top-column elementor-element elementor-element-4b113cb4\" data-id=\"4b113cb4\" data-element_type=\"column\">\n\t\t\t<div class=\"elementor-widget-wrap elementor-element-populated\">\n\t\t\t\t\t\t<div class=\"elementor-element elementor-element-3deee2bc elementor-widget elementor-widget-heading\" data-id=\"3deee2bc\" data-element_type=\"widget\" data-widget_type=\"heading.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t<h2 class=\"elementor-heading-title elementor-size-default\">Abonnez-vous pour les derni\u00e8res mises \u00e0 jour<\/h2>\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-6724a327 elementor-widget elementor-widget-shortcode\" data-id=\"6724a327\" data-element_type=\"widget\" data-widget_type=\"shortcode.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t<div class=\"elementor-shortcode\">\t\t\t\t\t<script type=\"text\/javascript\">\n\t\t\t\t\t\tvar gCaptchaSibWidget;\n                        var onloadSibCallbackInvisible = function () {\n\n                            var element = document.getElementsByClassName('sib-default-btn');\n                            var countInvisible = 0;\n                            var indexArray = [];\n                            jQuery('.sib-default-btn').each(function (index, el) {\n                                if ((jQuery(el).attr('id') == \"invisible\")) {\n                                    indexArray[countInvisible] = index;\n                                    countInvisible++\n                                }\n                            });\n\n                            jQuery('.invi-recaptcha').each(function (index, el) {\n                                grecaptcha.render(element[indexArray[index]], {\n                                    'sitekey': jQuery(el).attr('data-sitekey'),\n                                    'callback': sibVerifyCallback,\n                                });\n                            });\n                        };\n\t\t\t\t\t<\/script>\n\t\t\t\t\t                <script src=\"https:\/\/www.google.com\/recaptcha\/api.js?onload=onloadSibCallbackInvisible&render=explicit\" async defer><\/script>\n\t\t\t\t\n\t\t\t<form id=\"sib_signup_form_1\" method=\"post\" class=\"sib_signup_form\" action=\"\">\n\t\t\t\t<div class=\"sib_loader\" style=\"display:none;\"><img\n\t\t\t\t\t\t\tsrc=\"https:\/\/www.railscarma.com\/wp-includes\/images\/spinner.gif\" alt=\"chargeur\"><\/div>\n\t\t\t\t<input type=\"hidden\" name=\"sib_form_action\" value=\"subscribe_form_submit\">\n\t\t\t\t<input type=\"hidden\" name=\"sib_form_id\" value=\"1\">\n                <input type=\"hidden\" name=\"sib_form_alert_notice\" value=\"Please fill out this field\">\n                <input type=\"hidden\" name=\"sib_form_invalid_email_notice\" value=\"Your email address is invalid\">\n                <input type=\"hidden\" name=\"sib_security\" value=\"d7f7626ab9\">\n\t\t\t\t<div class=\"sib_signup_box_inside_1\">\n\t\t\t\t\t<div style=\"\/*display:none*\/\" class=\"sib_msg_disp\">\n\t\t\t\t\t<\/div>\n                                            <div id=\"sib_captcha_invisible\" class=\"invi-recaptcha\" data-sitekey=\"6LdikOAaAAAAAJ6SWrrKVQrtw7TQpQAEnv0HS0G3\"><\/div>\n                    \t\t\t\t\t<p class=\"sib-email-area\">\r\n    <label class=\"sib-email-area\"><\/label>\r\n    <input type=\"email\" class=\"sib-email-area\" name=\"email\" required=\"required\" placeholder=\"Adresse e-mail\">\r\n<\/p>\r\n<p class=\"sib-NAME-area\">\r\n    <label class=\"sib-NAME-area\"><\/label>\r\n    <input type=\"text\" class=\"sib-NAME-area\" name=\"NAME\" placeholder=\"Nom\">\r\n<\/p>\r\n<p>\r\n    <input type=\"submit\" id=\"invisible\" class=\"sib-default-btn\" value=\"S&#039;abonner\">\r\n<\/p>\t\t\t\t<\/div>\n\t\t\t<input type=\"hidden\" name=\"trp-form-language\" value=\"fr\"\/><\/form>\n\t\t\t<style>\n\t\t\t\tform#sib_signup_form_1 p.sib-alert-message {\n    padding: 6px 12px;\n    margin-bottom: 20px;\n    border: 1px solid transparent;\n    border-radius: 4px;\n    -webkit-box-sizing: border-box;\n    -moz-box-sizing: border-box;\n    box-sizing: border-box;\n}\nform#sib_signup_form_1 p.sib-alert-message-error {\n    background-color: #f2dede;\n    border-color: #ebccd1;\n    color: #a94442;\n}\nform#sib_signup_form_1 p.sib-alert-message-success {\n    background-color: #dff0d8;\n    border-color: #d6e9c6;\n    color: #3c763d;\n}\nform#sib_signup_form_1 p.sib-alert-message-warning {\n    background-color: #fcf8e3;\n    border-color: #faebcc;\n    color: #8a6d3b;\n}\n\t\t\t<\/style>\n\t\t\t<\/div>\n\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/section>\n\t\t\t\t<\/div>\n\t\t  <div class=\"related-post slider\">\r\n        <div class=\"headline\">Articles Similaires<\/div>\r\n    <div class=\"post-list owl-carousel\">\r\n\r\n            <div class=\"item\">\r\n            <div class=\"thumb post_thumb\">\r\n    <a  title=\"Gemme de Kaminari\" href=\"https:\/\/www.railscarma.com\/fr\/blog\/articles-techniques\/joyau-kaminari\/?related_post_from=37277\">\r\n\r\n      <img decoding=\"async\" width=\"800\" height=\"300\" src=\"https:\/\/www.railscarma.com\/wp-content\/uploads\/2023\/04\/kaminari-gem.jpg\" class=\"attachment-full size-full wp-post-image\" alt=\"joyau kaminari\" srcset=\"https:\/\/www.railscarma.com\/wp-content\/uploads\/2023\/04\/kaminari-gem.jpg 800w, https:\/\/www.railscarma.com\/wp-content\/uploads\/2023\/04\/kaminari-gem-300x113.jpg 300w, https:\/\/www.railscarma.com\/wp-content\/uploads\/2023\/04\/kaminari-gem-768x288.jpg 768w\" sizes=\"(max-width: 800px) 100vw, 800px\" \/>\r\n\r\n    <\/a>\r\n  <\/div>\r\n\r\n  <a class=\"title post_title\"  title=\"Gemme de Kaminari\" href=\"https:\/\/www.railscarma.com\/fr\/blog\/articles-techniques\/joyau-kaminari\/?related_post_from=37277\">\r\n        Gemme de Kaminari  <\/a>\r\n\r\n        <\/div>\r\n              <div class=\"item\">\r\n            <div class=\"thumb post_thumb\">\r\n    <a  title=\"Pourquoi engager des d\u00e9veloppeurs Ruby on Rails en 2026 ?\" href=\"https:\/\/www.railscarma.com\/fr\/blog\/ror\/pourquoi-embaucher-des-developpeurs-ruby-on-rails\/?related_post_from=30627\">\r\n\r\n      <img decoding=\"async\" width=\"800\" height=\"300\" src=\"https:\/\/www.railscarma.com\/wp-content\/uploads\/2019\/01\/why-to-hire-ruby-on-rails-developers-in-2022.jpg\" class=\"attachment-full size-full wp-post-image\" alt=\"pourquoi embaucher des d\u00e9veloppeurs Ruby on Rails en 2022\" srcset=\"https:\/\/www.railscarma.com\/wp-content\/uploads\/2019\/01\/why-to-hire-ruby-on-rails-developers-in-2022.jpg 800w, https:\/\/www.railscarma.com\/wp-content\/uploads\/2019\/01\/why-to-hire-ruby-on-rails-developers-in-2022-300x113.jpg 300w, https:\/\/www.railscarma.com\/wp-content\/uploads\/2019\/01\/why-to-hire-ruby-on-rails-developers-in-2022-768x288.jpg 768w\" sizes=\"(max-width: 800px) 100vw, 800px\" \/>\r\n\r\n    <\/a>\r\n  <\/div>\r\n\r\n  <a class=\"title post_title\"  title=\"Pourquoi engager des d\u00e9veloppeurs Ruby on Rails en 2026 ?\" href=\"https:\/\/www.railscarma.com\/fr\/blog\/ror\/pourquoi-embaucher-des-developpeurs-ruby-on-rails\/?related_post_from=30627\">\r\n        Pourquoi engager des d\u00e9veloppeurs Ruby on Rails en 2026 ?  <\/a>\r\n\r\n        <\/div>\r\n              <div class=\"item\">\r\n            <div class=\"thumb post_thumb\">\r\n    <a  title=\"Importance de l&#039;architecture logicielle dans le d\u00e9veloppement de logiciels d&#039;entreprise\" href=\"https:\/\/www.railscarma.com\/fr\/blog\/ror\/importance-de-larchitecture-logicielle-dans-le-developpement-de-logiciels-dentreprise\/?related_post_from=36250\">\r\n\r\n      <img decoding=\"async\" width=\"800\" height=\"300\" src=\"https:\/\/www.railscarma.com\/wp-content\/uploads\/2022\/06\/Importance-of-Software-Architecture-in-enterprise-software-development.jpg\" class=\"attachment-full size-full wp-post-image\" alt=\"Importance de l&#039;architecture logicielle dans le d\u00e9veloppement de logiciels d&#039;entreprise\" srcset=\"https:\/\/www.railscarma.com\/wp-content\/uploads\/2022\/06\/Importance-of-Software-Architecture-in-enterprise-software-development.jpg 800w, https:\/\/www.railscarma.com\/wp-content\/uploads\/2022\/06\/Importance-of-Software-Architecture-in-enterprise-software-development-300x113.jpg 300w, https:\/\/www.railscarma.com\/wp-content\/uploads\/2022\/06\/Importance-of-Software-Architecture-in-enterprise-software-development-768x288.jpg 768w\" sizes=\"(max-width: 800px) 100vw, 800px\" \/>\r\n\r\n    <\/a>\r\n  <\/div>\r\n\r\n  <a class=\"title post_title\"  title=\"Importance de l&#039;architecture logicielle dans le d\u00e9veloppement de logiciels d&#039;entreprise\" href=\"https:\/\/www.railscarma.com\/fr\/blog\/ror\/importance-de-larchitecture-logicielle-dans-le-developpement-de-logiciels-dentreprise\/?related_post_from=36250\">\r\n        Importance de l&#039;architecture logicielle dans le d\u00e9veloppement de logiciels d&#039;entreprise  <\/a>\r\n\r\n        <\/div>\r\n              <div class=\"item\">\r\n            <div class=\"thumb post_thumb\">\r\n    <a  title=\"Ruby IDE\u00a0: les meilleurs IDE pour le d\u00e9veloppement Ruby on Rails\" href=\"https:\/\/www.railscarma.com\/fr\/blog\/ror\/ruby-ide-les-meilleures-idees-pour-le-developpement-de-ruby-on-rails\/?related_post_from=36125\">\r\n\r\n      <img decoding=\"async\" width=\"800\" height=\"300\" src=\"https:\/\/www.railscarma.com\/wp-content\/uploads\/2022\/01\/BEST-IDES-FOR-RUBY-ON-RAILS-DEVELOPMENT.jpg\" class=\"attachment-full size-full wp-post-image\" alt=\"MEILLEURES ID\u00c9ES POUR LE D\u00c9VELOPPEMENT DE RUBY ON RAILS\" srcset=\"https:\/\/www.railscarma.com\/wp-content\/uploads\/2022\/01\/BEST-IDES-FOR-RUBY-ON-RAILS-DEVELOPMENT.jpg 800w, https:\/\/www.railscarma.com\/wp-content\/uploads\/2022\/01\/BEST-IDES-FOR-RUBY-ON-RAILS-DEVELOPMENT-300x113.jpg 300w, https:\/\/www.railscarma.com\/wp-content\/uploads\/2022\/01\/BEST-IDES-FOR-RUBY-ON-RAILS-DEVELOPMENT-768x288.jpg 768w\" sizes=\"(max-width: 800px) 100vw, 800px\" \/>\r\n\r\n    <\/a>\r\n  <\/div>\r\n\r\n  <a class=\"title post_title\"  title=\"Ruby IDE\u00a0: les meilleurs IDE pour le d\u00e9veloppement Ruby on Rails\" href=\"https:\/\/www.railscarma.com\/fr\/blog\/ror\/ruby-ide-les-meilleures-idees-pour-le-developpement-de-ruby-on-rails\/?related_post_from=36125\">\r\n        Ruby IDE\u00a0: les meilleurs IDE pour le d\u00e9veloppement Ruby on Rails  <\/a>\r\n\r\n        <\/div>\r\n      \r\n  <\/div>\r\n\r\n  <script>\r\n      <\/script>\r\n  <style>\r\n    .related-post {}\r\n\r\n    .related-post .post-list {\r\n      text-align: left;\r\n          }\r\n\r\n    .related-post .post-list .item {\r\n      margin: 10px;\r\n      padding: 10px;\r\n          }\r\n\r\n    .related-post .headline {\r\n      font-size: 14px !important;\r\n      color: #999999 !important;\r\n          }\r\n\r\n    .related-post .post-list .item .post_thumb {\r\n      max-height: 220px;\r\n      margin: 10px 0px;\r\n      padding: 0px;\r\n      display: block;\r\n          }\r\n\r\n    .related-post .post-list .item .post_title {\r\n      font-size: 14px;\r\n      color: #000000;\r\n      margin: 10px 0px;\r\n      padding: 0px;\r\n      display: block;\r\n      text-decoration: none;\r\n          }\r\n\r\n    .related-post .post-list .item .post_excerpt {\r\n      font-size: 12px;\r\n      color: #3f3f3f;\r\n      margin: 10px 0px;\r\n      padding: 0px;\r\n      display: block;\r\n      text-decoration: none;\r\n          }\r\n\r\n    .related-post .owl-dots .owl-dot {\r\n          }\r\n\r\n      <\/style>\r\n      <script>\r\n      jQuery(document).ready(function($) {\r\n        $(\".related-post .post-list\").owlCarousel({\r\n          items: 2,\r\n          responsiveClass: true,\r\n          responsive: {\r\n            0: {\r\n              items: 1,\r\n            },\r\n            768: {\r\n              items: 2,\r\n            },\r\n            1200: {\r\n              items: 2,\r\n            }\r\n          },\r\n                      rewind: true,\r\n                                loop: true,\r\n                                center: false,\r\n                                autoplay: true,\r\n            autoplayHoverPause: true,\r\n                                nav: true,\r\n            navSpeed: 1000,\r\n            navText: ['<i class=\"fas fa-chevron-left\"><\/i>', '<i class=\"fas fa-chevron-right\"><\/i>'],\r\n                                dots: false,\r\n            dotsSpeed: 1200,\r\n                                                    rtl: false,\r\n          \r\n        });\r\n      });\r\n    <\/script>\r\n  <\/div>","protected":false},"excerpt":{"rendered":"<p>PayPal Checkout includes payment solutions ranging from simple to robust that let the merchants as well as developers choose an integration option that can be the best-suited for their website and customers.In order to integrate Paypal Payment Gateway, we need to do the following: 1. Have a PayPal business or Premier account.2. Create a PayPal &hellip;<\/p>\n<p class=\"read-more\"> <a class=\"\" href=\"https:\/\/www.railscarma.com\/fr\/blog\/ruby-regex-match-guide-with-examples\/\"> <span class=\"screen-reader-text\">Guide de correspondance des expressions rationnelles en Ruby (2026) avec exemples<\/span> Lire la suite \u00bb<\/a><\/p>","protected":false},"author":1,"featured_media":31850,"comment_status":"open","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[384],"tags":[],"class_list":["post-25398","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-technical-articles"],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v26.8 - https:\/\/yoast.com\/product\/yoast-seo-wordpress\/ -->\n<title>Ways of Handling PayPal Refunds in Rails | Rails Application Development<\/title>\n<meta name=\"description\" content=\"PayPal Checkout includes payment solutions ranging from simple to robust that let the merchants as well as developers choose an integration option that\" \/>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/www.railscarma.com\/fr\/blog\/articles-techniques\/facons-de-gerer-les-remboursements-paypal\/\" \/>\n<meta property=\"og:locale\" content=\"fr_FR\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Ways of Handling PayPal Refunds in Rails | Rails Application Development\" \/>\n<meta property=\"og:description\" content=\"PayPal Checkout includes payment solutions ranging from simple to robust that let the merchants as well as developers choose an integration option that\" \/>\n<meta property=\"og:url\" content=\"https:\/\/www.railscarma.com\/fr\/blog\/articles-techniques\/facons-de-gerer-les-remboursements-paypal\/\" \/>\n<meta property=\"og:site_name\" content=\"RailsCarma - Ruby on Rails Development Company specializing in Offshore Development\" \/>\n<meta property=\"article:publisher\" content=\"https:\/\/www.facebook.com\/RailsCarma\/\" \/>\n<meta property=\"article:published_time\" content=\"2016-10-13T11:10:10+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2022-09-06T08:28:15+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/www.railscarma.com\/wp-content\/uploads\/2016\/10\/Paypal_Refunds.jpg\" \/>\n\t<meta property=\"og:image:width\" content=\"800\" \/>\n\t<meta property=\"og:image:height\" content=\"300\" \/>\n\t<meta property=\"og:image:type\" content=\"image\/jpeg\" \/>\n<meta name=\"author\" content=\"admin\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:creator\" content=\"@railscarma\" \/>\n<meta name=\"twitter:site\" content=\"@railscarma\" \/>\n<meta name=\"twitter:label1\" content=\"\u00c9crit par\" \/>\n\t<meta name=\"twitter:data1\" content=\"admin\" \/>\n\t<meta name=\"twitter:label2\" content=\"Dur\u00e9e de lecture estim\u00e9e\" \/>\n\t<meta name=\"twitter:data2\" content=\"5 minutes\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\/\/www.railscarma.com\/blog\/technical-articles\/ways-handling-paypal-refunds-rails\/#article\",\"isPartOf\":{\"@id\":\"https:\/\/www.railscarma.com\/blog\/technical-articles\/ways-handling-paypal-refunds-rails\/\"},\"author\":{\"name\":\"admin\",\"@id\":\"https:\/\/www.railscarma.com\/#\/schema\/person\/5f2228a2dec7549056e709de6eb85d21\"},\"headline\":\"Ways of Handling PayPal Refunds in Rails\",\"datePublished\":\"2016-10-13T11:10:10+00:00\",\"dateModified\":\"2022-09-06T08:28:15+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\/\/www.railscarma.com\/blog\/technical-articles\/ways-handling-paypal-refunds-rails\/\"},\"wordCount\":806,\"commentCount\":0,\"publisher\":{\"@id\":\"https:\/\/www.railscarma.com\/#organization\"},\"image\":{\"@id\":\"https:\/\/www.railscarma.com\/blog\/technical-articles\/ways-handling-paypal-refunds-rails\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/www.railscarma.com\/wp-content\/uploads\/2016\/10\/Paypal_Refunds.jpg\",\"articleSection\":[\"Technical Articles\"],\"inLanguage\":\"fr-FR\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\/\/www.railscarma.com\/blog\/technical-articles\/ways-handling-paypal-refunds-rails\/#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/www.railscarma.com\/blog\/technical-articles\/ways-handling-paypal-refunds-rails\/\",\"url\":\"https:\/\/www.railscarma.com\/blog\/technical-articles\/ways-handling-paypal-refunds-rails\/\",\"name\":\"Ways of Handling PayPal Refunds in Rails | Rails Application Development\",\"isPartOf\":{\"@id\":\"https:\/\/www.railscarma.com\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\/\/www.railscarma.com\/blog\/technical-articles\/ways-handling-paypal-refunds-rails\/#primaryimage\"},\"image\":{\"@id\":\"https:\/\/www.railscarma.com\/blog\/technical-articles\/ways-handling-paypal-refunds-rails\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/www.railscarma.com\/wp-content\/uploads\/2016\/10\/Paypal_Refunds.jpg\",\"datePublished\":\"2016-10-13T11:10:10+00:00\",\"dateModified\":\"2022-09-06T08:28:15+00:00\",\"description\":\"PayPal Checkout includes payment solutions ranging from simple to robust that let the merchants as well as developers choose an integration option that\",\"breadcrumb\":{\"@id\":\"https:\/\/www.railscarma.com\/blog\/technical-articles\/ways-handling-paypal-refunds-rails\/#breadcrumb\"},\"inLanguage\":\"fr-FR\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/www.railscarma.com\/blog\/technical-articles\/ways-handling-paypal-refunds-rails\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"fr-FR\",\"@id\":\"https:\/\/www.railscarma.com\/blog\/technical-articles\/ways-handling-paypal-refunds-rails\/#primaryimage\",\"url\":\"https:\/\/www.railscarma.com\/wp-content\/uploads\/2016\/10\/Paypal_Refunds.jpg\",\"contentUrl\":\"https:\/\/www.railscarma.com\/wp-content\/uploads\/2016\/10\/Paypal_Refunds.jpg\",\"width\":800,\"height\":300},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/www.railscarma.com\/blog\/technical-articles\/ways-handling-paypal-refunds-rails\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\/\/www.railscarma.com\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Ways of Handling PayPal Refunds in Rails\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\/\/www.railscarma.com\/#website\",\"url\":\"https:\/\/www.railscarma.com\/\",\"name\":\"RailsCarma - Ruby on Rails Development Company specializing in Offshore Development\",\"description\":\"RailsCarma is a Ruby on Rails Development Company in Bangalore. We specialize in Offshore Ruby on Rails Development based out in USA and India. Hire experienced Ruby on Rails developers for the ultimate Web Experience.\",\"publisher\":{\"@id\":\"https:\/\/www.railscarma.com\/#organization\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\/\/www.railscarma.com\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"fr-FR\"},{\"@type\":\"Organization\",\"@id\":\"https:\/\/www.railscarma.com\/#organization\",\"name\":\"RailsCarma\",\"url\":\"https:\/\/www.railscarma.com\/\",\"logo\":{\"@type\":\"ImageObject\",\"inLanguage\":\"fr-FR\",\"@id\":\"https:\/\/www.railscarma.com\/#\/schema\/logo\/image\/\",\"url\":\"https:\/\/www.railscarma.com\/wp-content\/uploads\/2020\/08\/railscarma_logo.png\",\"contentUrl\":\"https:\/\/www.railscarma.com\/wp-content\/uploads\/2020\/08\/railscarma_logo.png\",\"width\":200,\"height\":46,\"caption\":\"RailsCarma\"},\"image\":{\"@id\":\"https:\/\/www.railscarma.com\/#\/schema\/logo\/image\/\"},\"sameAs\":[\"https:\/\/www.facebook.com\/RailsCarma\/\",\"https:\/\/x.com\/railscarma\",\"https:\/\/www.linkedin.com\/company\/railscarma\/\",\"https:\/\/myspace.com\/railscarma\",\"https:\/\/in.pinterest.com\/railscarma\/\",\"https:\/\/www.youtube.com\/channel\/UCx3Wil-aAnDARuatTEyMdpg\"]},{\"@type\":\"Person\",\"@id\":\"https:\/\/www.railscarma.com\/#\/schema\/person\/5f2228a2dec7549056e709de6eb85d21\",\"name\":\"admin\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"fr-FR\",\"@id\":\"https:\/\/www.railscarma.com\/#\/schema\/person\/image\/\",\"url\":\"https:\/\/secure.gravatar.com\/avatar\/308867ca6c81f3aba146080c601000087180326f752c4116849ea9f514c6a4fa?s=96&d=mm&r=g\",\"contentUrl\":\"https:\/\/secure.gravatar.com\/avatar\/308867ca6c81f3aba146080c601000087180326f752c4116849ea9f514c6a4fa?s=96&d=mm&r=g\",\"caption\":\"admin\"},\"sameAs\":[\"https:\/\/www.railscarma.com\/hire-ruby-on-rails-developer\/\"]}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"Fa\u00e7ons de g\u00e9rer les remboursements PayPal dans Rails | D\u00e9veloppement d&#039;applications Rails","description":"PayPal Checkout comprend des solutions de paiement allant du simple au robuste qui permettent aux commer\u00e7ants ainsi qu&#039;aux d\u00e9veloppeurs de choisir une option d&#039;int\u00e9gration qui","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/www.railscarma.com\/fr\/blog\/articles-techniques\/facons-de-gerer-les-remboursements-paypal\/","og_locale":"fr_FR","og_type":"article","og_title":"Ways of Handling PayPal Refunds in Rails | Rails Application Development","og_description":"PayPal Checkout includes payment solutions ranging from simple to robust that let the merchants as well as developers choose an integration option that","og_url":"https:\/\/www.railscarma.com\/fr\/blog\/articles-techniques\/facons-de-gerer-les-remboursements-paypal\/","og_site_name":"RailsCarma - Ruby on Rails Development Company specializing in Offshore Development","article_publisher":"https:\/\/www.facebook.com\/RailsCarma\/","article_published_time":"2016-10-13T11:10:10+00:00","article_modified_time":"2022-09-06T08:28:15+00:00","og_image":[{"width":800,"height":300,"url":"https:\/\/www.railscarma.com\/wp-content\/uploads\/2016\/10\/Paypal_Refunds.jpg","type":"image\/jpeg"}],"author":"admin","twitter_card":"summary_large_image","twitter_creator":"@railscarma","twitter_site":"@railscarma","twitter_misc":{"\u00c9crit par":"admin","Dur\u00e9e de lecture estim\u00e9e":"5 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/www.railscarma.com\/blog\/technical-articles\/ways-handling-paypal-refunds-rails\/#article","isPartOf":{"@id":"https:\/\/www.railscarma.com\/blog\/technical-articles\/ways-handling-paypal-refunds-rails\/"},"author":{"name":"admin","@id":"https:\/\/www.railscarma.com\/#\/schema\/person\/5f2228a2dec7549056e709de6eb85d21"},"headline":"Ways of Handling PayPal Refunds in Rails","datePublished":"2016-10-13T11:10:10+00:00","dateModified":"2022-09-06T08:28:15+00:00","mainEntityOfPage":{"@id":"https:\/\/www.railscarma.com\/blog\/technical-articles\/ways-handling-paypal-refunds-rails\/"},"wordCount":806,"commentCount":0,"publisher":{"@id":"https:\/\/www.railscarma.com\/#organization"},"image":{"@id":"https:\/\/www.railscarma.com\/blog\/technical-articles\/ways-handling-paypal-refunds-rails\/#primaryimage"},"thumbnailUrl":"https:\/\/www.railscarma.com\/wp-content\/uploads\/2016\/10\/Paypal_Refunds.jpg","articleSection":["Technical Articles"],"inLanguage":"fr-FR","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/www.railscarma.com\/blog\/technical-articles\/ways-handling-paypal-refunds-rails\/#respond"]}]},{"@type":"WebPage","@id":"https:\/\/www.railscarma.com\/blog\/technical-articles\/ways-handling-paypal-refunds-rails\/","url":"https:\/\/www.railscarma.com\/blog\/technical-articles\/ways-handling-paypal-refunds-rails\/","name":"Fa\u00e7ons de g\u00e9rer les remboursements PayPal dans Rails | D\u00e9veloppement d&#039;applications Rails","isPartOf":{"@id":"https:\/\/www.railscarma.com\/#website"},"primaryImageOfPage":{"@id":"https:\/\/www.railscarma.com\/blog\/technical-articles\/ways-handling-paypal-refunds-rails\/#primaryimage"},"image":{"@id":"https:\/\/www.railscarma.com\/blog\/technical-articles\/ways-handling-paypal-refunds-rails\/#primaryimage"},"thumbnailUrl":"https:\/\/www.railscarma.com\/wp-content\/uploads\/2016\/10\/Paypal_Refunds.jpg","datePublished":"2016-10-13T11:10:10+00:00","dateModified":"2022-09-06T08:28:15+00:00","description":"PayPal Checkout comprend des solutions de paiement allant du simple au robuste qui permettent aux commer\u00e7ants ainsi qu&#039;aux d\u00e9veloppeurs de choisir une option d&#039;int\u00e9gration qui","breadcrumb":{"@id":"https:\/\/www.railscarma.com\/blog\/technical-articles\/ways-handling-paypal-refunds-rails\/#breadcrumb"},"inLanguage":"fr-FR","potentialAction":[{"@type":"ReadAction","target":["https:\/\/www.railscarma.com\/blog\/technical-articles\/ways-handling-paypal-refunds-rails\/"]}]},{"@type":"ImageObject","inLanguage":"fr-FR","@id":"https:\/\/www.railscarma.com\/blog\/technical-articles\/ways-handling-paypal-refunds-rails\/#primaryimage","url":"https:\/\/www.railscarma.com\/wp-content\/uploads\/2016\/10\/Paypal_Refunds.jpg","contentUrl":"https:\/\/www.railscarma.com\/wp-content\/uploads\/2016\/10\/Paypal_Refunds.jpg","width":800,"height":300},{"@type":"BreadcrumbList","@id":"https:\/\/www.railscarma.com\/blog\/technical-articles\/ways-handling-paypal-refunds-rails\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/www.railscarma.com\/"},{"@type":"ListItem","position":2,"name":"Ways of Handling PayPal Refunds in Rails"}]},{"@type":"WebSite","@id":"https:\/\/www.railscarma.com\/#website","url":"https:\/\/www.railscarma.com\/","name":"RailsCarma - Soci\u00e9t\u00e9 de d\u00e9veloppement Ruby on Rails sp\u00e9cialis\u00e9e dans le d\u00e9veloppement offshore","description":"RailsCarma est une soci\u00e9t\u00e9 de d\u00e9veloppement Ruby on Rails \u00e0 Bangalore. Nous sommes sp\u00e9cialis\u00e9s dans le d\u00e9veloppement offshore Ruby on Rails, bas\u00e9s aux \u00c9tats-Unis et en Inde. Embauchez des d\u00e9veloppeurs Ruby on Rails exp\u00e9riment\u00e9s pour une exp\u00e9rience Web ultime.","publisher":{"@id":"https:\/\/www.railscarma.com\/#organization"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/www.railscarma.com\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"fr-FR"},{"@type":"Organization","@id":"https:\/\/www.railscarma.com\/#organization","name":"RailsCarma","url":"https:\/\/www.railscarma.com\/","logo":{"@type":"ImageObject","inLanguage":"fr-FR","@id":"https:\/\/www.railscarma.com\/#\/schema\/logo\/image\/","url":"https:\/\/www.railscarma.com\/wp-content\/uploads\/2020\/08\/railscarma_logo.png","contentUrl":"https:\/\/www.railscarma.com\/wp-content\/uploads\/2020\/08\/railscarma_logo.png","width":200,"height":46,"caption":"RailsCarma"},"image":{"@id":"https:\/\/www.railscarma.com\/#\/schema\/logo\/image\/"},"sameAs":["https:\/\/www.facebook.com\/RailsCarma\/","https:\/\/x.com\/railscarma","https:\/\/www.linkedin.com\/company\/railscarma\/","https:\/\/myspace.com\/railscarma","https:\/\/in.pinterest.com\/railscarma\/","https:\/\/www.youtube.com\/channel\/UCx3Wil-aAnDARuatTEyMdpg"]},{"@type":"Person","@id":"https:\/\/www.railscarma.com\/#\/schema\/person\/5f2228a2dec7549056e709de6eb85d21","name":"administrateur","image":{"@type":"ImageObject","inLanguage":"fr-FR","@id":"https:\/\/www.railscarma.com\/#\/schema\/person\/image\/","url":"https:\/\/secure.gravatar.com\/avatar\/308867ca6c81f3aba146080c601000087180326f752c4116849ea9f514c6a4fa?s=96&d=mm&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/308867ca6c81f3aba146080c601000087180326f752c4116849ea9f514c6a4fa?s=96&d=mm&r=g","caption":"admin"},"sameAs":["https:\/\/www.railscarma.com\/hire-ruby-on-rails-developer\/"]}]}},"amp_enabled":true,"_links":{"self":[{"href":"https:\/\/www.railscarma.com\/fr\/wp-json\/wp\/v2\/posts\/25398","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.railscarma.com\/fr\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.railscarma.com\/fr\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.railscarma.com\/fr\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/www.railscarma.com\/fr\/wp-json\/wp\/v2\/comments?post=25398"}],"version-history":[{"count":0,"href":"https:\/\/www.railscarma.com\/fr\/wp-json\/wp\/v2\/posts\/25398\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.railscarma.com\/fr\/wp-json\/wp\/v2\/media\/31850"}],"wp:attachment":[{"href":"https:\/\/www.railscarma.com\/fr\/wp-json\/wp\/v2\/media?parent=25398"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.railscarma.com\/fr\/wp-json\/wp\/v2\/categories?post=25398"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.railscarma.com\/fr\/wp-json\/wp\/v2\/tags?post=25398"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}