Open EfraimGENC opened 3 years ago
Aynı hatayı alıyorum
@isanecat Bu konu eski bir projede cereyan etmişti. Uzun zaman oldu ama yanlış hatırlamıyorsam body ile alakalı konular vardı. Dökümanlarda bulunan body ler yanlış. Onun yerine PHP SDK'ini okuyup oradan anlamaya çalışmıştım. Öneririm. Dediğim gibi uzun zaman oldu. Çalışıp çalışmadığına bile emin değilim ama o zamanlar yazdığım bir kaç bloğu aşağıda paylaşıyorum. Umarım faydalı olur.
class SubscriptionFormInitialize(IyzipayResource):
def create(self, request, options):
pki = self.to_pki_string(request)
return self.connect('POST', '/v2/subscription/checkoutform/initialize', options, request, pki)
def to_pki_string(self, request):
pki_builder = iyzipay.PKIBuilder(self.resource_pki(request))
pki_builder.append('pricingPlanReferenceCode', request.get('pricingPlanReferenceCode'))
pki_builder.append('subscriptionInitialStatus', request.get('subscriptionInitialStatus'))
pki_builder.append('callbackUrl', request.get('callbackUrl'))
pki_builder.append('customer', self.customer_pki(request.get('customer')))
return pki_builder.get_request_string()
class SubscriptionProduct(IyzipayResource):
def create(self, request, options):
return self.connect('POST', '/v2/subscription/products/', options, request)
def retrieve(self, request, options):
if request.get('referenceCode') is None:
raise Exception('referenceCode')
referenceCode = str(request.get('referenceCode'))
return self.connect('GET', '/v2/subscription/products/' + referenceCode, options, request)
def get(self, request, options):
page = str(request.get('page') or 1)
count = str(request.get('count') or 10)
return self.connect('GET', '/v2/subscription/products/?page=' + page + '&count=' + count, options)
def update(self, request, options):
if request.get('referenceCode') is None:
raise Exception('productReferenceCode must be in request')
referenceCode = str(request.get('referenceCode'))
return self.connect('POST', '/v2/subscription/products/' + referenceCode, options, request)
def delete(self, request, options):
if request.get('referenceCode') is None:
raise Exception('referenceCode must be in request')
referenceCode = str(request.get('referenceCode'))
return self.connect('DELETE', '/v2/subscription/products/' + referenceCode, options)
def subscription_create_product(request):
prequest = {
'locale': 'tr',
'conversationId': str(uuid.uuid4()),
'name': random_generator(),
'Description': str(uuid.uuid4()),
}
iyzico_response = iyzipay.SubscriptionProduct().create(prequest, options)
iyzico_response = iyzico_response.read().decode('utf-8')
context = {
'iyzico_cevap': json.loads(iyzico_response),
}
return render(request, 'payment/payment_test.html', context)
Teşekkür ederim. İyzico dan destek alamıyorum.
Teşekkür ederim. İyzico dan destek alamıyorum.
Evet ne yazık ki teknik manada pek destekleri de yok. Dökümanları da güncel ve sağlıklı değil.. Ben de mailleştiğim dönem sorularıma tatmin edici cevaplar alamamıştım. Bazen hiç cevap alamamıştım :)
@EfraimGENC subscription tarafında aldığın token'ı kontrol etmek için hangi end-point'i kullandın? Bende sürekli 100001 hatası alıyorum. Bulabildiğim tek end-point /v2/subscription/checkoutform/
@badursun Soruyu tam anlayamadım. Yukarıda bahsettiğim gibi uzun zaman evvel bakmıştım yapıyı da çok hatırlamıyorum ama Subs. Form almak için şöyle bir kodum varmış;
options = {
'api_key': 'sandbox-*******',
'secret_key': 'sandbox-******',
'base_url': 'sandbox-api.iyzipay.com'
}
def initialize_subscription_form(request):
address = {
'contactName': 'Jane Doe',
'city': 'Istanbul',
'country': 'Turkey',
'address': 'Nidakule Göztepe, Merdivenköy Mah. Bora Sok. No:1',
'zipCode': '34732'
}
customer = {
'name': 'John',
'surname': 'Doe',
'email': 'email@email.com',
'gsmNumber': '+905350000000',
'identityNumber': '74300864791',
'billingAddress': address,
'shippingAddress': address,
}
data = {
'locale': 'tr',
'conversationId': '123456789',
'pricingPlanReferenceCode': '02bd16d8-a742-49f9-9137-0c6347def642',
'subscriptionInitialStatus': 'ACTIVE',
"callbackUrl": "https://www.uygulamam.com/callback",
'customer': customer,
}
iyzico_cevap = iyzipay.SubscriptionFormInitialize().create(
data, options).read().decode('utf-8')
context = {
'iyzico_cevap': json.loads(iyzico_cevap),
}
return render(request, 'payment/payment_test.html', context)
SubscriptionFormInitialize
yukarıda mevcut. /v2/subscription/checkoutform/initialize
endpointini kullanıyor.
@EfraimGENC sormak istediğim şey, form init ettim, customer ödemesini yaptı ve geri döndü. Bu noktada elimde ki token ile ödeme sonucunu kontrol edeceğim end-point URL sini sormuştum.
Yazdığım Resource
Yazdığım Örnek
Oluşan Pki String
Aldığım Cevap
{'status': 'failure', 'errorCode': '100001', 'errorMessage': 'Sistem hatası', 'systemTime': 1624444765292}