def create_gopay_payment(request): user = request.session.get('switched_user', request.user) superuser = request.user credit = user.credit_set.get(id=request.GET.get("credit_id")) address = credit.address gopay = GoPay() url = gopay.create_payment( productName=settings.GOPAY_PRODUCT_NAME, totalPrice=credit.price, currency="CZK", firstName=address.first_name, lastName=address.last_name, city=address.city, street=address.street, postalCode=address.zip, countryCode="CZE", email=address.email, phoneNumber=int(address.phone.replace(" ", "")), p4="%d" % credit.id, name="%.2f credits for %s (credit_id=%d)" % (credit.price, user.username, credit.id), ) credit.gopay_payment = Payment.objects.filter( p4=str(credit.id)).order_by("date").reverse()[0] credit.save() return HttpResponseRedirect(url)
def handle(self, *args, **options): try: gopay = GoPay() for payment in Payment.objects.filter(state="CREATED"): gopay.check_payment(payment) print "%s: %s" % (payment.name, payment.state) except GoPayException: CommandError("Error occured during checking")
def handle(self, *args, **options): try: gopay = GoPay() channels = gopay.get_payment_channels() for code in channels: channel = channels[code] self.stdout.write("%s (%s) %s\n" % (channel["name"], code, channel["supportedCurrency"])) except GoPayException: CommandError("Error occured during geting payment channels")
def check(request): targetGoId = request.GET.get("targetGoId") encryptedSignature = request.GET.get("encryptedSignature") orderNumber = request.GET.get("orderNumber") try: payment = Payment.objects.get(id=int(orderNumber)) except Payment.DoesNotExist: raise GoPayException("Error: payment doesn't exists") # check goid and paymentSessionId - should be safe enough if targetGoId == settings.GOPAY_GOID or \ int(request.GET.get("paymentSessionId")) != int(payment.payment_status.get("paymentSessionId")): raise GoPayException("Error: GoId or paymentSessionId not match!") signature = Signature() control_signature = signature.create_identity_signature(request.GET) signature.verify_signature(control_signature, encryptedSignature) # save new status of payment and return True/False by the state (PAID/not PAID) GoPay().check_payment(payment) payment_changed.send(sender=request, payment=payment) return payment