def payPalReturn(request, *args, **kwargs): """The PayPal method for payment verification.""" initParam = {} token = request.GET.get('token') payerID = request.GET.get('PayerID') initParam['token'] = token initParam['payerid'] = payerID if token and payerID: p = driver.PayPal() EC_RETURNURL = '/'.join([common.getHttpHeader(request), 'payment/paypal_return']) EC_CANCELURL = '/'.join([common.getHttpHeader(request), 'payment/paypal_cancel']) res_dict = p.GetExpressCheckoutDetailsInfo(EC_RETURNURL, EC_CANCELURL, token) state = p._get_value_from_qs(res_dict, 'ACK') if state in ["Success", "SuccessWithWarning"]: #Show the list of service detail to user. executeMethod = kwargs.pop('executeMethod', None) if executeMethod: gateway = request.session.get('gateway', None) if gateway: initParam['gateway'] = gateway serviceDetail, serviceItems, discount_rate = executeMethod(request, initParam=initParam) if serviceDetail and serviceItems: initParam['serviceDetail'] = serviceDetail initParam['serviceItems'] = serviceItems initParam['discount_rate'] = discount_rate return render_to_response('payment/paypal_return.html', initParam, context_instance=RequestContext(request)) else: log.error(_('Token %(param1)s, PayerID: %(param2)s, Execute method %(param3)s failed.') % {'param1': token, 'param2': payerID, 'param3': executeMethod.__name__}) else: log.error(_('Token %(param1)s, PayerID: %(param2)s. Gateway no exists in request.session.') % {'param1': token, 'param2': payerID}) else: log.error(_('Token %(param1)s, PayerID: %(param2)s, ExecuteMethod does not exist.') % {'param1': token, 'param2': payerID}) else: error = p._get_value_from_qs(res_dict, 'L_SHORTMESSAGE0') log.error(_('Token %(param1)s, PayerID: %(param2)s, %(param3)s.') % {'param1': token, 'param2': payerID, 'param3': error}) else: log.error(_('Token or PayerID no exists.')) if request.session.get('gateway', None): del request.session['gateway'] success_page = request.session.get('success_page', None) back_page = request.session.get('back_page', None) if success_page: del request.session['success_page'] if back_page: del request.session['back_page'] error_msg = driver.GENERIC_PAYPAL_ERROR page_msg = request.session['back_page_msg'] return render_to_response('payment/paypal_cancel.html', {'error_msg': error_msg, 'back_page': back_page, 'back_page_msg': page_msg}, context_instance=RequestContext(request)) else: error_msg = _('%(param1)s Please payment again.') % {'param1': driver.GENERIC_PAYPAL_ERROR} return render_to_response('payment/paypal_error.html', {"error_msg": error_msg}, context_instance=RequestContext(request))
def tradeAction(request, *args, **kwargs): """Query trade status.""" initParam = {} user_id = string.atoi(kwargs.get('user_id')) app_id = kwargs.get('app_id') action = kwargs.get('action') if 'sell' == action and user_id == request.user.id: transaction = get_object_or_404(models.Transaction, app_id=app_id, seller_id=user_id, is_active=True) elif 'buy' == action and user_id == request.user.id: transaction = get_object_or_404(models.Transaction, app_id=app_id, buyer_id=user_id) if transaction.status == 2: token = common.getToken(key='token_length', default=30) initParam['pay_url'] = '/'.join([ common.getHttpHeader(request), 'transaction/buyer-pay', str(app_id), str(transaction.id), token ]) else: raise Http404 support_user = common.getSystemParam(key='support_user', default='appswalk') support_users = models.User.objects.filter(username=support_user) if support_users: initParam['support_user'] = support_users[0] else: log.error(_('Support user account does not exist.')) initParam['transaction'] = transaction if transaction.status == 2 or transaction.status == 3: if transaction.end_time > datetime.datetime.now(): initParam['time_remaining'] = time.mktime( time.strptime( transaction.end_time.strftime('%Y-%m-%d %H:%M:%S'), '%Y-%m-%d %H:%M:%S')) else: initParam['time_remaining'] = "Deal Closed" initParam['paid_expiry'] = True if tradeOperation(request, transaction=transaction, initParam=initParam): return redirect(request.path) elif transaction.status == 4: initParam['time_remaining'] = common.dateBefore(transaction.end_time) initParam['seller_txn'] = creditViews.getAppraisement( user_id=transaction.seller.id, txn_id=transaction.id) initParam['buyer_txn'] = creditViews.getAppraisement( user_id=transaction.buyer.id, txn_id=transaction.id) if creditViews.createAppraisement(request, initParam=initParam): return redirect(request.path) return render_to_response('transaction/trade_action.html', initParam, context_instance=RequestContext(request))
def shareToWeiBo(*args, **kwargs): """Share App info to WeiBo""" initParam = kwargs.get('initParam') request = initParam.get('request') app = initParam.get('app') if app and request: try: url = 'https://upload.api.weibo.com/2/statuses/upload.json' app_url = '/'.join([common.getHttpHeader(request), 'query/app-detail', str(app.id)]) status = ''.join(['App "', app.app_name.encode('utf-8'), '" for sale from AppsWalk. ', app_url]) data = { 'source': settings.WEIBO_CLIENT_KEY, 'access_token': settings.WEIBO_ACCESS_TOKEN, 'status': status } path = '/'.join([settings.MEDIA_ROOT, app.appinfo.icon]) files = {'pic': open(path, mode='rb')} result = requests.post(url, data=data, files=files) data = json.loads(result.text) if data.get('error_code'): log.error(_('Share App %(param1)s failed to WeiBo, error:%(param2)s') % {'param1': app.app_name, 'param2': data}) else: log.info(_('Share App %(param1)s success to WeiBo.') % {'param1': app.app_name}) except Exception as e: log.error(_('Share App %(param1)s failed to WeiBo, error:%(param2)s') % {'param1': app.app_name, 'param2': str(e)})
def payment(request, *args, **kwargs): """Begin payment operation.""" initParam = kwargs.get('initParam') executeMethod = initParam.pop('executeMethod', None) amount = initParam.pop('amount') currency = initParam.pop('currency') id = initParam.get('serviceDetail_id') if amount and currency and id: p = driver.PayPal() EC_RETURNURL = '/'.join([common.getHttpHeader(request), 'payment/paypal_return']) EC_CANCELURL = '/'.join([common.getHttpHeader(request), 'payment/paypal_cancel']) result = p.SetExpressCheckout(amount, currency, EC_RETURNURL, EC_CANCELURL, initParam=initParam) if result: #The needed operation for verification later when payment return token.. if executeMethod: initParam['token'] = p.token if executeMethod(request, initParam=initParam): if request.session.get('gateway', None): del request.session['gateway'] request.session['gateway'] = initParam.get('gateway') redirect_url = p.paypal_url() return redirect(redirect_url) else: log.error(_('ServiceDetail with id %(param1)s. Execute method %(param2)s failed.') % {'param1': id, 'param2': executeMethod.__name__}) else: log.error(_('ServiceDetail with id %(param1)s. ExecuteMethod does not exist.') % {'param1': id}) else: log.error(_('ServiceDetail with id %(param1)s. %(param2)s') % {'param1': id, 'param2': str(p.apierror)}) else: log.error(_('payment. Amount or Currency or ServiceDetail ID no exists.')) success_page = request.session.get('success_page', None) back_page = request.session.get('back_page', None) if success_page: del request.session['success_page'] if back_page: del request.session['back_page'] error_msg = driver.GENERIC_PAYPAL_ERROR page_msg = request.session['back_page_msg'] return render_to_response('payment/paypal_cancel.html', {'error_msg': error_msg, 'back_page': back_page, 'back_page_msg': page_msg}, context_instance=RequestContext(request)) else: error_msg = _('%(param1)s Please payment again.') % {'param1': driver.GENERIC_PAYPAL_ERROR} return render_to_response('payment/paypal_error.html', {"error_msg": error_msg}, context_instance=RequestContext(request))
def shareSocial(request, *args, **kwargs): initParam = kwargs.get('initParam') app = kwargs.get('app') appInfo = app.appinfo app_url = '/'.join([common.getHttpHeader(request), 'query/app-detail', str(app.id)]) twitter = 'http://twitter.com/intent/tweet?' text = ''.join(['App (', app.app_name.encode('utf-8'), ') for sale from AppsWalk ']) # initParam['twitter_url'] = twitter + urllib.urlencode({'status': status}) initParam['twitter_url'] = twitter + urllib.urlencode({'url': app_url, 'text': text}) initParam['http_header'] = common.getHttpHeader(request) facebook = 'http://www.facebook.com/sharer.php?' initParam['facebook_url'] = facebook + urllib.urlencode({'u': app_url, 't': text}) weibo = 'http://service.weibo.com/share/share.php?' title = '- '.join([text, app_url]) pic = ''.join([common.getHttpHeader(request), settings.MEDIA_URL, appInfo.icon]) initParam['weibo_url'] = weibo + urllib.urlencode({'appkey': settings.WEIBO_CLIENT_KEY, 'title': title, 'pic': pic, 'url': app_url}) initParam['title'] = text
def buyerPay(request, *args, **kwargs): """Buyer pay, after seller begin to trade.""" initParam = {} app_id = kwargs.get('app_id') txn_id = kwargs.get('txn_id') #TODO:Can use or verify it later. token_id = kwargs.get('token') transaction = get_object_or_404(models.Transaction, pk=txn_id, app_id=app_id, buyer_id=request.user.id, status=2, is_active=True) app = transaction.app #Buyser pay for app. txn_fee_pct = string.atof( common.getSystemParam(key='txn_fee_pct', default=0.01)) initParam['currency'] = app.currency.currency initParam['appsWalk_account'] = settings.APPSWALK_ACCOUNT initParam['gateway'] = 'paypal' gateways = paymentModels.Gateway.objects.filter( name__iexact=initParam.get('gateway')) acceptGateways = paymentModels.AcceptGateway.objects.filter( user_id=transaction.seller.id, type_id=gateways[0].id, is_active=True) initParam['seller_account'] = acceptGateways[0].value initParam['appsWalk_amount'] = transaction.price * txn_fee_pct initParam['seller_amount'] = transaction.price * (1 - txn_fee_pct) initParam['txn_id'] = transaction.id #The needed operation method in pay. initParam['executeMethod'] = updateTransaction #The back page, when pay has error. if request.session.get('back_page', None): del request.session['back_page'] if request.session.get('back_page_msg', None): del request.session['back_page_msg'] url = '/'.join([ common.getHttpHeader(request), 'transaction/trade-action/buy', str(app.id), str(request.user.id) ]) request.session['back_page'] = url request.session['back_page_msg'] = 'Trade Action' #The success return page, when pay finish. if request.session.get('success_page', None): del request.session['success_page'] if request.session.get('success_page_msg', None): del request.session['success_page_msg'] request.session['success_page'] = url request.session['success_page_msg'] = 'Trade Action' return paymentViews.pay(request, initParam=initParam)
def pay(request, *args, **kwargs): initParam = kwargs.get('initParam') executeMethod = initParam.pop('executeMethod', None) currency = initParam.get('currency') id = initParam.get('txn_id') if currency and id: p = driver.PayPal() AP_RETURNURL = '/'.join(['https://', request.META.get('HTTP_HOST'), 'payment/paypal_ap_return']) AP_CANCELURL = '/'.join([common.getHttpHeader(request), 'payment/paypal_cancel']) result = p.setAPCall(currency, AP_RETURNURL, AP_CANCELURL, 'PAY', initParam=initParam) if result['responseEnvelope.ack'][0] == 'Success': pay_key = result['payKey'][0] #The needed operation for verification later when pay return pay_key. if executeMethod: initParam['pay_key'] = pay_key if executeMethod(initParam=initParam): #payReturn will do operation by two session values. if request.session.get('pay_key', None): del request.session['pay_key'] request.session['pay_key'] = pay_key if request.session.get('gateway', None): del request.session['gateway'] request.session['gateway'] = 'paypal' #redirect PayPal pay website. redirect_url = p.paypal_ap_url(pay_key) return redirect(redirect_url) else: log.error(_('Transaction with id %(param1)s. Execute method %(param2)s failed.') % {'param1': id, 'param2': executeMethod.__name__}) else: log.error(_('Transaction with id %(param1)s. ExecuteMethod does not exist.') % {'param1': id}) else: log.error(_('Transaction with id %(param1)s. %(param2)s') % {'param1': id, 'param2': str(result['error(0).message'][0])}) else: log.error(_('Pay. Currency or Transaction ID no exists.')) success_page = request.session.get('success_page', None) back_page = request.session.get('back_page', None) if success_page: del request.session['success_page'] if back_page: del request.session['back_page'] error_msg = driver.GENERIC_PAYPAL_ERROR page_msg = request.session['back_page_msg'] return render_to_response('payment/paypal_cancel.html', {'error_msg': error_msg, 'back_page': back_page, 'back_page_msg': page_msg}, context_instance=RequestContext(request)) else: error_msg = _('%(param1)s Please transaction again.') % {'param1': driver.GENERIC_PAYPAL_ERROR} return render_to_response('payment/paypal_error.html', {"error_msg": error_msg}, context_instance=RequestContext(request))
def sendRegisterActiveEmail(request, *args, **kwargs): """After user register, send the account active link to his email.""" user = kwargs.get('user') templates = models.NotificationTemplate.objects.filter(name='register_active') if user and templates: massEmailThread = email.MassEmailThread() link_header = common.getHttpHeader(request) token = common.getToken(key='token_length', default=30) active_link = '/'.join([link_header, 'usersetting', user.username, 'emails', str(user.id), 'register-confirm-verification', token]) subject = templates[0].subject message = templates[0].template.replace('{param1}', user.username).replace('{param2}', active_link) massEmailThread.addEmailData(subject=subject, message=message, recipient_list=[user.email]) massEmailThread.start() return None
def sendResetPasswordEmail(request, *args, **kwargs): """Send the email of reset password.""" user = kwargs.get('user') type = kwargs.get('type') templates = models.NotificationTemplate.objects.filter(name='reset_password_email') if user and type and templates: massEmailThread = email.MassEmailThread() header = common.getHttpHeader(request) token = common.getToken(key='token_length', default=30) url = '/'.join([header, 'usersetting/reset-password', str(type), str(user.id), user.username, token]) subject = templates[0].subject message = templates[0].template.replace('{param1}', user.username).replace('{param2}', url) massEmailThread.addEmailData(subject=subject, message=message, recipient_list=[user.email]) massEmailThread.start() return None
def sendSecurityVerificationEmail(request, *args, **kwargs): """After user update email in security setting, send the email verification link to the new email.""" user = kwargs.get('user') templates = models.NotificationTemplate.objects.filter(name='email_security_verification') if user and templates: massEmailThread = email.MassEmailThread() link_header = common.getHttpHeader(request) token = common.getToken(key='token_length', default=30) active_link = '/'.join([link_header, 'usersetting', user.username, 'emails', str(user.id), 'email-security-verification', token]) subject = templates[0].subject message = templates[0].template.replace('{param1}', user.username).replace('{param2}', active_link) massEmailThread.addEmailData(subject=subject, message=message, recipient_list=[user.email]) massEmailThread.start() return None
def tradeNowInformBuyerPayEmail(request, *args, **kwargs): """After seller click button 'Trade Now', send email to buyer inform that he won the bidding, and can pay now.""" app = kwargs.get('app') user = kwargs.get('user') templates = models.NotificationTemplate.objects.filter(name='seller_trade_now') if app and user and templates: massEmailThread = email.MassEmailThread() link_header = common.getHttpHeader(request) app_detail_url = '/'.join([link_header, 'query/app-detail', str(app.id)]) pay_url = '/'.join([link_header, 'dashboard/my-bidding']) subject = templates[0].subject message = templates[0].template.replace('{param1}', user.username).replace('{param2}', app.app_name).replace('{param3}', pay_url) massEmailThread.addEmailData(subject=subject, message=message, recipient_list=[user.email]) massEmailThread.start() return None
def shareToWeiBo(*args, **kwargs): """Share App info to WeiBo""" initParam = kwargs.get('initParam') request = initParam.get('request') app = initParam.get('app') if app and request: try: url = 'https://upload.api.weibo.com/2/statuses/upload.json' app_url = '/'.join([ common.getHttpHeader(request), 'query/app-detail', str(app.id) ]) status = ''.join([ 'App "', app.app_name.encode('utf-8'), '" for sale from AppsWalk. ', app_url ]) data = { 'source': settings.WEIBO_CLIENT_KEY, 'access_token': settings.WEIBO_ACCESS_TOKEN, 'status': status } path = '/'.join([settings.MEDIA_ROOT, app.appinfo.icon]) files = {'pic': open(path, mode='rb')} result = requests.post(url, data=data, files=files) data = json.loads(result.text) if data.get('error_code'): log.error( _('Share App %(param1)s failed to WeiBo, error:%(param2)s') % { 'param1': app.app_name, 'param2': data }) else: log.info( _('Share App %(param1)s success to WeiBo.') % {'param1': app.app_name}) except Exception as e: log.error( _('Share App %(param1)s failed to WeiBo, error:%(param2)s') % { 'param1': app.app_name, 'param2': str(e) })
def tradeAction(request, *args, **kwargs): """Query trade status.""" initParam = {} user_id = string.atoi(kwargs.get('user_id')) app_id = kwargs.get('app_id') action = kwargs.get('action') if 'sell' == action and user_id == request.user.id: transaction = get_object_or_404(models.Transaction, app_id=app_id, seller_id=user_id, is_active=True) elif 'buy' == action and user_id == request.user.id: transaction = get_object_or_404(models.Transaction, app_id=app_id, buyer_id=user_id) if transaction.status == 2: token = common.getToken(key='token_length', default=30) initParam['pay_url'] = '/'.join([common.getHttpHeader(request), 'transaction/buyer-pay', str(app_id), str(transaction.id), token]) else: raise Http404 support_user = common.getSystemParam(key='support_user', default='appswalk') support_users = models.User.objects.filter(username=support_user) if support_users: initParam['support_user'] = support_users[0] else: log.error(_('Support user account does not exist.')) initParam['transaction'] = transaction if transaction.status == 2 or transaction.status == 3: if transaction.end_time > datetime.datetime.now(): initParam['time_remaining'] = time.mktime(time.strptime(transaction.end_time.strftime('%Y-%m-%d %H:%M:%S'), '%Y-%m-%d %H:%M:%S')) else: initParam['time_remaining'] = "Deal Closed" initParam['paid_expiry'] = True if tradeOperation(request, transaction=transaction, initParam=initParam): return redirect(request.path) elif transaction.status == 4: initParam['time_remaining'] = common.dateBefore(transaction.end_time) initParam['seller_txn'] = creditViews.getAppraisement(user_id=transaction.seller.id, txn_id=transaction.id) initParam['buyer_txn'] = creditViews.getAppraisement(user_id=transaction.buyer.id, txn_id=transaction.id) if creditViews.createAppraisement(request, initParam=initParam): return redirect(request.path) return render_to_response('transaction/trade_action.html', initParam, context_instance=RequestContext(request))
def buyerPay(request, *args, **kwargs): """Buyer pay, after seller begin to trade.""" initParam = {} app_id = kwargs.get('app_id') txn_id = kwargs.get('txn_id') #TODO:Can use or verify it later. token_id = kwargs.get('token') transaction = get_object_or_404(models.Transaction, pk=txn_id, app_id=app_id, buyer_id=request.user.id, status=2, is_active=True) app = transaction.app #Buyser pay for app. txn_fee_pct = string.atof(common.getSystemParam(key='txn_fee_pct', default=0.01)) initParam['currency'] = app.currency.currency initParam['appsWalk_account'] = settings.APPSWALK_ACCOUNT initParam['gateway'] = 'paypal' gateways = paymentModels.Gateway.objects.filter(name__iexact=initParam.get('gateway')) acceptGateways = paymentModels.AcceptGateway.objects.filter(user_id=transaction.seller.id, type_id=gateways[0].id, is_active=True) initParam['seller_account'] = acceptGateways[0].value initParam['appsWalk_amount'] = transaction.price * txn_fee_pct initParam['seller_amount'] = transaction.price * (1 - txn_fee_pct) initParam['txn_id'] = transaction.id #The needed operation method in pay. initParam['executeMethod'] = updateTransaction #The back page, when pay has error. if request.session.get('back_page', None): del request.session['back_page'] if request.session.get('back_page_msg', None): del request.session['back_page_msg'] url = '/'.join([common.getHttpHeader(request), 'transaction/trade-action/buy', str(app.id), str(request.user.id)]) request.session['back_page'] = url request.session['back_page_msg'] = 'Trade Action' #The success return page, when pay finish. if request.session.get('success_page', None): del request.session['success_page'] if request.session.get('success_page_msg', None): del request.session['success_page_msg'] request.session['success_page'] = url request.session['success_page_msg'] = 'Trade Action' return paymentViews.pay(request, initParam=initParam)
def sendSecurityVerificationEmail(request, *args, **kwargs): """After user update email in security setting, send the email verification link to the new email.""" user = kwargs.get('user') templates = models.NotificationTemplate.objects.filter( name='email_security_verification') if user and templates: massEmailThread = email.MassEmailThread() link_header = common.getHttpHeader(request) token = common.getToken(key='token_length', default=30) active_link = '/'.join([ link_header, 'usersetting', user.username, 'emails', str(user.id), 'email-security-verification', token ]) subject = templates[0].subject message = templates[0].template.replace('{param1}', user.username).replace( '{param2}', active_link) massEmailThread.addEmailData(subject=subject, message=message, recipient_list=[user.email]) massEmailThread.start() return None
def sendRegisterActiveEmail(request, *args, **kwargs): """After user register, send the account active link to his email.""" user = kwargs.get('user') templates = models.NotificationTemplate.objects.filter( name='register_active') if user and templates: massEmailThread = email.MassEmailThread() link_header = common.getHttpHeader(request) token = common.getToken(key='token_length', default=30) active_link = '/'.join([ link_header, 'usersetting', user.username, 'emails', str(user.id), 'register-confirm-verification', token ]) subject = templates[0].subject message = templates[0].template.replace('{param1}', user.username).replace( '{param2}', active_link) massEmailThread.addEmailData(subject=subject, message=message, recipient_list=[user.email]) massEmailThread.start() return None
def tradeNowInformBuyerPayEmail(request, *args, **kwargs): """After seller click button 'Trade Now', send email to buyer inform that he won the bidding, and can pay now.""" app = kwargs.get('app') user = kwargs.get('user') templates = models.NotificationTemplate.objects.filter( name='seller_trade_now') if app and user and templates: massEmailThread = email.MassEmailThread() link_header = common.getHttpHeader(request) app_detail_url = '/'.join( [link_header, 'query/app-detail', str(app.id)]) pay_url = '/'.join([link_header, 'dashboard/my-bidding']) subject = templates[0].subject message = templates[0].template.replace( '{param1}', user.username).replace('{param2}', app.app_name).replace('{param3}', pay_url) massEmailThread.addEmailData(subject=subject, message=message, recipient_list=[user.email]) massEmailThread.start() return None
def shareToTwitter(*args, **kwargs): """Share App info to Twitter""" initParam = kwargs.get('initParam') request = initParam.get('request') app = initParam.get('app') if app and request: try: # url = 'https://api.twitter.com/1.1/statuses/update_with_media.json' app_url = '/'.join([ common.getHttpHeader(request), 'query/app-detail', str(app.id) ]) status = ''.join([ 'App "', app.app_name.encode('utf-8'), '" for sale from AppsWalk. ', app_url ]) pic = open('/'.join([settings.MEDIA_ROOT, app.appinfo.icon]), mode='rb') twitter = Twython( app_key=settings.TWITTER_CONSUMER_KEY, app_secret=settings.TWITTER_CONSUMER_SECRET, oauth_token=settings.TWITTER_OAUTH_TOKEN, oauth_token_secret=settings.TWITTER_OAUTH_TOKEN_SECRET) twitter.update_status_with_media(status=status, media=pic) log.info( _('Share App %(param1)s success to Twitter.') % {'param1': app.app_name}) except Exception as e: log.error( _('Share App %(param1)s failed to Twitter, error:%(param2)s') % { 'param1': app.app_name, 'param2': str(e) })
def sendResetPasswordEmail(request, *args, **kwargs): """Send the email of reset password.""" user = kwargs.get('user') type = kwargs.get('type') templates = models.NotificationTemplate.objects.filter( name='reset_password_email') if user and type and templates: massEmailThread = email.MassEmailThread() header = common.getHttpHeader(request) token = common.getToken(key='token_length', default=30) url = '/'.join([ header, 'usersetting/reset-password', str(type), str(user.id), user.username, token ]) subject = templates[0].subject message = templates[0].template.replace('{param1}', user.username).replace( '{param2}', url) massEmailThread.addEmailData(subject=subject, message=message, recipient_list=[user.email]) massEmailThread.start() return None
def shareToTwitter(*args, **kwargs): """Share App info to Twitter""" initParam = kwargs.get('initParam') request = initParam.get('request') app = initParam.get('app') if app and request: try: # url = 'https://api.twitter.com/1.1/statuses/update_with_media.json' app_url = '/'.join([common.getHttpHeader(request), 'query/app-detail', str(app.id)]) status = ''.join(['App "', app.app_name.encode('utf-8'), '" for sale from AppsWalk. ', app_url]) pic = open('/'.join([settings.MEDIA_ROOT, app.appinfo.icon]), mode='rb') twitter = Twython( app_key=settings.TWITTER_CONSUMER_KEY, app_secret=settings.TWITTER_CONSUMER_SECRET, oauth_token=settings.TWITTER_OAUTH_TOKEN, oauth_token_secret=settings.TWITTER_OAUTH_TOKEN_SECRET ) twitter.update_status_with_media(status=status, media=pic) log.info(_('Share App %(param1)s success to Twitter.') % {'param1': app.app_name}) except Exception as e: log.error(_('Share App %(param1)s failed to Twitter, error:%(param2)s') % {'param1': app.app_name, 'param2': str(e)})
def onePriceBuy(request, *args, **kwargs): """ Buyer pay by clicking button 'Buy It Now with 10 USD' in app detail page. Note: url include app_id, and publisher_id, because of preventing user to cheat. """ initParam = {} app_id = kwargs.get('app_id') publisher_id = kwargs.get('publisher_id') app = get_object_or_404(appModels.App, pk=app_id, publisher_id=publisher_id, status=2) transactions = models.Transaction.objects.filter(app_id=app.id, seller_id=publisher_id, buyer_id=request.user.id, status=1) if transactions: transaction = transactions[0] else: transaction = models.Transaction() transaction.app = app transaction.seller = app.publisher transaction.status = 1 transaction.is_active = False transaction.buyer = request.user transaction.price = app.one_price transaction.buy_type = 1 paid_expiry_date = string.atoi( common.getSystemParam(key='paid_expiry_date', default=7)) transaction.end_time = datetime.datetime.now() + datetime.timedelta( days=paid_expiry_date) transaction.save() #Log transaction transactionsLog = models.TransactionLog() transactionsLog.transaction = transaction transactionsLog.app = transaction.app transactionsLog.status = transaction.status transactionsLog.buyer = transaction.buyer transactionsLog.price = transaction.price transactionsLog.buy_type = transaction.buy_type transactionsLog.save() initParam['transaction'] = transaction initParam['page_source'] = 'one-price' if transaction.end_time > datetime.datetime.now(): initParam['time_remaining'] = time.mktime( time.strptime(transaction.end_time.strftime('%Y-%m-%d %H:%M:%S'), '%Y-%m-%d %H:%M:%S')) else: initParam['time_remaining'] = "Deal Closed" initParam['paid_expiry'] = True if request.method == 'POST': #Buyer credit point judge for bidding. min_cp = common.getSystemParam(key='min_cp_for_bid', default=50) cp = creditViews.getUserCreditPoint(user=request.user) if cp == -1 or cp < string.atoi(min_cp): initParam['error_msg'] = _( 'You are not allowed to buy, because your credit points is too low.' ) else: #Buyser pay for app. txn_fee_pct = string.atof( common.getSystemParam(key='txn_fee_pct', default=0.01)) initParam['currency'] = app.currency.currency initParam['appsWalk_account'] = settings.APPSWALK_ACCOUNT initParam['gateway'] = 'paypal' gateways = paymentModels.Gateway.objects.filter( name__iexact=initParam.get('gateway')) acceptGateways = paymentModels.AcceptGateway.objects.filter( user_id=transaction.seller.id, type_id=gateways[0].id, is_active=True) initParam['seller_account'] = acceptGateways[0].value initParam['appsWalk_amount'] = app.one_price * txn_fee_pct initParam['seller_amount'] = app.one_price * (1 - txn_fee_pct) initParam['txn_id'] = transaction.id #The needed operation method in pay. initParam['executeMethod'] = updateTransaction #The back page, when pay has error. if request.session.get('back_page', None): del request.session['back_page'] if request.session.get('back_page_msg', None): del request.session['back_page_msg'] request.session['back_page'] = '/'.join([ common.getHttpHeader(request), 'query/app-detail', str(app.id) ]) request.session['back_page_msg'] = 'App Detail' #The success return page, when pay finish. if request.session.get('success_page', None): del request.session['success_page'] if request.session.get('success_page_msg', None): del request.session['success_page_msg'] request.session['success_page'] = '/'.join([ common.getHttpHeader(request), 'transaction/trade-action/buy', str(app.id), str(request.user.id) ]) request.session['success_page_msg'] = 'Trade Action' return paymentViews.pay(request, initParam=initParam) return render_to_response('transaction/one_price_buy.html', initParam, context_instance=RequestContext(request))
initParam["error_msg"] = _("Link %(param)s is not correct.") % {"param": ""} log.error(_("The app store link %(param)s is not correct.") % {"param": match.group(1)}) log.error(e.message) return None appInfo.icon = "/".join([str(model.publisher.id), str(model.id), "Icon.jpg"]) # Make the image of two dimension code for app store link if appInfo.app_store_link_code is None: app_store_link_code = "/".join([str(model.publisher.id), str(model.id), "app_store_link_code.jpg"]) path = "/".join([settings.MEDIA_ROOT, app_store_link_code]) common.makeTwoDimensionCode(data=model.app_store_link, path=path) appInfo.app_store_link_code = app_store_link_code # Make the image of two dimension code for app detail link if appInfo.app_detail_code is None: data = "/".join([common.getHttpHeader(request), "query/app-detail", str(model.id)]) app_detail_code = "/".join([str(model.publisher.id), str(model.id), "app_detail_code.jpg"]) path = "/".join([settings.MEDIA_ROOT, app_detail_code]) common.makeTwoDimensionCode(data=data, path=path) appInfo.app_detail_code = app_detail_code appInfo.save() # Save monetize data monetize_id = common.getSystemParam(key="monetize", default=4) model.monetize.add(get_object_or_404(appModels.Monetize, pk=monetize_id)) # Save category, subcategory data model.category.clear() model.subcategory.clear() genres = result.get("genres", None)
str(model.id), 'Icon.jpg']) #Make the image of two dimension code for app store link if appInfo.app_store_link_code is None: app_store_link_code = '/'.join([ str(model.publisher.id), str(model.id), 'app_store_link_code.jpg' ]) path = '/'.join([settings.MEDIA_ROOT, app_store_link_code]) common.makeTwoDimensionCode(data=model.app_store_link, path=path) appInfo.app_store_link_code = app_store_link_code #Make the image of two dimension code for app detail link if appInfo.app_detail_code is None: data = '/'.join( [common.getHttpHeader(request), 'query/app-detail', str(model.id)]) app_detail_code = '/'.join( [str(model.publisher.id), str(model.id), 'app_detail_code.jpg']) path = '/'.join([settings.MEDIA_ROOT, app_detail_code]) common.makeTwoDimensionCode(data=data, path=path) appInfo.app_detail_code = app_detail_code appInfo.save() #Save monetize data monetize_id = common.getSystemParam(key='monetize', default=4) model.monetize.add(get_object_or_404(appModels.Monetize, pk=monetize_id)) #Save category, subcategory data
def checkout(request, *args, **kwargs): """checkout for service detail payment.""" initParam = {'begin_date': None} app_id = kwargs.get('app_id') service_id = kwargs.get('service_id') service_sn = kwargs.get('service_sn') initParam['select'] = request.POST.get('select') user = get_object_or_404(User, pk=request.user.id, username=request.user.username) app = get_object_or_404(appModels.App, pk=app_id, publisher_id=user.id) serviceDetail = get_object_or_404(models.ServiceDetail, pk=service_id, app_id=app_id, sn=service_sn) #Init data service_expiry_date = string.atoi( common.getSystemParam(key='service_expiry_date', default=31)) initParam['service_expiry_date'] = service_expiry_date acceptGateways = user.acceptgateway_set.filter(is_active=True, is_default=True) serviceDetails = models.ServiceDetail.objects.filter( app_id=app_id, is_payed=True, end_date__gte=datetime.datetime.now().strftime('%Y-%m-%d')).order_by( '-pk') if serviceDetails: initParam['begin_date'] = serviceDetails[0].end_date serviceDetail.start_date = serviceDetails[0].end_date else: serviceDetail.start_date = datetime.datetime.now() serviceDetail.end_date = datetime.datetime.now() + datetime.timedelta( days=service_expiry_date) initParam['currency'] = app.currency.currency if acceptGateways: initParam['acceptGateway'] = acceptGateways[0] initParam['discount_rate'] = common.getSystemParam(key='discount_rate', default=1) if request.method == "POST": form = forms.ServiceDetailForm(request.POST) if form.is_valid(): days = (form.cleaned_data['end_date'] - form.cleaned_data['start_date']).days if serviceDetail.is_payed: initParam['order_error'] = _('The payment is paid.') elif len(acceptGateways) == 0: initParam['order_error'] = _( 'The gateway is required.Please choice gateway.') elif (initParam['begin_date'] and form.cleaned_data['start_date'] < initParam['begin_date']) or days != service_expiry_date: initParam['order_error'] = _('Service date is not correct.') else: form.save(commit=False) serviceDetail.start_date = form.cleaned_data['start_date'] serviceDetail.end_date = form.cleaned_data['end_date'] serviceDetail.save() if serviceDetail.actual_amount <= 0: if checkOutSuccess(request, serviceDetail=serviceDetail): initParam['msg'] = _('The payment is successful.') initParam['success_page'] = '/'.join([ common.getHttpHeader(request), 'query/app-detail', str(app.id) ]) initParam['success_page_msg'] = 'App Detail' log.info( _('Seller %(param1)s has paid service fee - %(param2)s with service detail id %(param3)s.' ) % { 'param1': request.user.username, 'param2': serviceDetail.actual_amount, 'param3': serviceDetail.id }) return render_to_response( 'payment/paypal_success.html', initParam, context_instance=RequestContext(request)) else: initParam['order_error'] = _( 'The payment is failed. Please payment again.') else: #Invoke payment method - payment for service detail initParam['serviceDetail_id'] = serviceDetail.id initParam['amount'] = serviceDetail.actual_amount initParam['DESC'] = 'Service fee on AppsWalk.' initParam[ 'PAYMENTREQUEST_0_DESC'] = 'Service fee for App %(param1)s of user %(param2)s on AppsWalk.' % { 'param1': app.app_name, 'param2': user.username } initParam['ITEMAMT'] = serviceDetail.actual_amount initParam['L_NAME0'] = 'Service fee on AppsWalk' initParam['L_DESC0'] = 'Service fee for App %(param1)s' % { 'param1': app.app_name } initParam['L_AMT0'] = serviceDetail.actual_amount initParam['L_QTY0'] = 1 initParam['gateway'] = 'paypal' #The needed operation method in payment. initParam['executeMethod'] = kwargs.get('executeMethod') #The back page, when payment has error. if request.session.get('back_page', None): del request.session['back_page'] if request.session.get('back_page_msg', None): del request.session['back_page_msg'] request.session['back_page'] = '/'.join([ common.getHttpHeader(request), 'seller/payment', str(app.id) ]) request.session['back_page_msg'] = 'Payment' #The success return page, when payment finish. if request.session.get('success_page', None): del request.session['success_page'] if request.session.get('success_page_msg', None): del request.session['success_page_msg'] request.session['success_page'] = '/'.join([ common.getHttpHeader(request), 'query/app-detail', str(app.id) ]) request.session['success_page_msg'] = 'App Detail' return paymentViews.payment(request, initParam=initParam) #Init data initParam['form'] = forms.ServiceDetailForm(instance=serviceDetail) return render_to_response('order/checkout.html', initParam, context_instance=RequestContext(request))
def checkout(request, *args, **kwargs): """checkout for service detail payment.""" initParam = {'begin_date': None} app_id = kwargs.get('app_id') service_id = kwargs.get('service_id') service_sn = kwargs.get('service_sn') initParam['select'] = request.POST.get('select') user = get_object_or_404(User, pk=request.user.id, username=request.user.username) app = get_object_or_404(appModels.App, pk=app_id, publisher_id=user.id) serviceDetail = get_object_or_404(models.ServiceDetail, pk=service_id, app_id=app_id, sn=service_sn) #Init data service_expiry_date = string.atoi(common.getSystemParam(key='service_expiry_date', default=31)) initParam['service_expiry_date'] = service_expiry_date acceptGateways = user.acceptgateway_set.filter(is_active=True, is_default=True) serviceDetails = models.ServiceDetail.objects.filter(app_id=app_id, is_payed=True, end_date__gte=datetime.datetime.now().strftime('%Y-%m-%d')).order_by('-pk') if serviceDetails: initParam['begin_date'] = serviceDetails[0].end_date serviceDetail.start_date = serviceDetails[0].end_date else: serviceDetail.start_date = datetime.datetime.now() serviceDetail.end_date = datetime.datetime.now() + datetime.timedelta(days=service_expiry_date) initParam['currency'] = app.currency.currency if acceptGateways: initParam['acceptGateway'] = acceptGateways[0] initParam['discount_rate'] = common.getSystemParam(key='discount_rate', default=1) if request.method == "POST": form = forms.ServiceDetailForm(request.POST) if form.is_valid(): days = (form.cleaned_data['end_date'] - form.cleaned_data['start_date']).days if serviceDetail.is_payed: initParam['order_error'] = _('The payment is paid.') elif len(acceptGateways) == 0: initParam['order_error'] = _('The gateway is required.Please choice gateway.') elif (initParam['begin_date'] and form.cleaned_data['start_date'] < initParam['begin_date']) or days != service_expiry_date: initParam['order_error'] = _('Service date is not correct.') else: form.save(commit=False) serviceDetail.start_date = form.cleaned_data['start_date'] serviceDetail.end_date = form.cleaned_data['end_date'] serviceDetail.save() if serviceDetail.actual_amount <= 0: if checkOutSuccess(request, serviceDetail=serviceDetail): initParam['msg'] = _('The payment is successful.') initParam['success_page'] = '/'.join([common.getHttpHeader(request), 'query/app-detail', str(app.id)]) initParam['success_page_msg'] = 'App Detail' log.info(_('Seller %(param1)s has paid service fee - %(param2)s with service detail id %(param3)s.') % {'param1': request.user.username, 'param2': serviceDetail.actual_amount, 'param3': serviceDetail.id}) return render_to_response('payment/paypal_success.html', initParam, context_instance=RequestContext(request)) else: initParam['order_error'] = _('The payment is failed. Please payment again.') else: #Invoke payment method - payment for service detail initParam['serviceDetail_id'] = serviceDetail.id initParam['amount'] = serviceDetail.actual_amount initParam['DESC'] = 'Service fee on AppsWalk.' initParam['PAYMENTREQUEST_0_DESC'] = 'Service fee for App %(param1)s of user %(param2)s on AppsWalk.' % {'param1':app.app_name, 'param2':user.username} initParam['ITEMAMT'] = serviceDetail.actual_amount initParam['L_NAME0'] = 'Service fee on AppsWalk' initParam['L_DESC0'] = 'Service fee for App %(param1)s' % {'param1':app.app_name} initParam['L_AMT0'] = serviceDetail.actual_amount initParam['L_QTY0'] = 1 initParam['gateway'] = 'paypal' #The needed operation method in payment. initParam['executeMethod'] = kwargs.get('executeMethod') #The back page, when payment has error. if request.session.get('back_page', None): del request.session['back_page'] if request.session.get('back_page_msg', None): del request.session['back_page_msg'] request.session['back_page'] = '/'.join([common.getHttpHeader(request), 'seller/payment', str(app.id)]) request.session['back_page_msg'] = 'Payment' #The success return page, when payment finish. if request.session.get('success_page', None): del request.session['success_page'] if request.session.get('success_page_msg', None): del request.session['success_page_msg'] request.session['success_page'] = '/'.join([common.getHttpHeader(request), 'query/app-detail', str(app.id)]) request.session['success_page_msg'] = 'App Detail' return paymentViews.payment(request, initParam=initParam) #Init data initParam['form'] = forms.ServiceDetailForm(instance=serviceDetail) return render_to_response('order/checkout.html', initParam, context_instance=RequestContext(request))
def payPalReturn(request, *args, **kwargs): """The PayPal method for payment verification.""" initParam = {} token = request.GET.get('token') payerID = request.GET.get('PayerID') initParam['token'] = token initParam['payerid'] = payerID if token and payerID: p = driver.PayPal() EC_RETURNURL = '/'.join( [common.getHttpHeader(request), 'payment/paypal_return']) EC_CANCELURL = '/'.join( [common.getHttpHeader(request), 'payment/paypal_cancel']) res_dict = p.GetExpressCheckoutDetailsInfo(EC_RETURNURL, EC_CANCELURL, token) state = p._get_value_from_qs(res_dict, 'ACK') if state in ["Success", "SuccessWithWarning"]: #Show the list of service detail to user. executeMethod = kwargs.pop('executeMethod', None) if executeMethod: gateway = request.session.get('gateway', None) if gateway: initParam['gateway'] = gateway serviceDetail, serviceItems, discount_rate = executeMethod( request, initParam=initParam) if serviceDetail and serviceItems: initParam['serviceDetail'] = serviceDetail initParam['serviceItems'] = serviceItems initParam['discount_rate'] = discount_rate return render_to_response( 'payment/paypal_return.html', initParam, context_instance=RequestContext(request)) else: log.error( _('Token %(param1)s, PayerID: %(param2)s, Execute method %(param3)s failed.' ) % { 'param1': token, 'param2': payerID, 'param3': executeMethod.__name__ }) else: log.error( _('Token %(param1)s, PayerID: %(param2)s. Gateway no exists in request.session.' ) % { 'param1': token, 'param2': payerID }) else: log.error( _('Token %(param1)s, PayerID: %(param2)s, ExecuteMethod does not exist.' ) % { 'param1': token, 'param2': payerID }) else: error = p._get_value_from_qs(res_dict, 'L_SHORTMESSAGE0') log.error( _('Token %(param1)s, PayerID: %(param2)s, %(param3)s.') % { 'param1': token, 'param2': payerID, 'param3': error }) else: log.error(_('Token or PayerID no exists.')) if request.session.get('gateway', None): del request.session['gateway'] success_page = request.session.get('success_page', None) back_page = request.session.get('back_page', None) if success_page: del request.session['success_page'] if back_page: del request.session['back_page'] error_msg = driver.GENERIC_PAYPAL_ERROR page_msg = request.session['back_page_msg'] return render_to_response('payment/paypal_cancel.html', { 'error_msg': error_msg, 'back_page': back_page, 'back_page_msg': page_msg }, context_instance=RequestContext(request)) else: error_msg = _('%(param1)s Please payment again.') % { 'param1': driver.GENERIC_PAYPAL_ERROR } return render_to_response('payment/paypal_error.html', {"error_msg": error_msg}, context_instance=RequestContext(request))
def pay(request, *args, **kwargs): initParam = kwargs.get('initParam') executeMethod = initParam.pop('executeMethod', None) currency = initParam.get('currency') id = initParam.get('txn_id') if currency and id: p = driver.PayPal() AP_RETURNURL = '/'.join([ 'https://', request.META.get('HTTP_HOST'), 'payment/paypal_ap_return' ]) AP_CANCELURL = '/'.join( [common.getHttpHeader(request), 'payment/paypal_cancel']) result = p.setAPCall(currency, AP_RETURNURL, AP_CANCELURL, 'PAY', initParam=initParam) if result['responseEnvelope.ack'][0] == 'Success': pay_key = result['payKey'][0] #The needed operation for verification later when pay return pay_key. if executeMethod: initParam['pay_key'] = pay_key if executeMethod(initParam=initParam): #payReturn will do operation by two session values. if request.session.get('pay_key', None): del request.session['pay_key'] request.session['pay_key'] = pay_key if request.session.get('gateway', None): del request.session['gateway'] request.session['gateway'] = 'paypal' #redirect PayPal pay website. redirect_url = p.paypal_ap_url(pay_key) return redirect(redirect_url) else: log.error( _('Transaction with id %(param1)s. Execute method %(param2)s failed.' ) % { 'param1': id, 'param2': executeMethod.__name__ }) else: log.error( _('Transaction with id %(param1)s. ExecuteMethod does not exist.' ) % {'param1': id}) else: log.error( _('Transaction with id %(param1)s. %(param2)s') % { 'param1': id, 'param2': str(result['error(0).message'][0]) }) else: log.error(_('Pay. Currency or Transaction ID no exists.')) success_page = request.session.get('success_page', None) back_page = request.session.get('back_page', None) if success_page: del request.session['success_page'] if back_page: del request.session['back_page'] error_msg = driver.GENERIC_PAYPAL_ERROR page_msg = request.session['back_page_msg'] return render_to_response('payment/paypal_cancel.html', { 'error_msg': error_msg, 'back_page': back_page, 'back_page_msg': page_msg }, context_instance=RequestContext(request)) else: error_msg = _('%(param1)s Please transaction again.') % { 'param1': driver.GENERIC_PAYPAL_ERROR } return render_to_response('payment/paypal_error.html', {"error_msg": error_msg}, context_instance=RequestContext(request))
def payment(request, *args, **kwargs): """Begin payment operation.""" initParam = kwargs.get('initParam') executeMethod = initParam.pop('executeMethod', None) amount = initParam.pop('amount') currency = initParam.pop('currency') id = initParam.get('serviceDetail_id') if amount and currency and id: p = driver.PayPal() EC_RETURNURL = '/'.join( [common.getHttpHeader(request), 'payment/paypal_return']) EC_CANCELURL = '/'.join( [common.getHttpHeader(request), 'payment/paypal_cancel']) result = p.SetExpressCheckout(amount, currency, EC_RETURNURL, EC_CANCELURL, initParam=initParam) if result: #The needed operation for verification later when payment return token.. if executeMethod: initParam['token'] = p.token if executeMethod(request, initParam=initParam): if request.session.get('gateway', None): del request.session['gateway'] request.session['gateway'] = initParam.get('gateway') redirect_url = p.paypal_url() return redirect(redirect_url) else: log.error( _('ServiceDetail with id %(param1)s. Execute method %(param2)s failed.' ) % { 'param1': id, 'param2': executeMethod.__name__ }) else: log.error( _('ServiceDetail with id %(param1)s. ExecuteMethod does not exist.' ) % {'param1': id}) else: log.error( _('ServiceDetail with id %(param1)s. %(param2)s') % { 'param1': id, 'param2': str(p.apierror) }) else: log.error( _('payment. Amount or Currency or ServiceDetail ID no exists.')) success_page = request.session.get('success_page', None) back_page = request.session.get('back_page', None) if success_page: del request.session['success_page'] if back_page: del request.session['back_page'] error_msg = driver.GENERIC_PAYPAL_ERROR page_msg = request.session['back_page_msg'] return render_to_response('payment/paypal_cancel.html', { 'error_msg': error_msg, 'back_page': back_page, 'back_page_msg': page_msg }, context_instance=RequestContext(request)) else: error_msg = _('%(param1)s Please payment again.') % { 'param1': driver.GENERIC_PAYPAL_ERROR } return render_to_response('payment/paypal_error.html', {"error_msg": error_msg}, context_instance=RequestContext(request))
def onePriceBuy(request, *args, **kwargs): """ Buyer pay by clicking button 'Buy It Now with 10 USD' in app detail page. Note: url include app_id, and publisher_id, because of preventing user to cheat. """ initParam = {} app_id = kwargs.get('app_id') publisher_id = kwargs.get('publisher_id') app = get_object_or_404(appModels.App, pk=app_id, publisher_id=publisher_id, status=2) transactions = models.Transaction.objects.filter(app_id=app.id, seller_id=publisher_id, buyer_id=request.user.id, status=1) if transactions: transaction = transactions[0] else: transaction = models.Transaction() transaction.app = app transaction.seller = app.publisher transaction.status = 1 transaction.is_active = False transaction.buyer = request.user transaction.price = app.one_price transaction.buy_type = 1 paid_expiry_date = string.atoi(common.getSystemParam(key='paid_expiry_date', default=7)) transaction.end_time = datetime.datetime.now() + datetime.timedelta(days=paid_expiry_date) transaction.save() #Log transaction transactionsLog = models.TransactionLog() transactionsLog.transaction = transaction transactionsLog.app = transaction.app transactionsLog.status = transaction.status transactionsLog.buyer = transaction.buyer transactionsLog.price = transaction.price transactionsLog.buy_type = transaction.buy_type transactionsLog.save() initParam['transaction'] = transaction initParam['page_source'] = 'one-price' if transaction.end_time > datetime.datetime.now(): initParam['time_remaining'] = time.mktime(time.strptime(transaction.end_time.strftime('%Y-%m-%d %H:%M:%S'), '%Y-%m-%d %H:%M:%S')) else: initParam['time_remaining'] = "Deal Closed" initParam['paid_expiry'] = True if request.method == 'POST': #Buyer credit point judge for bidding. min_cp = common.getSystemParam(key='min_cp_for_bid', default=50) cp = creditViews.getUserCreditPoint(user=request.user) if cp == -1 or cp < string.atoi(min_cp): initParam['error_msg'] = _('You are not allowed to buy, because your credit points is too low.') else: #Buyser pay for app. txn_fee_pct = string.atof(common.getSystemParam(key='txn_fee_pct', default=0.01)) initParam['currency'] = app.currency.currency initParam['appsWalk_account'] = settings.APPSWALK_ACCOUNT initParam['gateway'] = 'paypal' gateways = paymentModels.Gateway.objects.filter(name__iexact=initParam.get('gateway')) acceptGateways = paymentModels.AcceptGateway.objects.filter(user_id=transaction.seller.id, type_id=gateways[0].id, is_active=True) initParam['seller_account'] = acceptGateways[0].value initParam['appsWalk_amount'] = app.one_price * txn_fee_pct initParam['seller_amount'] = app.one_price * (1 - txn_fee_pct) initParam['txn_id'] = transaction.id #The needed operation method in pay. initParam['executeMethod'] = updateTransaction #The back page, when pay has error. if request.session.get('back_page', None): del request.session['back_page'] if request.session.get('back_page_msg', None): del request.session['back_page_msg'] request.session['back_page'] = '/'.join([common.getHttpHeader(request), 'query/app-detail', str(app.id)]) request.session['back_page_msg'] = 'App Detail' #The success return page, when pay finish. if request.session.get('success_page', None): del request.session['success_page'] if request.session.get('success_page_msg', None): del request.session['success_page_msg'] request.session['success_page'] = '/'.join([common.getHttpHeader(request), 'transaction/trade-action/buy', str(app.id), str(request.user.id)]) request.session['success_page_msg'] = 'Trade Action' return paymentViews.pay(request, initParam=initParam) return render_to_response('transaction/one_price_buy.html', initParam, context_instance=RequestContext(request))