def post(self, request): paket = modelPaket.objects.get(slug=request.POST['paket']) user = User.objects.get(email=request.POST['user']) snap = midtransclient.Snap( is_production=False, server_key='SB-Mid-server-uoBpcWvYMzSk72FbVUEUcPox', client_key='SB-Mid-client-EOjbQuFJwheGValW') jumlah = int(request.POST['jumlah']) param = { "transaction_details": { "order_id": f"order-{request.POST['csrfmiddlewaretoken'][0:5]}", "gross_amount": (jumlah * paket.harga), "customer_email": user.email }, "enabled_payments": [ "bca_klikbca", "bca_klikpay", "bca_va", "bni_va", "gopay", "indomaret" ], "credit_card": { "secure": True, "bca_va": { "free_text": { "inquiry": [{ "id": "Silakan Selesaikan Transaksi Anda" }], "payment": [{ "id": "Pembayaran" }] } }, } } token = snap.create_transaction(param) data = self.form_class({ 'paket': paket, 'user': user, 'jumlah': jumlah, 'totalHarga': (jumlah * paket.harga), 'token': token['token'], 'status': 'pendding' }) data.save() return HttpResponseRedirect("%s?token={}".format(data['token'].data) % (reverse('transaksi:final')))
def get(self): parser = reqparse.RequestParser() parser.add_argument('laporan_id', type=int, location='args', required=True) parser.add_argument('total_pajak', type=int, location='args', required=True) args = parser.parse_args() # initialize snap client object snap = midtransclient.Snap( is_production=False, server_key='SB-Mid-server-1tkGPlpmQKBQ8HC-iax-nI_U', client_key='SB-Mid-client-c-k-uXK4AgXKTYd2') # prepare SNAP API parameter ( refer to: https://snap-docs.midtrans.com ) minimum parameter example param = { "transaction_details": { "order_id": args["laporan_id"], "gross_amount": args["total_pajak"] } } # create transaction transaction = snap.create_transaction(param) # transaction token transaction_token = transaction['token'] # transaction redirect url transaction_redirect_url = transaction['redirect_url'] return { "token": transaction_token, "url": transaction_redirect_url }, 200, { 'Content-Type': 'application/json' }
def get_payment_url(self, **kwargs): snap = midtransclient.Snap(is_production=bool(self.is_production), server_key=self.server_key, client_key=self.client_key) param = {} param.update({ "transaction_details": { "order_id": kwargs['reference_docname'], "gross_amount": kwargs['amount'] }, "credit_card": { "secure": True } }) try: trans = snap.create_transaction(param) payment_url = trans['redirect_url'] doc = frappe.get_doc("Midtrans Settings") md5 = hashlib.md5() md5.update( ("{}-{}".format(doc.merchant_id, kwargs['reference_docname']).encode("utf8"))) token = md5.hexdigest() # kwargs.update({ # "token": token # }) create_request_log(kwargs, "Remote", "Midtrans", token) print("Payment url : {}".format(payment_url)) frappe.msgprint("Payment url : {}".format(payment_url)) return payment_url except Exception as e: # frappe.msgprint(_(str(e)), raise_exception=1, indicator='red') raise frappe.ValidationError(str(e))
def midtrans_payment(order_id, label, phone_number, display_name, price): username = os.getenv('SERVER_KEY', None) client_key = os.getenv('CLIENT_KEY', None) HOST = 'https://app.midtrans.com/snap/v1/transactions' snap = midtransclient.Snap(is_production=STATE, server_key=username, client_key=client_key) param = { "transaction_details": { "order_id": "TUKULSA-" + order_id, "gross_amount": price }, "item_details": [{ "id": order_id, "price": price, "quantity": 1, "name": label, "category": "pulsa", "merchant_name": "Tukulsa" }], "customer_details": { "first_name": display_name, "phone": phone_number, }, "enabled_payments": ["gopay", "akulaku", "bank transfer", "other_va"] # "callbacks": { # "finish": "https://demo.midtrans.com"} } #transaction URL # transaction redirect url transaction = snap.create_transaction(param) transaction_url = transaction['redirect_url'] # print('transaction_url:') return transaction_url
def makePayment(request, data): # Create Snap API instance snap = midtransclient.Snap( # Set to true if you want Production Environment (accept real transaction). is_production=False, server_key='SB-Mid-server-ZL-_sjMqs2h_UcvgH-z3WnLk' ) # Build API parameter param = { "transaction_details": { "order_id": data['order_id'], "gross_amount": int(data['gross_amount']) }, "credit_card": { "secure": True }, "customer_details": { "name": data["name"], "email": data["email"], } } transaction = snap.create_transaction(param) return transaction['token']
import midtransclient # initialize snap client object snap = midtransclient.Snap( is_production=False, server_key='YOUR_SERVER_KEY', client_key='YOUR_CLIENT_KEY' ) # Alternative way to initialize snap client object: # snap = midtransclient.Snap() # snap.api_config.set( # is_production=False, # server_key='YOUR_SERVER_KEY', # client_key='YOUR_CLIENT_KEY' # ) # Another alternative way to initialize snap client object: # snap = midtransclient.Snap() # snap.api_config.is_production=False # snap.api_config.server_key='YOUR_SERVER_KEY' # snap.api_config.client_key='YOUR_CLIENT_KEY' # prepare SNAP API parameter ( refer to: https://snap-docs.midtrans.com ) this is full parameter including optionals parameter. param = { "transaction_details": { "order_id": "test-transaction-1234", "gross_amount": 10000 }, "item_details": [{ "id": "ITEM1", "price": 10000,
def post(self, request): # time = strftime("%Y%m%d%H%M%S", gmtime()) # is_production=False, # server_key='SB-Mid-server-PV66D9pq57gAf01tpRcdM2e7', # client_key='SB-Mid-client-CvCBexmp05svFhIE' # core = midtransclient.CoreApi( # is_production=True, # server_key='Mid-server-QeAV3hB7JRhAaU4GOTY_nxCN', # client_key='Mid-client-WrMb-HVBxMZrefnq' # ) snap = midtransclient.Snap( is_production=True, server_key='Mid-server-QeAV3hB7JRhAaU4GOTY_nxCN', client_key='Mid-client-WrMb-HVBxMZrefnq') # param = {"customer_details":{},"custom_field1":"ANYCUSTOMFIELD","item_details":[{"id":"5c18ea1256f67560cb6a00cdde3c3c7a81026c29","name":"USB FlashDisk","price":7500.0,"quantity":1}],"transaction_details":{"currency":"IDR","gross_amount":7500.0,"order_id":"1598503263668"},"user_id":"e77c77b7-cb75-47d0-984b-0429a15997d2"} body_unicode = request.body.decode('utf-8') body = json.loads(body_unicode) # print(body) # transaction = core.charge(param) transaction = snap.create_transaction(body) return JsonResponse(transaction, safe=False) # @method_decorator(csrf_exempt, name='dispatch') # class ViewPaymentPage(View): # # template = 'payment.html' # # snap = midtransclient.Snap( # # is_production=True, # # server_key='Mid-server-QeAV3hB7JRhAaU4GOTY_nxCN', # # client_key='Mid-client-WrMb-HVBxMZrefnq' # # ) # # time = strftime("%Y%m%d%H%M%S", gmtime()) # def get(self, request): # # body_unicode = request.body.decode('utf-8') # # body = json.loads(body_unicode) # # print(body) # # param = { # # "transaction_details": { # # "order_id": self.time, # # "gross_amount": 7500 # # }, "credit_card": { # # "secure": True # # }, # # } # # transaction = self.snap.create_transaction(param) # # transaction_token = transaction['token'] # return HttpResponse('') # @method_decorator(csrf_exempt, name='dispatch') # class GetChargeView(View): # core = midtransclient.CoreApi( # is_production=True, # server_key='Mid-server-QeAV3hB7JRhAaU4GOTY_nxCN', # client_key='Mid-client-WrMb-HVBxMZrefnq') # time = strftime("%Y%m%d%H%M%S", gmtime()) # def post(self, request): # param = { # "transaction_details": { # "order_id": self.time, # "gross_amount": 7500 # }, "credit_card": { # "secure": True # }, # } # charge_response = self.core.charge(param) # return JsonResponse(charge_response, False)
import hashlib import midtransclient from django.conf import settings snap = midtransclient.Snap(is_production=settings.MIDTRANS_IS_PRODUCTION, server_key=settings.MIDTRANS_SERVER_KEY, client_key=settings.MIDTRANS_CLIENT_KEY) def get_redirect_url(order_id: str, order_name: str, gross_amount: int, customer_first_name: str, customer_last_name: str, customer_email: str) -> str: param = { 'transaction_details': { 'order_id': order_id, 'gross_amount': gross_amount }, 'item_details': [{ 'id': order_id, 'price': gross_amount, 'quantity': 1, 'name': order_name, 'brand': 'UpKoding', 'merchant_name': 'UpKoding' }], 'customer_details': { 'first_name': customer_first_name, 'last_name': customer_last_name, 'email': customer_email },
import midtransclient from django.conf import settings from django.http import Http404 from django.shortcuts import render from payments.constants import DUMMY_PRODUCTS, PAYMENT_STATUS MIDTRANS_CORE = midtransclient.CoreApi( is_production=not settings.DEBUG, server_key=settings.MIDTRANS['SERVER_KEY'], client_key=settings.MIDTRANS['CLIENT_KEY'], ) MIDTRANS_SNAP = midtransclient.Snap( is_production=not settings.DEBUG, server_key=settings.MIDTRANS['SERVER_KEY'], client_key=settings.MIDTRANS['CLIENT_KEY'], ) def product_view(request): ctx = {'products': DUMMY_PRODUCTS} return render(request, 'index.html', ctx) def checkout_view(request, product_id): try: product = [x for x in DUMMY_PRODUCTS if x.get('id') == product_id][0] except KeyError: raise Http404