def get_prepay_id_by_unified_pay(self, **package): xml_data = """ <xml> <appid>{appid}</appid> <body><![CDATA[{body}]]></body> <mch_id>{mch_id}</mch_id> <nonce_str>{nonce_str}</nonce_str> <notify_url>{notify_url}</notify_url> <openid>{openid}</openid> <out_trade_no>{out_trade_no}</out_trade_no> <spbill_create_ip>{spbill_create_ip}</spbill_create_ip> <total_fee>{total_fee}</total_fee> <trade_type>{trade_type}</trade_type> <sign><![CDATA[{sign}]]></sign> </xml> """ package.update({ "appid": self.appid, "mch_id": self.partner_id, "nonce_str": generate_token(), }) # 根据参与签名参数得到签名 sign, _ = get_sign(package, pay_sign_key=self.pay_sign_key) package['sign'] = sign # 转换xml数据 xml_data = xml_data.format(**package) # 请求统一支付下单接口 json = self.post(JSPAY_URI, data=xml_data) if json["return_code"] == "SUCCESS" and json["result_code"] == "SUCCESS": return json['prepay_id'] return json
def jsconfig(self, **kwargs): """ 得到jsconfig 配置信息 """ json = { "noncestr": generate_token(), "jsapi_ticket": self.jsticket, "timestamp": self._now_time, "url": JSPARAMS_URI } # 根据参与签名参数得到签名 sign_type = 'SHA1' sign, _ = get_sign(json, sign_type=sign_type) json['sign'] = sign json["appid"] = self.appid return json, sign, sign_type
def js_pay_package(self, **kwargs): """ chooseWXPay 参数 timestamp: {{ wxpay.timestamp }}, // 参与签名key为timeStamp,必须与wxconfig中的时间戳一致 nonceStr: '{{ wxpay.nonceStr }}', // 支付签名随机串,不长于 32 位 package: '{{ wxpay.package }}', // 统一支付接口返回的prepay_id参数值,提交格式如:prepay_id=***) signType: '{{ wxpay.signType }}', // 签名方式,默认为'SHA1',使用新版支付需传入'MD5' """ # 更新默认参与签名参数 kwargs.update({ "appId": self.appid, "nonceStr": generate_token(), "signType": "MD5" }) # 根据参与签名参数得到签名 sign, _ = get_sign(kwargs, pay_sign_key=self.pay_sign_key) kwargs['paySign'] = sign return kwargs