[RUBY] Faisons un site de shopping en utilisant Stripe! (Achat)

Petite publicité

https://www.code-sell.net/ Nous avons créé un service qui vous permet de vendre des codes! Si vous avez du code dont vous n'avez pas besoin, veuillez l'utiliser. En passant, j'utilise la bande décrite dans cet article.

en premier

salut! Est-il facile d'utiliser des rails et des rayures cette fois? Je vais créer un site EC. Il y a quelque temps, j'ai également créé un site de vente de code avec des rails et des rayures, mais j'ai eu beaucoup de problèmes car il y avait trop peu d'informations sur les rayures. Pour être précis, il y a beaucoup d'informations en soi, mais il y a peu d'informations pratiques, et c'était comme organiser le code et l'expliquer un peu comme le document officiel. Cette fois, nous allons créer le site.

Technologie à utiliser / quoi faire

Choses que vous pouvez acheter des articles comme note

rails ruby stripe

Qu'est-ce que Stripe en premier lieu?

C'est un système de paiement. Par rapport à payjp, les frais sont moins chers et il existe une fonction de transfert d'argent.

Vue d'ensemble

https___stripe.com_img_docs_connect_overview.png

Client: un acheteur et un payeur. Vert dans la figure ci-dessus. Plateforme: Un site EC à créer à partir de maintenant. Où fournir le service. Comptes connectés: Ceux qui fournissent des services en utilisant la plateforme et reçoivent des dépôts / vendeurs (également appelés comptes enfants). Rose dans la figure ci-dessus.

Type de compte

Il existe des types de compte enfant (vendeur) standard et personnalisé dans Stripe. Les fonctionnalités et la méthode d'enregistrement sont différentes, alors jetons un coup d'œil.

Standard Coût de développement (main-d'œuvre): facile Point de vue de l'utilisateur: subtil Responsabilité en cas de problème: vendeur (compte enfant) Recommandation: moyenne

C'est un type très facile à mettre en œuvre. Comme je l'écrirai plus tard, la plupart du formulaire d'inscription et du système sont gérés par le côté bande. Nous collons simplement le lien sur le formulaire d'inscription et le copions et le collons dans le contrôleur. Quand quelque chose arrive (solde négatif, etc.), c'est la responsabilité de l'utilisateur, pas de nous. Cependant, cette méthode indique clairement à l'utilisateur qu'il utilise stripe. Le formulaire d'inscription est entièrement créé par stripe et le vendeur pourra accéder à l'écran de gestion (tableau de bord) de Stripe. Le design ne peut pas non plus être modifié.

Custom Coût de développement (main-d'œuvre): difficile Point de vue de l'utilisateur: bon Responsabilité en cas de problème: Plateforme (développeur) Recommandation: élevée

C'est un type difficile à mettre en œuvre. Créez votre propre formulaire d'inscription, système à envoyer à stripe et tableau de bord. C'est ma responsabilité quand quelque chose arrive. Cependant, tout, de l'inscription à l'écran de gestion, est effectué sur votre propre site. Bien sûr, le design est également gratuit.

Préparation

Comme je l'ai expliqué, faisons et rappelons les détails pour le moment. Cette fois, nous créerons un site d'achat unique. Vous pouvez également effectuer des paiements réguliers, mais cela a été fait dans un autre article ...

Inscrivez-vous et obtenez une clé API Nouvelle inscription Écran pour obtenir la clé API

Installer la gemme

gemfile


gem "stripe"
gem 'dotenv-rails'

N'oubliez pas le bundle. Créez ensuite un fichier appelé .env directement dans le dossier de l'application

PUBLISHABLE_KEY="pk_test_xxx"
SECRET_KEY="sk_test_xxx"
CLIENT_ID="ca_xxx"

Décrivez s'il vous plait. CLIENT_ID est Get from here

config/initializers/stripe.rb


Rails.configuration.stripe = {
  publishable_key: ENV["PUBLISHABLE_KEY"],
  secret_key: ENV["SECRET_KEY"],
}
Stripe.api_key = Rails.configuration.stripe[:secret_key]

Créer une application

Puisqu'il est difficile à faire depuis le début, je vais en faire un échafaudage. Comme je l'ai écrit au début, cette fois, je vais créer un service qui vous permet d'acheter des articles comme note. En fait, il est préférable d'avoir une fonction de téléchargement d'image, mais cette fois, l'accent est mis sur les rayures, donc la fonction de l'application sera minimisée.

rails g scaffold post title:string content:text price:integer

contenu ... contenu, produit prix ... prix

rails db:migrate

Je pense que vous avez échafaudé.

Fonction d'achat

La fonction d'achat est étonnamment simple. Faisons-le d'abord pour le moment.

routes.rb


post "posts/:id/charge", to: "charge#create", as: "charge"

views

↓ version erb

erb:show.html.erb


<%= form_tag charge_path(@post) do %>
  <script src="https://checkout.stripe.com/checkout.js" class="stripe-button"
    data-key="#{ENV["PUBLISHABLE_KEY"]}"
    data-amount="<%= @post.price %>"
    data-currency="jpy"
    data-description="Règlement de crédit"
    data-name=<%= "#{@post.title}Acheter" %>
    data-email=<%= "#{current_user.email}" %>
    data-label="Acheter"
    data-image="https://stripe.com/img/documentation/checkout/marketplace.png "
    data-locale="auto"
    data-allow-remember-me="false">
  </script>
<% end %>

↓ version mince

slim:show.html.slim


= form_tag charge_path(@post) do
  script.stripe-button data-amount="#{@post.price}\
  " data-currency="jpy" data-description="Règlement de crédit\
  " data-key="#{ENV["PUBLISHABLE_KEY"]}" data-locale="auto" data-name="#{@post.title}Acheter\
  " data-email="#{current_user.email}" data-label="Acheter\
  " data-allow-remember-me="false" src="https://checkout.stripe.com/checkout.js"

Si vous écrivez des vues charges_controller.rb Veuillez appeler un contrôleur.

charges_controller.rb


class ChargesController < ApplicationController
  def create
    @post = Post.find(params[:id])
    customer = Stripe::Customer.create({
      email: params[:stripeEmail],
      source: params[:stripeToken],
    })
    charge = Stripe::Charge.create({
      customer: customer.id,
      amount: @post.price,
      description: "ID produit:#{@post.id}Nom du produit:#{@post.title}",
      currency: "jpy",
    })
  rescue Stripe::CardError => e
    flash[:error] = e.message
    redirect_to new_charge_path
  end
end

Pour expliquer brièvement, le client est créé sur la 4ème ligne. charge crée des informations de paiement. le client reste tel quel montant fixe le prix du produit Définir les informations produit dans la description (quel que soit le contenu) Définissez la devise à traiter par devise (USD, JPY, etc.)

Je pense que vous pouvez l'acheter maintenant. Le numéro de la carte lors du test 4242 4242 4242 4242 est. cvc peut être n'importe quoi. La date d'expiration de la carte peut être à tout moment dans le futur. Il y en a plusieurs autres. Liste des cartes de test

À la fin

C'est tout pour cette fois. La prochaine fois, je présenterai la conception, créerai ma page et expliquerai comment créer un compte standard ou un compte personnalisé. C'est difficile, donc c'est peut-être une destination.

Cliquez ici pour en savoir plus! ↓ ↓ https://qiita.com/UTOG/items/4d87595890cbfbed2e9f

Recommended Posts

Faisons un site de shopping en utilisant Stripe! (Achat)
Faire un diamant en utilisant Java
Faisons une carte de Noël avec Processing!
[Java] Créons une bibliothèque d'accès à la base de données!
Créons une API REST à l'aide de WildFly Swarm.
Créez un site EC en utilisant des rayures! (Création de compte)
Faisons une fonction de recherche avec Rails (ransack)
Faisons un disjoncteur pour le service backend à l'aide de l'actionneur de Spring Boot (partie 1)
Faisons un Bot LINE avec Ruby + Sinatra - Partie 2
Faisons un robot! "Une simple démo de Java AWT Robot"
Faisons un Bot LINE avec Ruby + Sinatra - Partie 1
[Introduction au développement d'applications Android] Faisons un compteur