Пример #1
0
def pull_session_to_pc(request):
    """
    在pc端设置session为手机端的
    """
    if request.GET.get("act") == "get_code":
        # 获取二维码请求
        auth_token = request.session["auth_token"]
        code_to_touch_uri = tm_url.as_uri(reverse_lazy(code_touch, urlconf=None, args=(auth_token,), kwargs={}))
        return HttpResponse(code.gen_code(data=code_to_touch_uri))
    elif request.method == "POST":
        # 前端请求查询数据
        auth_token = request.GET.get("ask")
        if auth_token is None:
            return HttpResponse("invalid request")
        session_dict = cache.get(auth_token)
        if not session_dict:
            # 没有查到数据, 让前端页面继续等待
            return HttpResponse(json.dumps({"success": False, "info": "can't get the session_dict"}))
        else:
            # 查到数据则返回
            for k, v in session_dict.items():
                request.session[k] = v
            request.session.save()
            return HttpResponse(
                json.dumps({"success": True, "info": u"session已经成功同步", "session": request.session.items()})
            )
    auth_token = com.create_nonce_str()
    request.session["auth_token"] = auth_token
    request.session.save()
    return render(
        request, "tmweixin/session.html", {"session": request.session.items(), "redirect": "", "auth_token": auth_token}
    )
Пример #2
0
 def __init__(self, body, out_trade_no, total_fee, spbill_create_ip,
              notify_url, trade_type, **kwargs):
     super(UnifiedOrder, self).__init__()
     assert trade_type in ["JSAPI", "NATIVE", "APP", "WAP"], u"trade_type error"
     params = {
         "appid": wx_conf.app_id,
         "mch_id": wx_conf.mch_id,
         "out_trade_no": out_trade_no,
         "body": body,
         "total_fee": total_fee,
         "spbill_create_ip": spbill_create_ip,
         "notify_url": notify_url,
         "trade_type": trade_type
     }
     # 根据trade_type 验证参数完备性
     try:
         if params["trade_type"] == "NATIVE":
             params["product_id"] = kwargs["product_id"]
         elif params["trade_type"] == "JSAPI":
             params["openid"] = kwargs["openid"]
     except KeyError as e:
         raise AttributeError(u"参数不足")
     # 如果指定了可选参数则添加
     for attr in ["limit_pay", "goods_tag", "time_start", "time_expire",
                  "fee_type", "attach", "detail", "device_info"]:
         if attr in kwargs:
             params[attr] = kwargs[attr]
     # 创建随机串和签名
     params["nonce_str"] = com.create_nonce_str()
     params["sign"] = create_sign(params, key=wx_conf.key)
     self._params = params
     self.post_data = self._params
Пример #3
0
 def __init__(self, out_refund_no, total_fee, refund_fee, op_user_id=None,
              transaction_id=None, out_trade_no=None, **kwargs):
     """
     :param out_refund_no: 商户退款单号
     :param total_fee: 总金额
     :param refund_fee: 退款金额
     :param op_user_id: 操作员id(默认为商户号)
     :param transaction_id: 微信订单号
     :param out_trade_no: 商户订单号
     :param kwargs: 其他参数
     :param device_info: 商户自定义终端设备号,如门店号
     :param refund_fee_type: 退款货币类型,默认(CNY)
     > 商户订单号,微信订单号必须至少指定一个
     """
     super(Refund, self).__init__()
     if not any([transaction_id, out_trade_no]):
         raise AttributeError(u"transaction_id , out_trade_no must all be None")
     op_user_id = op_user_id or wx_conf.mch_id
     self._params = {
         "appid": wx_conf.app_id,
         "mch_id": wx_conf.mch_id,
         "nonce_str": com.create_nonce_str(),
         "op_user_id": op_user_id,
         "total_fee": total_fee,
         "out_refund_no": out_refund_no,
         "refund_fee": refund_fee
     }
     if transaction_id:
         self._params["transaction_id"] = transaction_id
     elif out_trade_no:
         self._params["out_trade_no"] = out_trade_no
     self._params = self.load_kwargs(self.post_data, ["device_info", "refund_fee_type"], kwargs)
     self._params["sign"] = create_sign(self._params, key=wx_conf.key)
     self.post_data = self._params
Пример #4
0
 def __init__(self, out_trade_no=None):
     super(CloseOrder, self).__init__()
     self._params = {
         "appid": wx_conf.app_id,
         "mch_id": wx_conf.mch_id,
         "nonce_str": com.create_nonce_str(),
         "out_trade_no": out_trade_no
         }
     self._params["sign"] = create_sign(self._params, key=wx_conf.key)
     self.post_data = self._params
Пример #5
0
 def __init__(self, bill_date_str, bill_type=None, **kwargs):
     super(DownloadBill, self).__init__()
     if bill_type not in ["SUCCESS", "REFUND", "REVOKED", "ALL"]:
         raise AttributeError(u"not supported bill_type")
     self.bill_type = bill_type or "ALL"
     self.post_data = {
         "appid": wx_conf.app_id,
         "mch_id": wx_conf.mch_id,
         "nonce_str": com.create_nonce_str(),
         "bill_date": bill_date_str,
         "bill_type": self.bill_type
     }
     self.post_data = self.load_kwargs(self.post_data, ["device_info"], kwargs)
     self.post_data["sign"] = create_sign(self.post_data, key=wx_conf.key)
Пример #6
0
 def __init__(self, transaction_id=None, out_trade_no=None):
     super(OrderQuery, self).__init__()
     if all([transaction_id is None, out_trade_no is None]):
         raise ValueError(u"out_trade_no and transaction_id is None at same time")
     self._params = {
         "appid": wx_conf.app_id,
         "mch_id": wx_conf.mch_id,
         "nonce_str": com.create_nonce_str(),
     }
     if transaction_id:
         self._params["transaction_id"] = transaction_id
     elif out_trade_no:
         self._params["out_trade_no"] = out_trade_no
     self._params["sign"] = create_sign(self._params, key=wx_conf.key)
     self.post_data = self._params
Пример #7
0
 def __init__(self, transaction_id=None, out_trade_no=None, out_refund_no=None, refund_id=None, **kwargs):
     super(RefundQuery, self).__init__()
     if not any([transaction_id, out_refund_no, out_trade_no, refund_id]):
         raise AttributeError(u"refund_id、out_refund_no、out_trade_no、transaction_id四个参数必填一个")
     self.post_data = {
         "appid": wx_conf.app_id,
         "mch_id": wx_conf.mch_id,
         "nonce_str": com.create_nonce_str(),
     }
     m = [transaction_id, out_refund_no, out_trade_no, refund_id]
     k = "transaction_id, out_refund_no, out_trade_no, refund_id".split(",")
     for name, value in zip(k, m):
         if value:
             self.post_data[name] = value
     self.post_data = self.load_kwargs(self.post_data, ["device_info"], kwargs)
     self.post_data["sign"] = create_sign(self.post_data, key=wx_conf.key)
Пример #8
0
 def __init__(self, openid, amount, partner_trade_no, desc,
              check_name=None, re_user_name=None, create_ip="127.0.0.1"):
     super(Pay, self).__init__()
     check_name = check_name or self.OPTION_CHECK
     if all([re_user_name is None, check_name in [self.FORCE_CHECK, self.OPTION_CHECK]]):
         raise AttributeError(u"force_check and option_check require re_user_name")
     defaults = {
         "mch_appid": wx_conf.app_id,
         "mchid": wx_conf.mch_id,
         "nonce_str": com.create_nonce_str(),
         "partner_trade_no": partner_trade_no,
         "openid": openid,
         "check_name": check_name,
         "amount": amount,
         "desc": desc,
         "spbill_create_ip": create_ip,
     }
     if re_user_name:
         defaults["re_user_name"] = re_user_name
     defaults["sign"] = create_sign(defaults, wx_conf.key)
     self.post_data = defaults