Exemple #1
0
    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'
        }
Exemple #3
0
    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))
Exemple #4
0
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
Exemple #5
0
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,
Exemple #7
0
    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)
Exemple #8
0
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