def apply_signing(self, plan_id, contract_code, contract_display_account, notify_url,<EOL>version="<STR_LIT:1.0>", clientip=None, deviceid=None, mobile=None, email=None, qq=None,<EOL>request_serial=None, openid=None, creid=None, outerid=None):
timestamp = int(time.time())<EOL>if request_serial is None:<EOL><INDENT>request_serial = int(time.time() * <NUM_LIT:1000>)<EOL><DEDENT>data = {<EOL>"<STR_LIT>": self.appid,<EOL>"<STR_LIT>": self.mch_id,<EOL>"<STR_LIT>": self.sub_mch_id,<EOL>"<STR_LIT>": plan_id,<EOL>"<STR_LIT>": contract_code,<EOL>"<STR_LIT>": request_serial,<EOL>"<STR_LIT>": contract_display_account,<EOL>"<STR_LIT>": notify_url,<EOL>"<STR_LIT:version>": version,<EOL>"<STR_LIT>": timestamp,<EOL>"<STR_LIT>": clientip,<EOL>"<STR_LIT>": deviceid,<EOL>"<STR_LIT>": mobile,<EOL>"<STR_LIT:email>": email,<EOL>"<STR_LIT>": qq,<EOL>"<STR_LIT>": openid,<EOL>"<STR_LIT>": creid,<EOL>"<STR_LIT>": outerid,<EOL>}<EOL>data = optionaldict(data)<EOL>sign = calculate_signature(data, self._client.api_key)<EOL>data["<STR_LIT>"] = sign<EOL>return {<EOL>"<STR_LIT>": "<STR_LIT>".format(self._client.API_BASE_URL),<EOL>"<STR_LIT:data>": data<EOL>}<EOL>
申请签约 api

https://pay.weixin.qq.com/wiki/doc/api/pap.php?chapter=18_1&index=1

:param plan_id: 模板id 协议模板id，设置路径见开发步骤。
:param contract_code: 签约协议号 商户侧的签约协议号，由商户生成
:param contract_display_account: 用户账户展示名称 签约用户的名称，用于页面展示，页面样例可见案例与规范
:param notify_url: 回调通知url 用于接收签约成功消息的回调通知地址，以http或https开头。
:param version: 版本号 固定值1.0
:param request_serial: 可选 请求序列号 商户请求签约时的序列号，商户侧须唯一。序列号主要用于排序，不作为查询条件
:param clientip: 可选 客户端 IP 点分IP格式(客户端IP)
:param deviceid: 可选 设备ID android填imei的一次md5; ios填idfa的一次md5
:param mobile: 可选 手机号 用户手机号
:param email: 可选 邮箱地址 用户邮箱地址
:param qq: 可选 QQ号 用户QQ号
:param openid: 可选 微信open ID 用户微信open ID
:param creid: 可选 身份证号 用户身份证号
:param outerid: 可选 商户侧用户标识 用户在商户侧的标识
:return: 返回的结果数据字典