支付宝支付--手机支付

1.首先要注册称为支付宝商家

https://b.alipay.com/newIndex.htm 

        

2.注册完成之后,签约产品,选择合适的支付方式,比如说移动支付,手机网站支付等

我选择的是手机网站支付

3.点击查询PID、Key,需要输入支付密码

4.配置商家公钥到支付宝

如何上传请参考网址 https://cshall.alipay.com/enterprise/help_detail.htm?help_id=473890&keyword=%C8%E7%BA%CE%C9%FA%B3%C9RSA%C3%DC%D4%BF&sToken=&from=search

5.进入技术集成界面

https://b.alipay.com/order/techService.htm

6. 下载手机网站支付包,解压配置到Tomcat中

7.配置com.alipay.config 包中 AlipayConfig类里面的参数

具体可以参考:

    ╭───────────────────────╮
    ────┤           支付宝代码示例结构说明             ├────
            ╰───────────────────────╯ 
                                                                   
        接口名称:支付宝手机网站支付接口(alipay.wap.create.direct.pay.by.user)
       代码版本:3.3
         开发语言:JAVA
         版    权:支付宝(中国)网络技术有限公司
        制 作 者:支付宝商户事业部技术支持组
         联系方式:商户服务电话0571-88158090


    ─────────────────────────────────


───────
 代码文件结构
───────


alipay.wap.create.direct.pay.by.user-JAVA-UTF-8
  │
  ├src┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈类文件夹
  │  │
  │  ├com.alipay.config
  │  │  │
  │  │  └AlipayConfig.java┈┈┈┈┈基础配置类文件
  │  │
  │  ├com.alipay.util
  │  │  │
  │  │  ├AlipayCore.java┈┈┈┈┈┈支付宝接口公用函数类文件
  │  │  │
  │  │  ├AlipayNotify.java┈┈┈┈┈支付宝通知处理类文件
  │  │  │
  │  │  ├AlipaySubmit.java┈┈┈┈┈支付宝各接口请求提交类文件
  │  │  │
  │  │  └UtilDate.java┈┈┈┈┈┈┈支付宝自定义订单类文件
  │  │
  │  ├com.alipay.rsa
  │  │  │
  │  │  ├RSA.java ┈┈┈┈┈┈┈┈┈RSA签名类文件
  │  │  │
  │  │  └Base64.java┈┈┈┈┈┈┈┈RSA密钥转换
  │  │
  │  └com.alipay.util.httpClient(已封装)
  │      │
  │      ├HttpProtocolHandler.java ┈支付宝HttpClient处理类文件
  │      │
  │      ├HttpRequest.java ┈┈┈┈┈支付宝HttpClient请求类文件
  │      │
  │      ├HttpResponse.java┈┈┈┈┈支付宝HttpClient返回类文件
  │      │
  │      └HttpResultType.java┈┈┈┈支付宝HttpClient返回的结果字符方式类文件
  │
  ├WebRoot┈┈┈┈┈┈┈┈┈┈┈┈┈┈页面文件夹
  │  │
  │  ├alipayapi.jsp┈┈┈┈┈┈┈┈┈支付宝接口入口文件
  │  │
  │  ├index.jsp┈┈┈┈┈┈┈┈┈┈┈支付宝调试入口页面
  │  │
  │  ├notify_url.jsp ┈┈┈┈┈┈┈┈服务器异步通知页面文件
  │  │
  │  ├return_url.jsp ┈┈┈┈┈┈┈┈页面跳转同步通知文件
  │  │
  │  └WEB-INF
  │   	  │
  │      └lib(如果JAVA项目中包含这些架包,则不需要导入)
  │   	     │
  │   	     ├commons-codec-1.6.jar
  │   	     │
  │   	     ├commons-httpclient-3.0.1.jar
  │   	     │
  │   	     ├commons-logging-1.1.1.jar
  │   	     │
  │   	     ├dom4j-1.6.1.jar
  │   	     │
  │   	     └jaxen-1.1-beta-6.jar
  │
  └readme.txt ┈┈┈┈┈┈┈┈┈使用说明文本


※注意※
需要配置的文件是:
alipay_config.java
alipayapi.jspreturn_url.jsp
notify_url.jsp
本代码示例(demo)中模拟获取远程HTTP信息使用的是commons-httpclient-3.0版本的第三方架包、及支付宝的httpClient封装类。
如果您不想使用该方式实现模拟获取远程HTTP功能,那么可以用其他方式代替,此时需您自行编写代码。


●商户的私钥、商户的公钥、支付宝公钥




◆商户的私钥
1、必须保证只有一行文字,即,没有回车、换行、空格等
2、需对刚生成的(原始的)私钥做pkcs8编码
3、编码完成后,复制该段私钥,并去掉里面的回车、换行、空格等


◆商户的公钥
1、必须保证只有一行文字,即,没有回车、换行、空格等
2、去掉“-----BEGIN PUBLIC KEY-----”、“-----END PUBLIC KEY-----”,只保存这两条文字之中的部分
3、保存好后,命名须“合作者身份ID.dat”的命名方式,如:2088101568342279.dat
4、重命名后,交给支付宝


◆支付宝公钥
1、必须保证只有一行文字,即,没有回车、换行、空格等
2、去掉“-----BEGIN PUBLIC KEY-----”、“-----END PUBLIC KEY-----”,只保存这两条文字之中的部分


─────────
 类文件函数结构
─────────


AlipayCore.java


public 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, String file_digest_type) throws IOException
功能:生成文件摘要
输入:String strFilePath 文件路径
      String file_digest_type 摘要算法
输出:String 文件摘要结果


┉┉┉┉┉┉┉┉┉┉┉┉┉┉┉┉┉┉┉┉┉┉┉┉┉┉┉┉┉┉┉


RSA.java


public static String sign(String content, String privateKey, String input_charset)
功能:RSA签名
输入:String content 明文
      String privateKey 商户私钥
      String input_charset 编码格式
输出:String 签名结果


public static boolean verify(String content, String sign, String ali_public_key, String input_charset)
功能:RSA验签名检查
输入:String content 待签名数据
      String sign 支付宝的签名值
      String privateKey 支付宝公钥
      String input_charset 编码格式
输出:boolean 签名结果


┉┉┉┉┉┉┉┉┉┉┉┉┉┉┉┉┉┉┉┉┉┉┉┉┉┉┉┉┉┉┉








AlipayNotify.java


public 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结果字符串


┉┉┉┉┉┉┉┉┉┉┉┉┉┉┉┉┉┉┉┉┉┉┉┉┉┉┉┉┉┉┉


AlipaySubmit.java


public 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、get
      String 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、get
      String 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 时间戳字符串


┉┉┉┉┉┉┉┉┉┉┉┉┉┉┉┉┉┉┉┉┉┉┉┉┉┉┉┉┉┉┉


UtilDate.java


public  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 随机三位数


┉┉┉┉┉┉┉┉┉┉┉┉┉┉┉┉┉┉┉┉┉┉┉┉┉┉┉┉┉┉┉




──────────
 出现问题,求助方法
──────────


如果在集成支付宝接口时,有疑问或出现问题,可使用下面的链接,提交申请。
https://b.alipay.com/support/helperApply.htm?action=supportHome
我们会有专门的技术支持人员为您处理
8. 运行这个项目

 

输入商品订单号、订单名称、订单金额等地址,点击确认发起支付请求

输入支付密码,即可收到支付成功的信息。

由于时间的关系,写的不是很详细,大家有什么问题可以加入qq群一起讨论38878612


接口名称:支付手机网站支付接口(alipay.wap.create.direct.pay.by.user)     代码版本:3.3 开发语言:ASP 版 权:支付宝()网络技术有限公司   制 作 者:支付宝技术部技术支持组 联系方式:https://support.open.alipay.com/alipay/support/index.htm 免责声明:DEMO仅供参考,实际开发中需要结合具体场景修改使用。 ───────────────────────────────── ─────── 代码文件结构 ─────── alipay.wap.create.direct.pay.by.user-CSHARP-UTF-8 │ ├class┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈类文件夹 │ │ │ ├alipay_core.asp┈┈┈┈┈┈┈┈┈┈┈┈支付宝接口公用函数文件 │ │ │ ├alipay_md5.asp ┈┈┈┈┈┈┈┈┈┈┈┈MD5签名函数文件 │ │ │ ├alipay_notify.asp┈┈┈┈┈┈┈┈┈┈┈支付宝通知处理类文件 │ │ │ ├alipay_submit.asp┈┈┈┈┈┈┈┈┈┈┈支付宝各接口请求提交类文件 │ │ │ └alipay_config.asp┈┈┈┈┈┈┈┈┈┈┈基础配置文件 │ ├log┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈日志文件夹 │ ├alipayapi.asp┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈支付宝接口入口文件 │ ├index.asp┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈支付宝调试入口页面 │ ├notify_url.asp ┈┈┈┈┈┈┈┈┈┈┈┈┈┈服务器异步通知页面文件 │ ├return_url.asp ┈┈┈┈┈┈┈┈┈┈┈┈┈┈页面跳转同步通知文件 │ └readme.txt ┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈使用说明文本 ※注意※ 需要配置的文件是: alipay_config.asp alipayapi.asp notify_url.asp return_url.asp ───────── 类文件函数结构 ───────── alipay_core.asp Function CreateLinkstring(sPara) 功能:把数组所有元素,按照“参数=参数值”的模式用“&”字符拼接成字符串 输入:Array sPara 需要拼接的数组 输出:String 拼接完成以后的字符串 Function CreateLinkstringUrlEncode(sPara) 功能:把数组所有元素,按照“参数=参数值”的模式用“&”字符拼接成字符串,并且对其做URLENCODE编码 输入:Array sPara 需要拼接的数组 输出:String 拼接完成以后的字符串 Function FilterPara(sPara) 功能:除去数组中的空值和签名参数 输入:Array sPara 签名参数组 输出:Array 去掉空值与签名参数后的新签名参数组 Function SortPara(sPara) 功能:对数组排序 输入:Array sPara 排序前的数组 输出:Array 排序后的数组 Function Md5Sign(prestr, key, input_charset) 功能:MD5签名 输入:String prestr 需要签名的字符串 String key 私钥 String input_charset 编码格式 输出:String 签名结果 Function Md5Verify(prestr, sign, key, input_charset) 功能:MD5签名 输入:String prestr 需要签名的字符串 String sign 签名结果 String key 私钥 String input_charset 编码格式 输出:String 签名结果 Function LogResult(sWord) 功能:写日志,方便测试(看网站需求,也可以改成存入数据库) 输入:String sWord 要写入日志里的文本内容 Function GetDateTimeFormat() 功能:获取当前时间 格式:年[4位]-月[2位]-日[2位] 小时[2位 24小时制]:分[2位]:秒[2位],如:2007-10-01 13:13:1
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

le4

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值