重庆分公司,新征程启航
为企业提供网站建设、域名注册、服务器等服务
中国银行的支付接口是由中国银行技术给下发文档的,建议还是找技术要一下。
创新互联专注于鸡西企业网站建设,成都响应式网站建设公司,成都商城网站开发。鸡西网站建设公司,为鸡西等地区提供建站服务。全流程按需策划,专业设计,全程项目跟踪,创新互联专业和态度为您提供的服务
解释:必须先通过分行的业务经理通知中行总行技术下发文档,之后才会给第三方公司下发api文档的,并且中行的没有代码例子。
银行的接口,如果流量小的话一般都不给接的。
一般都是接的第三方支付接口,我这里有些演示代码
联系我,可以发给你参考下
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);
}
}
。。。简单的很。那个接口,其实说白了,就是一个http连接地址。然后,访问这个地址的时候,需要各种参数,当然,这个参数的名字是人家银行已经规定好的。各个参数表示的是什么玩意儿,人家也有文档说明的。到时候,你需要调用的时候,只需要拼接字符串,把这个地址和参数拼接出来,然后通过重定向,重定向到这个拼接出来的地址,就OK乐。 到时候,用户的浏览器就会自动到这个地址页面上,一般都是付账的页面上了。
notify_url与return_url我做的时候当时都写了,你其实可以看他的开发文档,这个是不是必选的一看就知道了,提交淘宝的参数,可以自己定义,但不知道你要定义什么了,一般提交到支付宝的信息,是你的支付宝信息,你的订单信息,以及他们的加密签名,然后成功后,支付宝会把订单信息以及签名返回,你需要做的是对这个签名做确认,对返回的订单信息,和你的支付宝key再一次加密形成签名,与支付宝的返回的签名做比对,一致的话,就证明是你的订单信息支付成功了,然后就没有然后了,看支付接口的文档和他的官方例子就好,希望能帮到你!
public String alibaPayCallBackNotice(HttpServletRequest request, HttpServletResponse response, String outTradeNo) {
//获取支付宝POST过来反馈信息
MapString,String params = new HashMapString,String();
Map?, ? requestParams = request.getParameterMap();
for (Iterator? iter = requestParams.keySet().iterator(); iter.hasNext();) {
String name = (String) iter.next();
String[] values = (String[]) requestParams.get(name);
String valueStr = "";
for (int i = 0; i values.length; i++) {
valueStr = (i == values.length - 1) ? valueStr + values[i]
: valueStr + values[i] + ",";
}
//乱码解决,这段代码在出现乱码时使用。
//valueStr = new String(valueStr.getBytes("ISO-8859-1"), "utf-8");
params.put(name, valueStr);
}
//切记alipaypublickey是支付宝的公钥,请去open.alipay.com对应应用下查看。
//boolean AlipaySignature.rsaCheckV1(MapString, String params, String publicKey, String charset, String sign_type)
try {
boolean flag = AlipaySignature.rsaCheckV1(params, App.AliBaPay.ALIPAY_PUBLIC_KEY, "UTF-8","RSA2");
if (flag) {
if ("TRADE_SUCCESS".equals(params.get("trade_status")) || "TRADE_FINISHED".equals(params.get("trade_status"))) {
// 支付成功,录入订单数据
if (userMoneyService.userUpdateWaterAccountInfo(Integer.valueOf(outTradeNo))) {
return "success";
}
}
}
} catch (Exception e) {
}
return "failure";
}
整个接口返回的数据,处理为字符串返回即可,不需要跳转,也不能跳转,要在你的resposne中body数据
记得采纳