最近弄了一个*州(国外)的支付接口,话费充值,众所周知的某非,他们的银行卡并不普及啊,他们当局交易是“滴,话费交易成功”,那我们国家去他们国家想搞个电商的代采购,又不想买太多而屯压货,搞得很焦虑,那我们就直接对接国内的*宝,拼**,要有小伙伴说了,我啊东呢,这........啊东的东西是不错,不过价格,咱们啊非可有点陶不出口袋子啊,啊东的东西质量以及它的售后,那是没得说的,咱们直接进入正题啊
首先我们的对接 文档也得有吧,我们一顿乱看,拿到接口,参数,原来跟我们a里mama旗下的产品差不多,我们先注册一个账号,无非就是去请求他们的接口,携带令牌token嗷,不然会身份验证失败的哟,我们的head请求头里携带信息,看他需要啥,如:

如何,我们的body也得要吧,我们以json形式(看对方哈),json里面嵌套一个json

看对面放回你个什么数据,在HttpResponse response = httpclient.execute(request);
response里面会含一个entity(以我这里为例),我们去拿里面的数据判断就行了
我们也可以通过json获得里面的数据,对方发过来的是一个json(我这里是)

注意的是,我们要是生成token的时候要转base64,uuid_user:key转好后要在前面拼接basic,再去请求生成token的地址哦,我们最好给这个token存在redis里面,因为对面会给你一个过期时间,不是永久的哦
//设置一个过期时间,以防万一,我们减去100秒,反正可以生成
stringRedisTemplate.opsForValue().set(toekenKey, accessToken,
json.getInteger("expires_in")-100, TimeUnit.SECONDS);
//生成bsae64
Base64.Encoder encoder = Base64.getEncoder();
//创建byte
byte[] textByte;
//将aipId:aipkey拼接中间用 : 号
String text = txReferenceId + ":" + aipKey;
//转码后 BASE64的值
String Authorization = "";
try {
textByte = text.getBytes("UTF-8");
//编码
Authorization = encoder.encodeToString(textByte);
System.out.println(Authorization);
} catch (UnsupportedEncodingException e) {
e.printStackTrace();
_log.error("error MTN转Base64出错");
}finally {
System.out.println("*** 转换base64完成");
}
只要坚持就会成功!! 欢迎指正哦