当前位置:文档之家› 在线支付技术设计文档(修改版)

在线支付技术设计文档(修改版)

在线支付技术设计文档以下是关于支付宝接口的所有东西,包括支付宝接口需要的参数,一些通用规则、特殊用途等。

一.结构a) 一般由两部分组成,接入部分与通知返回部分。

接入部分即为传递参数等信息组合成超级链接,并用该链接来进行跳转。

通知返回部分则是支付宝服务器对该笔订单处理完毕后,通知与返回该笔订单的详细信息到商户服务器,商户服务器接收到后,并对其进行数据处理。

b) 以实物标准双接口的程序为例。

接入部分的页面文件包含:配置页alipayapi.jsp、程序入口页index.jsp、服务器异步通知页notify_url.jsp 以及页面跳转同步通知页return_url.jsp。

通知返回部分的页面文件包含:基础配置类文件AlipayConfig.java、支付宝接口公用函数类文件AlipayCore.java、支付宝通知处理类AlipayNotify.java、支付宝各接口请求提交类文件AlipaySubmit.java、支付宝自定义订单类文件UtilDate.java、MD5签名类文件MD5.java、支付宝HttpClient处理类文件HttpProtocolHandler.java 、支付宝HttpClient 请求类文件、支付宝HttpClient返回类文件HttpResponse.java、支付宝HttpClient返回的结果字符方式类文件。

这里大家可以一目了然,MD5加密方法类与方法详细页不论是哪部分都有被调用,因此AlipayCore.java文件可视为核心代码部分,c) 详细介绍1.AlipayCore.javapublic static Map paraFilter(Map<String, String> sArray)功能:除去数组中的空值和签名参数输入:Map<String, String> sArray 要签名的数组输出:Map<String, String> 去掉空值与签名参数后的新签名参数组。

public static String createLinkString(Map<String, String> params)功能:把数组所有元素,按照“参数=参数值”的模式用“&”字符拼接成字符串。

输入:Map<String, String> params 需要拼接的数组输出:String 拼接完成以后的字符串public static void logResult(String sWord)功能:写日志,方便测试(看网站需求,也可以改成存入数据库)输入:String sWord 要写入日志里的文本内容public static String getAbstract(String strFilePath, Stringfile_digest_type) throws IOException功能:生成文件摘要输入:String strFilePath 文件路径String file_digest_type 摘要算法输出:String 文件摘要结果2.MD5.javapublic static String sign(String text, String key, String input_charset)功能:MD5签名输入:String text 明文String key 私钥String input_charset 编码格式输出:String 签名结果public static boolean verify(String text, String sign, String key, String input_charset)功能:MD5验签名检查输入:String text 明文String sign 支付宝的签名值String key 私钥String input_charset 编码格式输出:boolean 签名结果3.AlipayNotify.javapublic static boolean verify(Map<String, String> params)功能:根据反馈回来的信息,生成签名结果输入:Map<String, String> Params 通知返回来的参数数组输出:boolean 验证结果private static boolean getSignVeryfy(Map<String, String> Params, String sign)功能:根据反馈回来的信息,验证签名输入:Map<String, String> Params 通知返回来的参数数组String sign 支付宝的签名值输出:boolean 签名结果private static String verifyResponse(String notify_id)功能:获取远程服务器ATN结果,验证返回URL输入:String notify_id 验证通知ID输出:String 验证结果private static String checkUrl(String urlvalue)功能:获取远程服务器ATN结果输入:String urlvalue 指定URL路径地址输出:String 服务器ATN结果字符串4.AlipaySubmit.javapublic static String buildRequestMysign(Map<String, String> sPara)功能:生成签名结果输入:Map<String, String> sPara 要签名的数组输出:String 签名结果private static Map<String, String> buildRequestPara(Map<String, String> sParaTemp)功能:生成要请求给支付宝的参数数组输入:Map<String, String> sParaTemp 请求前的参数数组输出:Map<String, String> 要请求的参数数组public static String buildRequest(Map<String, String> sParaTemp, String strMethod, String strButtonName)功能:建立请求,以表单HTML形式构造(默认)输入:Map<String, String> sParaTemp 请求参数数组String strMethod 提交方式。

两个值可选:post、getString strButtonName 确认按钮显示文字输出:String 提交表单HTML文本public static String buildRequest(Map<String, String> sParaTemp, String strMethod, String strButtonName, String strParaFileName)功能:建立请求,以表单HTML形式构造,带文件上传功能输入:Map<String, String> sParaTemp 请求参数数组String strMethod 提交方式。

两个值可选:post、getString strButtonName 确认按钮显示文字String strParaFileName 文件上传的参数名输出:String 提交表单HTML文本public static String buildRequest(String strParaFileName, String strFilePath,Map<String, String> sParaTemp) throws Exception功能:建立请求,以模拟远程HTTP的POST请求方式构造并获取支付宝的处理结果输入:String strParaFileName 文件类型的参数名String strFilePath 文件路径Map<String, String> sParaTemp 请求参数数组输出:String 支付宝处理结果private static NameValuePair[] generatNameValuePair(Map<String, String> properties)功能:MAP类型数组转换成NameValuePair类型输入:Map<String, String> sParaTemp MAP类型数组输出:NameValuePair[] NameValuePair类型数组public static String query_timestamp()功能:用于防钓鱼,调用接口query_timestamp来获取时间戳的处理函数输出:String 时间戳字符串5.UtilDate.javapublic static String getOrderNum()功能:自动生出订单号,格式yyyyMMddHHmmss输出:String 订单号public static String getDateFormatter()功能:获取日期,格式:yyyy-MM-dd HH:mm:ss输出:String 日期public static String getDate()功能:获取日期,格式:yyyyMMdd输出:String 日期public static String getThree()功能:产生随机的三位数输出:String 随机三位数二.工作原理a) 接入部分原理i. 第一步——选定参数信息:结合技术文档以及接口代码Demo,选定传递给支付宝服务器的参数,以实物标准双接口为例。

如必传项service、partner、seller_email、sign、sign_type、out_trade_no、price、subject、quantity、payment_type以及最少一组的物流信息参数三个logistics_type、logistics_fee、logistics_payment等,选填项body、discount、show_url 等。

string service = "trade_create_by_buyer";string seller_email = "aaaa@";string sign_type = "MD5";string key = "我是秘钥";string partner = "我是唯一商铺号";string _input_charset = "utf-8";string show_url = "/";string out_trade_no = TxtOrderno.Text.Trim();string subject = TxtSubject.Text.Trim();string body = TxtBody.Text.Trim();string price = TxtPrice.Text.Trim();string quantity = TxtQua.Text.Trim();string logistics_type = "POST";string logistics_fee = TxtPost.Text.Trim();string logistics_payment = "BUYER_PAY";string notify_url = “我是异步通信地址”string return_url = “我是回执地址”ii. 第二步——排序:把这些参数的变量名(即技术文档里给出的变量名,以这种方式组合:service=”trade_create_by_buyer”作为一串字符串)按从a到z的顺序依次排序。

相关主题