コード例 #1
0
def pay_notify(request):
    result = '<xml><return_code><![CDATA[FAIL]]></return_code><return_msg><![CDATA[签名失败]]></return_msg></xml>'
    try:
        if request.method == 'POST':
            print 'pay notify post'
            try:
                req_data = json.loads(request.body)
            except:
                req_data = utils.xml_to_dict(request.body)
            req_sign = req_data['sign']
            _req_data = req_data.copy()
            _req_data.pop('sign')
            sign = utils.GetPaySign(_req_data)
            print req_data
            print req_sign, sign
            if req_sign == sign and req_data[
                    'return_code'] == 'SUCCESS' and req_data[
                        'result_code'] == 'SUCCESS':
                reward = Reward.objects.get(trade_no=req_data['out_trade_no'])
                reward.transaction_id = req_data['transaction_id']
                reward.state = 1
                reward.save()
                result = '<xml><return_code><![CDATA[SUCCESS]]></return_code><return_msg><![CDATA[OK]]></return_msg></xml>'
        else:
            print 'pay notify get'
    except Exception as err:
        logger.error(str(err))
    return HttpResponse(result)
コード例 #2
0
ファイル: weixin_pay.py プロジェクト: Jaccorot/weixin_pay
 def post_xml(self):
     sign = calculate_sign(self.params, self.api_key)
     xml = dict_to_xml(self.params, sign)
     print xml
     response = post_xml(self.url, xml)
     print '*' * 5, response.text
     return xml_to_dict(response.text)
コード例 #3
0
    def test_xml_to_dict(self):
        xml = "<a>xxx</a>"
        sign, result = xml_to_dict(xml)
        self.assertEqual(sign, None)
        self.assertEqual(result, None)

        xml = "<xml><a>xxx</a></xml>"
        sign, result = xml_to_dict(xml)
        self.assertEqual(sign, None)
        self.assertEqual(len(result), 1)
        self.assertEqual(result["a"], "xxx")

        xml = "<xml><a>xxx</a><b>yyy</b></xml>"
        sign, result = xml_to_dict(xml)
        self.assertEqual(len(result), 2)
        self.assertEqual(result["a"], "xxx")
        self.assertEqual(result["b"], "yyy")

        xml = "<xml><a>xxx</a><b>yyy</b><c><![CDATA[zzz]]></c></xml>"
        sign, result = xml_to_dict(xml)
        self.assertEqual(len(result), 3)
        self.assertEqual(result["a"], "xxx")
        self.assertEqual(result["b"], "yyy")
        self.assertEqual(result["c"], "zzz")

        xml = """<xml><return_code><![CDATA[SUCCESS]]></return_code>
<return_msg><![CDATA[OK]]></return_msg>
<appid><![CDATA[wx12233445566778899]]></appid>
<mch_id><![CDATA[12345678]]></mch_id>
<nonce_str><![CDATA[Sv9ATOOBtYWvtUQs]]></nonce_str>
<sign><![CDATA[0C638718BE0316E9B16E57DC869D2CD1]]></sign>
<result_code><![CDATA[SUCCESS]]></result_code>
<prepay_id><![CDATA[wx20141117135919f494cdaadb0287308957]]></prepay_id>
<trade_type><![CDATA[NATIVE]]></trade_type>
<device_info><![CDATA[]]></device_info>
<code_url><![CDATA[weixin://wxpay/bizpayurl?sr=GnZnlWr]]></code_url></xml>"""

        sign, result = xml_to_dict(xml)
        self.assertEqual(sign, "0C638718BE0316E9B16E57DC869D2CD1")
        self.assertEqual(len(result), 9)
        self.assertEqual(result["return_code"], "SUCCESS")
        self.assertEqual(result["return_msg"], "OK")
        self.assertEqual(result["result_code"], "SUCCESS")
        self.assertEqual(result["code_url"],
                         "weixin://wxpay/bizpayurl?sr=GnZnlWr")
        self.assertEqual(result.get("device_info", None), None)
コード例 #4
0
ファイル: tests.py プロジェクト: KururuSouchou/weixin_pay
    def test_xml_to_dict(self):
        xml = "<a>xxx</a>"
        sign, result = xml_to_dict(xml)
        self.assertEqual(sign, None)
        self.assertEqual(result, None)

        xml = "<xml><a>xxx</a></xml>"
        sign, result = xml_to_dict(xml)
        self.assertEqual(sign, None)
        self.assertEqual(len(result), 1)
        self.assertEqual(result["a"], "xxx")

        xml = "<xml><a>xxx</a><b>yyy</b></xml>"
        sign, result = xml_to_dict(xml)
        self.assertEqual(len(result), 2)
        self.assertEqual(result["a"], "xxx")
        self.assertEqual(result["b"], "yyy")

        xml = "<xml><a>xxx</a><b>yyy</b><c><![CDATA[zzz]]></c></xml>"
        sign, result = xml_to_dict(xml)
        self.assertEqual(len(result), 3)
        self.assertEqual(result["a"], "xxx")
        self.assertEqual(result["b"], "yyy")
        self.assertEqual(result["c"], "zzz")

        xml = """<xml><return_code><![CDATA[SUCCESS]]></return_code>
<return_msg><![CDATA[OK]]></return_msg>
<appid><![CDATA[wx12233445566778899]]></appid>
<mch_id><![CDATA[12345678]]></mch_id>
<nonce_str><![CDATA[Sv9ATOOBtYWvtUQs]]></nonce_str>
<sign><![CDATA[0C638718BE0316E9B16E57DC869D2CD1]]></sign>
<result_code><![CDATA[SUCCESS]]></result_code>
<prepay_id><![CDATA[wx20141117135919f494cdaadb0287308957]]></prepay_id>
<trade_type><![CDATA[NATIVE]]></trade_type>
<device_info><![CDATA[]]></device_info>
<code_url><![CDATA[weixin://wxpay/bizpayurl?sr=GnZnlWr]]></code_url></xml>"""

        sign, result = xml_to_dict(xml)
        self.assertEqual(sign, "0C638718BE0316E9B16E57DC869D2CD1")
        self.assertEqual(len(result), 9)
        self.assertEqual(result["return_code"], "SUCCESS")
        self.assertEqual(result["return_msg"], "OK")
        self.assertEqual(result["result_code"], "SUCCESS")
        self.assertEqual(result["code_url"], "weixin://wxpay/bizpayurl?sr=GnZnlWr")
        self.assertEqual(result.get("device_info", None), None)
コード例 #5
0
    def get_exercises(self):
        transaction = self.accesslink.training_data.create_transaction(
            user_id=self.config['user_id'],
            access_token=self.config['access_token'])
        if not transaction:
            print('No new exercises available.')
            return

        resource_urls = transaction.list_exercises()['exercises']

        for url in resource_urls:
            exercise_summary = transaction.get_exercise_summary(url)
            gpx_data = transaction.get_gpx(url)
            tcx_data = transaction.get_tcx(url)
            hr_data = transaction.get_heart_rate_zones(url)
            samples_data = transaction.get_available_samples(url)
            sample_data = transaction.get_samples(url)

            print('Exercise summary:')
            utils.pretty_print_json(exercise_summary)
            time = utils.polar_datetime_to_python_datetime_str(
                str(exercise_summary['start-time']))
            utils.save_json_to_file(
                exercise_summary, f'exercises_data/summary_data_{time}.json')
            if gpx_data:  # not empty dict. If there is no data, this variable will have '{}' value
                utils.save_json_to_file(
                    utils.xml_to_dict(gpx_data),
                    f'exercises_data/gpx_data_{time}.json')
            if tcx_data:
                utils.save_json_to_file(
                    utils.xml_to_dict(tcx_data),
                    f'exercises_data/tcx_data_{time}.json')
            if hr_data:
                utils.save_json_to_file(hr_data,
                                        f'exercises_data/hr_data_{time}.json')
            if samples_data:
                utils.save_json_to_file(
                    samples_data, f'exercises_data/samples_data_{time}.json')
            if sample_data:
                utils.save_json_to_file(
                    sample_data, f'exercises_data/sample_data_{time}.json')

        transaction.commit()
コード例 #6
0
 def post_xml(self):
     sign = calculate_sign(self.params, self.api_key)
     xml = dict_to_xml(self.params, sign)
     response = post_xml(self.url, xml)
     return xml_to_dict(response.text)