Переменная ключа переопределяется в Stripe Go SDK - PullRequest
0 голосов
/ 24 апреля 2020

Я использую Stripe Go SDK для обработки платежей на моем сайте.

https://github.com/stripe/stripe-go

Обзор

Мой продукт работает на коммерческой основе. Есть несколько продавцов, и каждый продавец имеет свою собственную базу данных. Поэтому у каждого продавца есть разные ключи полосы для оплаты.

У меня странная проблема.

Когда мы установили секретный ключ в нашем коде для вызова полосы apis, он был установлен в stripe.Key переменная SDK. Теперь, если эта переменная установлена ​​для одного продавца и может иметь несколько запросов на чередование для одного события, например, получить данные, обновите их.

stripe.Key = SECRET KEY

Теперь, если другой продавец одновременно инициирует другой запрос чередования, тогда в переменной stripe.Key обновляется секретный ключ второго продавца.

Из-за этого я получил следующую ошибку:

{
  "chargeid": "",
  "code": "resource_missing",
  "declinecode": "",
  "docurl": "https://stripe.com/docs/error-codes/resource-missing",
  "err": {},
  "httpstatuscode": 404,
  "msg": "No such payment_intent: pi_XXXXXXXXXXXXXXXXXXXXX",
  "oautherror": "",
  "oautherrordescription": "",
  "param": "intent",
  "paymentintent": null,
  "paymentmethod": null,
  "requestid": "REQ_ID",
  "setupintent": null,
  "source": null,
  "type": "invalid_request_error"
}

Как я могу предотвратить это в случае одновременного запроса. Есть ли какой-нибудь способ в SDK?

1 Ответ

0 голосов
/ 24 апреля 2020

Вы должны использовать client.API, чтобы установить ключ API для запроса вместо глобального. Вот пример (см. Ниже). У вас есть более подробное объяснение на GitHub или в Stripe do c.

import (
    "github.com/stripe/stripe-go/v71"
    "github.com/stripe/stripe-go/v71/client"
)

sc := &client.API{}
sc.Init("sk_key", nil)
...