java 单机接口限流处理方案
664
2022-12-04
本文目录一览:
不一定,看你业务需要。这些步骤只是描述微信系统会发出和接收什么数据,商户需要发送和会接收到什么数据,用户需要执行什么操作。回调的URL是用来接收数据的,至于发送并没有要求。
1.调用微信接口授权
授权这里有两种方式,一种是snsapi_bases,另一种是snsapi_userinfo,这里官方文档介绍的比较清楚,可以参考官网
;t=resource/res_listverify=1id=open1419316505token=lang=zh_CN
appid 登录微信公众号-基本配置-开发者ID-APPID
redirect_uri 就是一个回调地址,当你调用完微信的这个链接后,他会自动调用你定义的这个地址,返回code参数
注意,redirect_uri 也需要在公众号里面配置,在接口权限-网页帐号里修改。
2.可以在页面中写一个调用授权的页面
%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%
!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "
%
String path = request.getContextPath();
String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";
%
html
head
title用户管理/title
script type="text/javascript" src="js/jquery/jquery-1.11.1.min.js"/script
script type="text/javascript"
function oauth() {
var url = "%=basePath%getOauth2Url";
$.ajax({
url: url,
success : function(result){
//var result = eval('('+result+')');
if (result.success){
location.href = result.obj; //
} else {
}
}
});
}
/script
/head
body
p onclick="oauth()"非用户认证鉴权/p
/body
/html
/prepre class="html" name="code" snippet_file_name="blog_20160608_3_8825275" code_snippet_id="1711669"java中的方法
pre class="html" name="code" /**
* 获取授权地址
* @return
*/
@RequestMapping(value = "/getOauth2Url",method = RequestMethod.GET)
public void getOauth2Url(Model model, HttpServletResponse response) {
Json j = new Json();
try {
String authorize_url = PayConfig.AUTHORIZE_URL;
String appId = PayConfig.APPID;
String redirect_uri = PayConfig.REDIRECT_URI;
String url = authorize_url + "?appid=" + appId + "redirect_uri=" + urlEncodeUTF8(redirect_uri) + "response_type=codescope=snsapi_basestate=STATE#wechat_redirect";
System.out.println(url);
j.setSuccess(true);
j.setMsg("保存成功!");
j.setObj(url);
write(response, JSON.toJSONString(j));
} catch (Exception e) {
j.setMsg(e.getMessage());
}
}
/**
* 对回调地址进行encode
* @param source
* @return
*/
public static String urlEncodeUTF8(String source){
String result = source;
try {
result = java.net.URLEncoder.encode(source,"utf-8");
} catch (UnsupportedEncodingException e) {
e.printStackTrace();
}
return result;
}
pre class="html" name="code" /**
* 获取授权地址
* @return
*/
@RequestMapping(value = "/getOauth2Url",method = RequestMethod.GET)
public void getOauth2Url(Model model, HttpServletResponse response) {
Json j = new Json();
try {
String authorize_url = PayConfig.AUTHORIZE_URL;
String appId = PayConfig.APPID;
String redirect_uri = PayConfig.REDIRECT_URI;
String url = authorize_url + "?appid=" + appId + "redirect_uri=" + urlEncodeUTF8(redirect_uri) + "response_type=codescope=snsapi_basestate=STATE#wechat_redirect";
System.out.println(url);
j.setSuccess(true);
j.setMsg("保存成功!");
j.setObj(url);
write(response, JSON.toJSONString(j));
} catch (Exception e) {
j.setMsg(e.getMessage());
}
}
/**
* 对回调地址进行encode
* @param source
* @return
*/
public static String urlEncodeUTF8(String source){
String result = source;
try {
result = java.net.URLEncoder.encode(source,"utf-8");
} catch (UnsupportedEncodingException e) {
e.printStackTrace();
}
return result;
}
package com.crm.common;
public class PayConfig {
public static String APPID = "wx91af774aae000dcb"; //APPID
public static String MCHID = "1347742701"; //商户编号
public static String PAYKEY = "kong6a9829e4b49a0d2347b4162da6b7"; //支付密钥
public static String APPSECRET = "f8e1ff34070a94332b3b128232acb5abf "; //公众号-基本配置-APPSECRET密钥
public static String REDIRECT_URI = "
回调地址
public static String AUTHORIZE_URL = "
微信授权地址
public static String ACCESS_TOKEN_URI = "
public static String SCOPE = "snsapi_base"; //snsapi_base和snsapi_userinfo
public static String GRANT_TYPE = "grant_type"; //获取openid时用,不用改
}
3.成功后,回到你当时写的回调地址
pre class="html" name="code"/**
* 微信授权后的回调地址的方法
* @param code
* @param response
*/
@RequestMapping(value = "/authorize",method = RequestMethod.GET)
public void authorize(String code, HttpServletResponse response, String openid) {
code = "test";
String access_token_uri = PayConfig.ACCESS_TOKEN_URI;
String appid = PayConfig.APPID;
String secret = PayConfig.APPSECRET;
access_token_uri = access_token_uri.replace("APPID", appid).replace("SECRET", secret).replace("CODE", code);
System.out.println(access_token_uri);
if(openid != null){
UniteOrder order = getUniteOrder(openid);
String reqXML = PayImpl.generateXML(order, PayConfig.PAYKEY);
String respXML = PayImpl.requestWechat(ORDER_URL, reqXML);
System.out.println("respXML=" + respXML);
UniteOrderResult result = (UniteOrderResult) PayImpl.turnObject(UniteOrderResult.class, respXML);
getWechatPay(result);
}
}
微信小程序是可以接入微信支付的接口的,比如目前还信用卡的小程序就可以通过微信支付来完成信用卡的还款;要使用此功能,用户只需在微信中关联一张银行卡,并完成身份认证,即可将装有app的智能手机变成一个全能钱包,之后即可购买合作商户的商品及服务,在付费时只需在自己的智能手机上输入密码,无需任何刷卡步骤即可完成整个过程且简便流畅
一、微信支付
微信支付官方流程链接:
简要来说流程如下:
1.用户点击商品下单:“商户客户端”调用“商户服务端”生成订单,“商户服务端”后台调用“微信支付系统”的“统一下单API”接口,生成预付订单后,返回给“商户服务端后台”,商户后台再回调给“商户客户端”。
2.用户确认支付:“商户客户端”调用“调起微信支付”接口,界面跳转到微信进行支付。
3.用户支付成功:这里有三个回调,其一、“微信支付系统”通知“商户管理后台”支付信息。其二、“微信支付系统”通知“微信客户端”支付结果。其三、“微信支付系统”通过“商户客户端”实现的回调中处理支付状态,“商户客户端”可通过调用“商户管理后台”的接口查询当前订单状态。(商户管理后台也需要调用“微信支付系统”查询订单接口)
二、支付宝支付
支付流程图:
支付宝支付对比微信支付流程还进行了简化,即在生成订单时,不需要商户后台请求支付宝生成订单,基本流程如下:
1.“商家APP”请求“商家后台”下单,“商家后台”返回订单信息。
2.“商家APP”根据订单唤起“支付宝App”进行支付。
3.支付成功后,“支付宝支付后台”返回支付结果给“支付宝App”,“支付宝App”返回支付结果给“商家App”、“支付宝支付后台”异步通知支付结果给“商家后台”。
三、苹果支付
流程图:
支付流程:
1.用户点击购买,“App客户端”请求“App服务端”创建交易订单。
2.“APP客户端”拿到交易信息,然后开始调起“IAP 服务器”创建订单。
3.“IAP服务器”通知购买成功,并把收据信息写入APP沙盒中。
4.“APP客户端”去沙盒中拿到收据信息,并将收据信息上传到“APP服务器”,“APP服务器”把收据信息请求“IAP 服务器”验证,如果有则返回到“APP客户端”,把订单结束。
参考链接:
一、如果请人开发的SHOP平台,而且在后台拥有支付接口参数配置的情况下,按照要求填入相关参数即可。去第三方支付平台注册就能获得相关参数。
二、如果是自己开发的,除了申请使用第三方支付平台外,还需要下载相关接口文档标准,按照要求进行开发,跟你的网站接合起来,这样才能使用。
第三方支付平台的网关一般需要手续费或年费的。如淘宝网的支付宝,需要年费。云网支付需要年费或选择手续费。
版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。
发表评论
暂时没有评论,来抢沙发吧~