#stripe-payments
#stripe-платежи
Вопрос:
Это проблема, которую я пытаюсь решить с помощью элементов Stripe.
Для купона Stripe я могу выбрать, чтобы он был действителен только для соответствующих продуктов.
Во время оформления заказа я хотел бы знать, когда пользователь выбрал продукт, применяется ли этот код, чтобы я мог предоставить правильную скидку на этот продукт (а не на другие продукты).
Когда я извлекаю промо-код, невозможно увидеть, какие идентификаторы продуктов применяются. Когда я извлекаю продукт, нет никаких подробностей о том, какие промо-коды работают с ним.
Есть ли какой-либо способ предварительно проверить купон на соответствие продукту?
Ответ №1:
Для людей, использующих cURL, это работает (при promo_id
условии, что существует):
curl https://api.stripe.com/v1/promotion_codes/promo_id
-u sk_test_redacted:
-d "expand[]"="coupon.applies_to"
-G
Отредактированный ответ:
{
"id": "promo_id",
"object": "promotion_code",
"active": true,
"code": "MYCODE",
"coupon": {
"id": "couponId",
"object": "coupon",
"amount_off": null,
"applies_to": {
"products": [
"prod_id"
]
},
"created": 1621194680,
"currency": "usd",
"duration": "repeating",
"duration_in_months": 6,
"livemode": false,
"max_redemptions": 1,
"metadata": {
},
"name": null,
"percent_off": 75.0,
"redeem_by": null,
"times_redeemed": 0,
"valid": true
},
"created": 1621194680,
"customer": null,
"expires_at": null,
"livemode": false,
"max_redemptions": null,
"metadata": {
},
"restrictions": {
"first_time_transaction": false,
"minimum_amount": null,
"minimum_amount_currency": null
},
"times_redeemed": 0
}
Если вы хотите напрямую использовать идентификатор купона, вы можете использовать это (при couponId
условии, что он существует):
curl https://api.stripe.com/v1/coupons/couponId
-u sk_test_redacted:
-d "expand[]"="applies_to"
-G
Отредактированный ответ:
{
"id": "couponId",
"object": "coupon",
"amount_off": null,
"applies_to": {
"products": [
"prod_id"
]
},
"created": 1621194680,
"currency": "usd",
"duration": "repeating",
"duration_in_months": 6,
"livemode": false,
"max_redemptions": 1,
"metadata": {
},
"name": null,
"percent_off": 75.0,
"redeem_by": null,
"times_redeemed": 0,
"valid": true
}
Комментарии:
1. Вот ссылка на документацию Stripe о расширении ответов: stripe.com/docs/api/expanding_objects
Ответ №2:
При создании купона вы можете ограничить его определенными продуктами с products
помощью массива: https://stripe.com/docs/api/coupons/create#create_coupon-applies_to-products (скажем, prod_123)
Затем вы создаете промо-код с этого купона. Для любых сеансов проверки, созданных для Prices (которые создаются из того же продукта prod_123), промо-код будет применим только к этим сеансам проверки. Оформление заказа автоматически проверяет этот промо-код.
Комментарии:
1. Я должен уточнить, я пытаюсь использовать элементы Stripe, а не оформлять заказ
Ответ №3:
Итак, я связался со службой поддержки Stripe и узнал, что некоторые свойства не загружаются по умолчанию, что я сделал, это извлек промокод, а затем выполнил новый поиск по купону, но запросил поле applies_to:
val params = mapOf("code" to code)
val promotionCode = PromotionCode.list(params).first()
val expandList = listOf("data.applies_to")
val couponParams = mapOf("expand" to expandList)
val coupon =
Coupon.list(couponParams).data.first { it.id == promotionCode.coupon.id }