Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Subscription Form Initialize ederken sürekli (100001) Sistem hatası alıyorum #71

Open
EfraimGENC opened this issue Jun 23, 2021 · 7 comments

Comments

@EfraimGENC
Copy link

Yazdığım Resource

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('callbackUrl', request.get('callbackUrl'))
        pki_builder.append('pricingPlanReferenceCode', request.get('pricingPlanReferenceCode'))
        pki_builder.append('subscriptionInitialStatus', request.get('subscriptionInitialStatus'))
        pki_builder.append('name', request.get('name'))
        pki_builder.append('surname', request.get('surname'))
        pki_builder.append('email', request.get('email'))
        pki_builder.append('gsmNumber', request.get('gsmNumber'))
        pki_builder.append('identityNumber', request.get('identityNumber'))
        pki_builder.append('shippingAddress', self.address_pki(request.get('shippingAddress')))
        pki_builder.append('billingAddress', self.address_pki(request.get('billingAddress')))
        return pki_builder.get_request_string()

Yazdığım Örnek

options = {
    'api_key': '-------',
    'secret_key': '-------',
    'base_url': 'sandbox-api.iyzipay.com'
}
address = {
    'contactName': 'Jane Doe',
    'city': 'Istanbul',
    'country': 'Turkey',
    'address': 'Nidakule Göztepe, Merdivenköy Mah. Bora Sok. No:1',
    'zipCode': '34732'
}

request = {
    'locale': 'tr',
    'conversationId': '123456789',
    "callbackUrl": "https://www.merchant.com/callback",
    'pricingPlanReferenceCode': '864dea9b-6f1b-4933-bce2-1ca4673a148f',
    'name': 'John',
    'surname': 'Doe',
    'email': '[email protected]',
    'gsmNumber': '+905350000000',
    'identityNumber': '74300864791',
    'shippingAddress': address,
    'billingAddress': address,
}

iyzico_cevap = iyzipay.SubscriptionFormInitialize().create(
    request, options).read().decode('utf-8')

Oluşan Pki String

[locale=tr,conversationId=123456789,callbackUrl=https://www.merchant.com/callback,referenceCode=864dea9b-6f1b-4933-bce2-1ca4673a148f,name=John,surname=Doe,email=[email protected],gsmNumber=+905350000000,identityNumber=74300864791,shippingAddress=[address=Nidakule Göztepe, Merdivenköy Mah. Bora Sok. No:1,zipCode=34732,contactName=Jane Doe,city=Istanbul,country=Turkey],billingAddress=[address=Nidakule Göztepe, Merdivenköy Mah. Bora Sok. No:1,zipCode=34732,contactName=Jane Doe,city=Istanbul,country=Turkey]]

Aldığım Cevap
{'status': 'failure', 'errorCode': '100001', 'errorMessage': 'Sistem hatası', 'systemTime': 1624444765292}

@isanecat
Copy link

Aynı hatayı alıyorum

@EfraimGENC
Copy link
Author

@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)

@isanecat
Copy link

Teşekkür ederim. İyzico dan destek alamıyorum.

@EfraimGENC
Copy link
Author

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 :)

@badursun
Copy link

@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/ şeklinde

@EfraimGENC
Copy link
Author

@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 protected]',
        '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.

@badursun
Copy link

@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.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

3 participants