支付宝支付--手机支付(转)

时间:2022-12-20 18:45:35

支付宝支付--手机支付


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类里面的参数

具体可以参考:

[java]  view plain copy print ?
  1.     ╭───────────────────────╮  
  2.     ────┤           支付宝代码示例结构说明             ├────  
  3.             ╰───────────────────────╯   
  4.                                                                      
  5.         接口名称:支付宝手机网站支付接口(alipay.wap.create.direct.pay.by.user)  
  6.        代码版本:3.3  
  7.          开发语言:JAVA  
  8.          版    权:支付宝(中国)网络技术有限公司  
  9.         制 作 者:支付宝商户事业部技术支持组  
  10.          联系方式:商户服务电话0571-88158090  
  11.   
  12.   
  13.     ─────────────────────────────────  
  14.   
  15.   
  16. ───────  
  17.  代码文件结构  
  18. ───────  
  19.   
  20.   
  21. alipay.wap.create.direct.pay.by.user-JAVA-UTF-8  
  22.   │  
  23.   ├src┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈类文件夹  
  24.   │  │  
  25.   │  ├com.alipay.config  
  26.   │  │  │  
  27.   │  │  └AlipayConfig.java┈┈┈┈┈基础配置类文件  
  28.   │  │  
  29.   │  ├com.alipay.util  
  30.   │  │  │  
  31.   │  │  ├AlipayCore.java┈┈┈┈┈┈支付宝接口公用函数类文件  
  32.   │  │  │  
  33.   │  │  ├AlipayNotify.java┈┈┈┈┈支付宝通知处理类文件  
  34.   │  │  │  
  35.   │  │  ├AlipaySubmit.java┈┈┈┈┈支付宝各接口请求提交类文件  
  36.   │  │  │  
  37.   │  │  └UtilDate.java┈┈┈┈┈┈┈支付宝自定义订单类文件  
  38.   │  │  
  39.   │  ├com.alipay.rsa  
  40.   │  │  │  
  41.   │  │  ├RSA.java ┈┈┈┈┈┈┈┈┈RSA签名类文件  
  42.   │  │  │  
  43.   │  │  └Base64.java┈┈┈┈┈┈┈┈RSA密钥转换  
  44.   │  │  
  45.   │  └com.alipay.util.httpClient(已封装)  
  46.   │      │  
  47.   │      ├HttpProtocolHandler.java ┈支付宝HttpClient处理类文件  
  48.   │      │  
  49.   │      ├HttpRequest.java ┈┈┈┈┈支付宝HttpClient请求类文件  
  50.   │      │  
  51.   │      ├HttpResponse.java┈┈┈┈┈支付宝HttpClient返回类文件  
  52.   │      │  
  53.   │      └HttpResultType.java┈┈┈┈支付宝HttpClient返回的结果字符方式类文件  
  54.   │  
  55.   ├WebRoot┈┈┈┈┈┈┈┈┈┈┈┈┈┈页面文件夹  
  56.   │  │  
  57.   │  ├alipayapi.jsp┈┈┈┈┈┈┈┈┈支付宝接口入口文件  
  58.   │  │  
  59.   │  ├index.jsp┈┈┈┈┈┈┈┈┈┈┈支付宝调试入口页面  
  60.   │  │  
  61.   │  ├notify_url.jsp ┈┈┈┈┈┈┈┈服务器异步通知页面文件  
  62.   │  │  
  63.   │  ├return_url.jsp ┈┈┈┈┈┈┈┈页面跳转同步通知文件  
  64.   │  │  
  65.   │  └WEB-INF  
  66.   │       │  
  67.   │      └lib(如果JAVA项目中包含这些架包,则不需要导入)  
  68.   │          │  
  69.   │          ├commons-codec-1.6.jar  
  70.   │          │  
  71.   │          ├commons-httpclient-3.0.1.jar  
  72.   │          │  
  73.   │          ├commons-logging-1.1.1.jar  
  74.   │          │  
  75.   │          ├dom4j-1.6.1.jar  
  76.   │          │  
  77.   │          └jaxen-1.1-beta-6.jar  
  78.   │  
  79.   └readme.txt ┈┈┈┈┈┈┈┈┈使用说明文本  
  80.   
  81.   
  82. ※注意※  
  83. 需要配置的文件是:  
  84. alipay_config.java  
  85. alipayapi.jspreturn_url.jsp  
  86. notify_url.jsp  
  87. 本代码示例(demo)中模拟获取远程HTTP信息使用的是commons-httpclient-3.0版本的第三方架包、及支付宝的httpClient封装类。  
  88. 如果您不想使用该方式实现模拟获取远程HTTP功能,那么可以用其他方式代替,此时需您自行编写代码。  
  89.   
  90.   
  91. ●商户的私钥、商户的公钥、支付宝公钥  
  92.   
  93.   
  94.   
  95.   
  96. ◆商户的私钥  
  97. 1、必须保证只有一行文字,即,没有回车、换行、空格等  
  98. 2、需对刚生成的(原始的)私钥做pkcs8编码  
  99. 3、编码完成后,复制该段私钥,并去掉里面的回车、换行、空格等  
  100.   
  101.   
  102. ◆商户的公钥  
  103. 1、必须保证只有一行文字,即,没有回车、换行、空格等  
  104. 2、去掉“-----BEGIN PUBLIC KEY-----”、“-----END PUBLIC KEY-----”,只保存这两条文字之中的部分  
  105. 3、保存好后,命名须“合作者身份ID.dat”的命名方式,如:2088101568342279.dat  
  106. 4、重命名后,交给支付宝  
  107.   
  108.   
  109. ◆支付宝公钥  
  110. 1、必须保证只有一行文字,即,没有回车、换行、空格等  
  111. 2、去掉“-----BEGIN PUBLIC KEY-----”、“-----END PUBLIC KEY-----”,只保存这两条文字之中的部分  
  112.   
  113.   
  114. ─────────  
  115.  类文件函数结构  
  116. ─────────  
  117.   
  118.   
  119. AlipayCore.java  
  120.   
  121.   
  122. public static Map paraFilter(Map<String, String> sArray)  
  123. 功能:除去数组中的空值和签名参数  
  124. 输入:Map<String, String> sArray 要签名的数组  
  125. 输出:Map<String, String> 去掉空值与签名参数后的新签名参数组  
  126.   
  127.   
  128. public static String createLinkString(Map<String, String> params)  
  129. 功能:把数组所有元素,按照“参数=参数值”的模式用“&”字符拼接成字符串  
  130. 输入:Map<String, String> params 需要拼接的数组  
  131. 输出:String 拼接完成以后的字符串  
  132.   
  133.   
  134. public static void logResult(String sWord)  
  135. 功能:写日志,方便测试(看网站需求,也可以改成存入数据库)  
  136. 输入:String sWord 要写入日志里的文本内容  
  137.   
  138.   
  139. public static String getAbstract(String strFilePath, String file_digest_type) throws IOException  
  140. 功能:生成文件摘要  
  141. 输入:String strFilePath 文件路径  
  142.       String file_digest_type 摘要算法  
  143. 输出:String 文件摘要结果  
  144.   
  145.   
  146. ┉┉┉┉┉┉┉┉┉┉┉┉┉┉┉┉┉┉┉┉┉┉┉┉┉┉┉┉┉┉┉  
  147.   
  148.   
  149. RSA.java  
  150.   
  151.   
  152. public static String sign(String content, String privateKey, String input_charset)  
  153. 功能:RSA签名  
  154. 输入:String content 明文  
  155.       String privateKey 商户私钥  
  156.       String input_charset 编码格式  
  157. 输出:String 签名结果  
  158.   
  159.   
  160. public static boolean verify(String content, String sign, String ali_public_key, String input_charset)  
  161. 功能:RSA验签名检查  
  162. 输入:String content 待签名数据  
  163.       String sign 支付宝的签名值  
  164.       String privateKey 支付宝公钥  
  165.       String input_charset 编码格式  
  166. 输出:boolean 签名结果  
  167.   
  168.   
  169. ┉┉┉┉┉┉┉┉┉┉┉┉┉┉┉┉┉┉┉┉┉┉┉┉┉┉┉┉┉┉┉  
  170.   
  171.   
  172.   
  173.   
  174.   
  175.   
  176.   
  177.   
  178. AlipayNotify.java  
  179.   
  180.   
  181. public static boolean verify(Map<String, String> params)  
  182. 功能:根据反馈回来的信息,生成签名结果  
  183. 输入:Map<String, String>  Params 通知返回来的参数数组  
  184. 输出:boolean 验证结果  
  185.   
  186.   
  187. private static boolean getSignVeryfy(Map<String, String> Params, String sign)  
  188. 功能:根据反馈回来的信息,验证签名  
  189. 输入:Map<String, String>  Params 通知返回来的参数数组  
  190.       String sign 支付宝的签名值  
  191. 输出:boolean 签名结果  
  192.   
  193.   
  194. private static String verifyResponse(String notify_id)  
  195. 功能:获取远程服务器ATN结果,验证返回URL  
  196. 输入:String notify_id 验证通知ID  
  197. 输出:String 验证结果  
  198.   
  199.   
  200. private static String checkUrl(String urlvalue)  
  201. 功能:获取远程服务器ATN结果  
  202. 输入:String urlvalue 指定URL路径地址  
  203. 输出:String 服务器ATN结果字符串  
  204.   
  205.   
  206. ┉┉┉┉┉┉┉┉┉┉┉┉┉┉┉┉┉┉┉┉┉┉┉┉┉┉┉┉┉┉┉  
  207.   
  208.   
  209. AlipaySubmit.java  
  210.   
  211.   
  212. public static String buildRequestMysign(Map<String, String> sPara)  
  213. 功能:生成签名结果  
  214. 输入:Map<String, String> sPara 要签名的数组  
  215. 输出:String 签名结果  
  216.   
  217.   
  218. private static Map<String, String> buildRequestPara(Map<String, String> sParaTemp)  
  219. 功能:生成要请求给支付宝的参数数组  
  220. 输入:Map<String, String> sParaTemp 请求前的参数数组  
  221. 输出:Map<String, String> 要请求的参数数组  
  222.   
  223.   
  224. public static String buildRequest(Map<String, String> sParaTemp, String strMethod, String strButtonName)  
  225. 功能:建立请求,以表单HTML形式构造(默认)  
  226. 输入:Map<String, String> sParaTemp 请求参数数组  
  227.       String strMethod 提交方式。两个值可选:post、get  
  228.       String strButtonName 确认按钮显示文字  
  229. 输出:String 提交表单HTML文本  
  230.   
  231.   
  232. public static String buildRequest(Map<String, String> sParaTemp, String strMethod, String strButtonName, String strParaFileName)  
  233. 功能:建立请求,以表单HTML形式构造,带文件上传功能  
  234. 输入:Map<String, String> sParaTemp 请求参数数组  
  235.       String strMethod 提交方式。两个值可选:post、get  
  236.       String strButtonName 确认按钮显示文字  
  237.       String strParaFileName 文件上传的参数名  
  238. 输出:String 提交表单HTML文本  
  239.   
  240.   
  241. public static String buildRequest(String strParaFileName, String strFilePath,Map<String, String> sParaTemp) throws Exception  
  242. 功能:建立请求,以模拟远程HTTP的POST请求方式构造并获取支付宝的处理结果  
  243. 输入:String strParaFileName 文件类型的参数名  
  244.       String strFilePath 文件路径  
  245.       Map<String, String> sParaTemp 请求参数数组  
  246. 输出:String 支付宝处理结果  
  247.   
  248.   
  249. private static NameValuePair[] generatNameValuePair(Map<String, String> properties)  
  250. 功能:MAP类型数组转换成NameValuePair类型  
  251. 输入:Map<String, String> sParaTemp MAP类型数组  
  252. 输出:NameValuePair[] NameValuePair类型数组  
  253.   
  254.   
  255. public static String query_timestamp()  
  256. 功能:用于防钓鱼,调用接口query_timestamp来获取时间戳的处理函数  
  257. 输出:String 时间戳字符串  
  258.   
  259.   
  260. ┉┉┉┉┉┉┉┉┉┉┉┉┉┉┉┉┉┉┉┉┉┉┉┉┉┉┉┉┉┉┉  
  261.   
  262.   
  263. UtilDate.java  
  264.   
  265.   
  266. public  static String getOrderNum()  
  267. 功能:自动生出订单号,格式yyyyMMddHHmmss  
  268. 输出:String 订单号  
  269.   
  270.   
  271. public  static String getDateFormatter()  
  272. 功能:获取日期,格式:yyyy-MM-dd HH:mm:ss  
  273. 输出:String 日期  
  274.   
  275.   
  276. public static String getDate()  
  277. 功能:获取日期,格式:yyyyMMdd  
  278. 输出:String 日期  
  279.   
  280.   
  281. public static String getThree()  
  282. 功能:产生随机的三位数  
  283. 输出:String 随机三位数  
  284.   
  285.   
  286. ┉┉┉┉┉┉┉┉┉┉┉┉┉┉┉┉┉┉┉┉┉┉┉┉┉┉┉┉┉┉┉  
  287.   
  288.   
  289.   
  290.   
  291. ──────────  
  292.  出现问题,求助方法  
  293. ──────────  
  294.   
  295.   
  296. 如果在集成支付宝接口时,有疑问或出现问题,可使用下面的链接,提交申请。  
  297. https://b.alipay.com/support/helperApply.htm?action=supportHome  
  298. 我们会有专门的技术支持人员为您处理  
8. 运行这个项目

 支付宝支付--手机支付(转)

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

支付宝支付--手机支付(转)

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

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