Перевести javascript-запрос POST в Axios (используя Stripe) - PullRequest
0 голосов
/ 28 сентября 2018

Я работаю со Stripe (разрабатываю платежную систему) на React.js и пытаюсь перевести приведенный ниже код в React.js и использую axios для создания конечной точки, которая получает запрос POST от серверной части (Django):

var handler = StripeCheckout.configure({
  key: 'pk_test_zNq2YI8Spsyi81TknNujN36T',
  image: 'https://stripe.com/img/documentation/checkout/marketplace.png',
  locale: 'auto',
  token: function(token) {
    $.ajax({
      type: "POST",
      url: 'http://localhost:8000/subscriptions/codes/pay/',
      data: {amount: amount, token: token},
    });
  }
});

Я застрял на шаге 4 по этой ссылке: Stripe for React , который объясняет запрос POST, но они используют Express, а я используюДжанго.

1 Ответ

0 голосов
/ 01 октября 2018

Код на стороне сервера может быть написан на любом языке / фреймворке, если он обеспечивает конечную точку subscriptions/codes/pay/ для вашего внешнего сообщения.

В Django вы можете обратиться к документу [0] о том, как начать создавать REST API

Очень простой код

, определить ваш маршрут

from django.urls import path
from . import views

urlpatterns = [
    path('', views.index, name='index'),
    path('subscriptions/checkout', views.ElementView.as_view(), name="Stripe Checkout"),
    path('subscriptions/codes/pay', views.charge, name='charge'),
]

И в вашем представлении определения

from django.http import HttpResponse
from django.views.decorators.http import require_http_methods
from django.views.decorators.csrf import csrf_exempt

@require_http_methods(["POST"])
@csrf_exempt
def charge(request):
    # request.body will contain your data {amount: amount, token: token}
    return HttpResponse(request.body)

Опять же, реализация бэкэнда должна быть независимой от языка / структуры;он будет работать до тех пор, пока ваш бэкэнд предоставит действительный POST API, позволяющий вам отправить StripeToken обратно

[0] https://docs.djangoproject.com/en/2.1/intro/tutorial01/

...