Как я могу отправить переменные в PayPal API и вернуть их обратно с Python SDK? - PullRequest
0 голосов
/ 20 января 2019

Я делаю приложение рыночного типа для продавцов и покупателей и пытаюсь интегрировать API PayPal как средство оплаты между пользователями.

Мне нужно иметь возможность отправить имя пользователя продавца (на моем веб-сайте) в качестве параметра в API PayPal и вернуть его после успешной оплаты, чтобы я мог уведомить продавца о том, что ему заплатили. Как это можно сделать?

from paypalrestsdk import Payment
from django.http import HttpResponseRedirect
def payment_page(request):

    if request.method == 'POST':
        approval_url = 'http://127.0.0.1:8000/'
        paypalrestsdk.configure({
          "mode": "sandbox", # sandbox or live
          "client_id": "client_id",
          "client_secret": "client_secret"})

        payment = paypalrestsdk.Payment({
            "intent": "sale",
            "payer": {
                "payment_method": "paypal"},
            "redirect_urls": {
                "return_url": "http://localhost:8000/success",
                "cancel_url": "http://localhost:8000/fail"},
            "transactions": [{
                "item_list": {
                    "items": [{
                        "name": "item",
                        "sku": "item",
                        "price": "5.00",
                        "currency": "USD",
                        "quantity": 1}]},
                "amount": {
                    "total": "5.00",
                    "currency": "USD"},
                "description": "This is the payment transaction description."}]})

        if payment.create():
          print("Payment created successfully")

          for link in payment.links:
             if link.rel == "approval_url":
                 # Convert to str to avoid Google App Engine Unicode issue
                 # https://github.com/paypal/rest-api-sdk-python/pull/58
                 approval_url = str(link.href)
                 print("Redirect for approval: %s" % (approval_url))
                 return HttpResponseRedirect(approval_url)               
        else:
          print(payment.error)
    else:
        print('loading page')
    return render(request, 'app/payment.html')


def success(request):
    //Here I also want to capture seller username and buyer username

    payment_id = request.GET.get('paymentId')
    payer_id = request.GET.get('PayerID')
    # Payment ID obtained when creating the payment (following redirect)
    payment = Payment.find(payment_id)

    # Execute payment with the payer ID from the create payment call (following redirect)
    if payment.execute({"payer_id": payer_id}):
        print("Payment[%s] execute successfully" % (payment.id))
    else:
        print(payment.error)

    return render(request, 'app/success.html')

шаблон моего платежа.html

<html>
  <head>

  </head>


  <body>
    <h3>Seller username:foo1 Buyer username:foo2</h3>

    <form action='{% url "app:payment_page" %}' method='post'>
    {% csrf_token %}
    <input type='submit' value='pay'>

    </form>
  </body>




</html>

1 Ответ

0 голосов
/ 22 января 2019

Я предполагаю, что вы используете API PayPal REST. Под объектом транзакции есть поле с именем note_to_payee, которое возвращается в ответе на поиск платежа.

Вы можете использовать это, или придумать какой-нибудь строковый формат на description и искать это.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...