def refund_status(self, channel, refund_no): if not self.bc_app_id or not self.bc_app_secret: return self.param_miss('bc_app_id, bc_app_secret') if not channel: return self.param_miss('channel') if not channel == 'WX': return self.param_invalid('channel', '目前本接口只支持WX') if not refund_no: return self.param_miss('refund_no') pay_data = {} pay_data['channel'] = channel pay_data['app_id'] = self.bc_app_id timestamp = long(time.time()) * 1000 pay_data['timestamp'] = timestamp pay_data['app_sign'] = self.bc_sign(timestamp) if refund_no: pay_data['refund_no'] = refund_no data = {} data['para'] = pay_data hCode, value = httpGet(self.random_server() + '/' + self.api_version + '/' + self.refund_status_url + '?' + urllib.urlencode(data)) if hCode: return json.loads(value) else: return runtime_error()
def refund_status(self, channel, refund_no): if not self.bc_app_id or not self.bc_app_secret : return self.param_miss('bc_app_id, bc_app_secret') if not channel: return self.param_miss('channel') if not channel == 'WX': return self.param_invalid('channel', '目前本接口只支持WX') if not refund_no: return self.param_miss('refund_no') pay_data = {} pay_data['channel'] = channel pay_data['app_id'] = self.bc_app_id timestamp = long(time.time()) * 1000 pay_data['timestamp'] = timestamp pay_data['app_sign'] = self.bc_sign(timestamp) if refund_no: pay_data['refund_no'] = refund_no data = {} data['para'] = pay_data hCode, value = httpGet(self.random_server() + '/' + self.api_version + '/' + self.refund_status_url+ '?'+ urllib.urlencode(data)) if hCode: return json.loads(value) else: return runtime_error()
def bc_ali_web_pay(self, subject, total_fee, out_trade_no, return_url, show_url=None, anti_phishing_key=None, body=None): awp = {} awp['appId'] = self.bc_app_id awp['appSign'] = self.bc_sign() awp['subject'] = subject awp['total_fee'] = total_fee awp['out_trade_no'] = out_trade_no awp['return_url'] = return_url if show_url: awp['show_url'] = show_url if anti_phishing_key: awp['anti_phishing_key'] = anti_phishing_key if body: awp['body'] = body data = {} data['para'] = json.dumps(awp) hCode, value = httpGet('https://' + self.bc_servers[self.server_index] + '/' + self.api_version + '/' + self.ali_web_url + '?' + urllib.urlencode(data)) #hCode, value = httpGet('http://localhost:8080/1/pay/ali/websign?' + urllib.urlencode(data)) if hCode: return json.loads(value) return None
def bc_red_pack_extra(self, mch_billno, re_openid, nick_name, send_name, wishing, act_name, remark, total_amount=None, countPerUser=None, minA=None, maxA=None, probability=None, period=None): pp_data = {} pp_data['appId'] = self.bc_app_id pp_data['appSign'] = self.bc_sign() pp_data['mch_billno'] = mch_billno pp_data['re_openid'] = re_openid if total_amount: pp_data['total_amount'] = total_amount pp_data['nick_name'] = nick_name pp_data['send_name'] = send_name pp_data['wishing'] = wishing pp_data['remark'] = remark pp_data['act_name'] = act_name if countPerUser: pp_data['count_per_user'] = countPerUser if minA: pp_data['min'] = minA if maxA: pp_data['max'] = maxA if probability: pp_data['probability'] = probability if period: pp_data['period'] = period params = json.dumps(pp_data) data = {} data['para'] = params hCode, value = httpGet(random_server() + '/' + self.api_version + '/' + self.wx_red_extra_url+ '?'+ urllib.urlencode(data)) #hCode, value = httpGet('http://127.0.0.1:8080/1/pay/wxmp/redPackExtra?' + urllib.urlencode(data)) if hCode : return json.loads(value) return None
def fetch_open_id(self, code): if not code: print 'need to login' return False, None url = self.create_fetch_open_id_url(code) hCode, hValue = httpGet(url) if hCode: return True, hValue else: return False, None
def fetch_open_id(self, code): if not code : print 'need to login' return False, None url = self.create_fetch_open_id_url(code) hCode, hValue = httpGet(url) if hCode : return True, json.loads(hValue)['openid'] else: return False, None
def query_refund(self, channel=None, bill_no=None, refund_no=None, start_time=None, end_time=None, skip=None, limit=None): if not self.bc_app_id or not self.bc_app_secret: return self.param_miss('bc_app_id, bc_app_secret') if channel and not channel in self.query_channels: return self.param_invalid('channel', '应该在' + str(self.query_channels) + '中') pay_data = {} if channel: pay_data['channel'] = channel pay_data['app_id'] = self.bc_app_id timestamp = long(time.time()) * 1000 pay_data['timestamp'] = timestamp pay_data['app_sign'] = self.bc_sign(timestamp) if refund_no: pay_data['refund_no'] = refund_no if bill_no: pay_data['bill_no'] = bill_no if start_time: pay_data['start_time'] = start_time if end_time: pay_data['end_time'] = end_time if not skip: skip = 0 if not limit: limit = 10 pay_data['skip'] = skip pay_data['limit'] = limit data = {} data['para'] = pay_data hCode, value = httpGet(self.random_server() + '/' + self.api_version + '/' + self.refund_query_url + '?' + urllib.urlencode(data)) if hCode: return json.loads(value) else: return self.runtime_error()
def bc_prepare_nativeapi(self, body, out_trade_no, total_fee): pp_data = {} pp_data['appId'] = self.bc_app_id pp_data['appSign'] = self.bc_sign() pp_data['trade_type'] = self.wx_native_type pp_data['body'] = body pp_data['out_trade_no'] = out_trade_no pp_data['total_fee'] = total_fee params = json.dumps(pp_data) data = {} data['para'] = params hCode, value = httpGet('https://' + self.bc_servers[self.server_index] + '/' + self.api_version + '/' + self.prepare_url + '?'+ urllib.urlencode(data)) if hCode : return json.loads(value) return None
def bc_un_web_pay(self, orderId, traceId, txnAmt, orderDesc, frontUrl): awp = {} awp['appId'] = self.bc_app_id awp['appSign'] = self.bc_sign() awp['orderId'] = orderId awp['traceId'] = traceId awp['txnAmt'] = txnAmt awp['orderDesc'] = orderDesc awp['frontUrl'] = frontUrl data={} data['para'] = awp hCode, value = httpGet('https://' + self.bc_servers[self.server_index] + '/' + self.api_version + '/' + self.un_web_url + '?'+ urllib.urlencode(data)) #hCode, value = httpGet('http://localhost:8080/1/pay/un/websign?' + urllib.urlencode(data)) if hCode: return json.loads(value) return None
def bc_red_pack_extra(self, mch_billno, re_openid, nick_name, send_name, wishing, act_name, remark, total_amount=None, countPerUser=None, minA=None, maxA=None, probability=None, period=None): pp_data = {} pp_data['appId'] = self.bc_app_id pp_data['appSign'] = self.bc_sign() pp_data['mch_billno'] = mch_billno pp_data['re_openid'] = re_openid if total_amount: pp_data['total_amount'] = total_amount pp_data['nick_name'] = nick_name pp_data['send_name'] = send_name pp_data['wishing'] = wishing pp_data['remark'] = remark pp_data['act_name'] = act_name if countPerUser: pp_data['count_per_user'] = countPerUser if minA: pp_data['min'] = minA if maxA: pp_data['max'] = maxA if probability: pp_data['probability'] = probability if period: pp_data['period'] = period params = json.dumps(pp_data) data = {} data['para'] = params hCode, value = httpGet(random_server() + '/' + self.api_version + '/' + self.wx_red_extra_url + '?' + urllib.urlencode(data)) #hCode, value = httpGet('http://127.0.0.1:8080/1/pay/wxmp/redPackExtra?' + urllib.urlencode(data)) if hCode: return json.loads(value) return None
def bc_ali_qr_pay(self, method, biz_data, qrcode): awp = {} awp['appId'] = self.bc_app_id awp['appSign'] = self.bc_sign() awp['method'] = method if biz_data: awp['biz_data'] = biz_data if qrcode: awp['qrcode'] = qrcode data = {} data['para'] = awp hCode, value = httpGet('https://' + self.bc_servers[self.server_index] + '/' + self.api_version + '/' + self.ali_qr_url + '?'+ urllib.urlencode(data)) #hCode, value = httpGet('http://localhost:8080/1/pay/ali/qrsign?' + urllib.urlencode(data)) if hCode: return json.loads(value) return None
def bc_prepare_nativeapi(self, body, out_trade_no, total_fee): pp_data = {} pp_data['appId'] = self.bc_app_id pp_data['appSign'] = self.bc_sign() pp_data['trade_type'] = self.wx_native_type pp_data['body'] = body pp_data['out_trade_no'] = out_trade_no pp_data['total_fee'] = total_fee params = json.dumps(pp_data) data = {} data['para'] = params hCode, value = httpGet('https://' + self.bc_servers[self.server_index] + '/' + self.api_version + '/' + self.prepare_url + '?' + urllib.urlencode(data)) if hCode: return json.loads(value) return None
def bc_un_web_pay(self, orderId, traceId, txnAmt, orderDesc, frontUrl): awp = {} awp['appId'] = self.bc_app_id awp['appSign'] = self.bc_sign() awp['orderId'] = orderId awp['traceId'] = traceId awp['txnAmt'] = txnAmt awp['orderDesc'] = orderDesc awp['frontUrl'] = frontUrl data = {} data['para'] = awp hCode, value = httpGet('https://' + self.bc_servers[self.server_index] + '/' + self.api_version + '/' + self.un_web_url + '?' + urllib.urlencode(data)) #hCode, value = httpGet('http://localhost:8080/1/pay/un/websign?' + urllib.urlencode(data)) if hCode: return json.loads(value) return None
def query_refund(self, channel = None, bill_no = None, refund_no = None, start_time = None, end_time = None, skip = None, limit = None): if not self.bc_app_id or not self.bc_app_secret : return self.param_miss('bc_app_id, bc_app_secret') if channel and not channel in self.query_channels: return self.param_invalid('channel', '应该在' + str(self.query_channels) + '中') pay_data = {} if channel: pay_data['channel'] = channel pay_data['app_id'] = self.bc_app_id timestamp = long(time.time()) * 1000 pay_data['timestamp'] = timestamp pay_data['app_sign'] = self.bc_sign(timestamp) if refund_no: pay_data['refund_no'] = refund_no if bill_no: pay_data['bill_no'] = bill_no if start_time: pay_data['start_time'] = start_time if end_time: pay_data['end_time'] = end_time if not skip: skip = 0 if not limit: limit = 10 pay_data['skip'] = skip pay_data['limit'] = limit data = {} data['para'] = pay_data hCode, value = httpGet(self.random_server() + '/' + self.api_version + '/' + self.refund_query_url+ '?'+ urllib.urlencode(data)) if hCode: return json.loads(value) else: return self.runtime_error()
def bc_ali_qr_pay(self, method, biz_data, qrcode): awp = {} awp['appId'] = self.bc_app_id awp['appSign'] = self.bc_sign() awp['method'] = method if biz_data: awp['biz_data'] = biz_data if qrcode: awp['qrcode'] = qrcode data = {} data['para'] = awp hCode, value = httpGet('https://' + self.bc_servers[self.server_index] + '/' + self.api_version + '/' + self.ali_qr_url + '?' + urllib.urlencode(data)) #hCode, value = httpGet('http://localhost:8080/1/pay/ali/qrsign?' + urllib.urlencode(data)) if hCode: return json.loads(value) return None
def bc_red_pack(self, mch_billno, re_openid, total_amount, nick_name, send_name, wishing, act_name, remark): pp_data = {} pp_data['appId'] = self.bc_app_id pp_data['appSign'] = self.sign() pp_data['mch_billno'] = mch_billno pp_data['re_openid'] = re_openid pp_data['total_amount'] = total_amount pp_data['nick_name'] = nick_name pp_data['send_name'] = send_name pp_data['wishing'] = wishing pp_data['remark'] = remark pp_data['act_name'] = act_name params = json.dumps(pp_data) data = {} data['para'] = params hCode, value = httpGet(random_server() + '/' + self.api_version + '/' + self.wx_red_url + '?'+ urllib.urlencode(data)) #hCode, value = httpGet('http://127.0.0.1:8080/1/pay/wxmp/redPack?' + urllib.urlencode(data)) if hCode : return json.loads(value) return None
def bc_red_pack(self, mch_billno, re_openid, total_amount, nick_name, send_name, wishing, act_name, remark): pp_data = {} pp_data['appId'] = self.bc_app_id pp_data['appSign'] = self.sign() pp_data['mch_billno'] = mch_billno pp_data['re_openid'] = re_openid pp_data['total_amount'] = total_amount pp_data['nick_name'] = nick_name pp_data['send_name'] = send_name pp_data['wishing'] = wishing pp_data['remark'] = remark pp_data['act_name'] = act_name params = json.dumps(pp_data) data = {} data['para'] = params hCode, value = httpGet(random_server() + '/' + self.api_version + '/' + self.wx_red_url + '?' + urllib.urlencode(data)) #hCode, value = httpGet('http://127.0.0.1:8080/1/pay/wxmp/redPack?' + urllib.urlencode(data)) if hCode: return json.loads(value) return None
def bc_ali_web_pay(self, subject, total_fee, out_trade_no, return_url, show_url = None, anti_phishing_key = None, body = None): awp = {} awp['appId'] = self.bc_app_id awp['appSign'] = self.bc_sign() awp['subject'] = subject awp['total_fee'] = total_fee awp['out_trade_no'] = out_trade_no awp['return_url'] = return_url if show_url: awp['show_url'] = show_url if anti_phishing_key: awp['anti_phishing_key'] = anti_phishing_key if body: awp['body'] = body data = {} data['para'] = json.dumps(awp) hCode, value = httpGet('https://' + self.bc_servers[self.server_index] + '/' + self.api_version + '/' + self.ali_web_url + '?'+ urllib.urlencode(data)) #hCode, value = httpGet('http://localhost:8080/1/pay/ali/websign?' + urllib.urlencode(data)) if hCode: return json.loads(value) return None
def parseXmlUrl(template, url): xml = util.httpGet(url).read() return parseXml(template, xml)
<head> <title>OTMI: Nature</title> <dateCreated>Fri, 15 Dec 2006 11:00:00 +0000</dateCreated> <dateModified>Fri, 15 Dec 2006 11:00:00 +0000</dateModified> <ownerName>OTMI (Open Text Mining Interface)</ownerName> <ownerEmail>[email protected]</ownerEmail> </head> <body> <outerOutline text="test"> <outline simplexmlparse:count="*" type="opml" text="Nature 433(7021)" opmlUri="http://www.nature.com/nature/journal/v433/n7021/otmi/otmi-manifest.opml" gzipUri="http://www.nature.com/nature/journal/v433/n7021/otmi/otmi-contents.tar.gz" /> </outerOutline> </body> </opml>""" # ---- MAIN ------ url = "http://www.nature.com/otmi/journals.opml" opml = util.parseXmlUrl(TEMPLATE, url) for outline in opml.body.outline: url= outline.opmlUri opmlStr = util.httpGet(url).read() # hack! workaround for simplexmlparse's limitations # this can easily break but will trigger an exception if it does one day opmlStr = opmlStr.replace("<outline text=", "<outerOutline text=").replace("</outline>", "</outerOutline>") opmlStr = opmlStr.replace("<outline>", "<outerOutline>").replace("</outline>", "</outerOutline>") journalOpml = util.parseXml(template2, opmlStr) for o2 in journalOpml.body.outerOutline.outline: gzipUrl = o2.gzipUri print "downloading "+gzipUrl util.httpDownload(gzipUrl, "files/file.tar.gz") os.system("cd files; tar xvfz file.tar.gz")