支付ping++ 创建charge失败

总有叼民想害朕 2017-03-22 10:56:02
如题,在用ping++做支付的时候,发现创建charge的时候失败~先贴代码
逻辑处理
@Service
@Slf4j
public class PayService {
public JsonResponse pay(Long orderId, int amount, String subject, String body, String channel, String ip){
//用于传给加密算法的map,由charge转换而来
Map map = null;
Map<String, Object> chargeMap = new HashMap<>();
chargeMap.put("amount", amount);
chargeMap.put("subject", subject);
chargeMap.put("body", body);
chargeMap.put("order_no", orderId);
chargeMap.put("channel", channel);
chargeMap.put("client_ip",ip);
Calendar cal = Calendar.getInstance();
cal.add(Calendar.MINUTE, 15);//15分钟失效
long timestamp = cal.getTimeInMillis()/ 1000L;
chargeMap.put("time_expire", timestamp);
Map<String, String> extramap = new HashMap<>();
//extra的参数根据文档: https://pingxx.com/document/api#api-c-new
extramap.put("success_url", "http://127.0.0.1:8080/assets/success.html");
chargeMap.putAll(extramap);
try {
//固定的几个放入工具类中
chargeMap.putAll(PingPPUtil.sendAlipay());
Charge charge = Charge.create(chargeMap);
map = new ObjectMapper().readValue(charge.toString(),Map.class);

} catch (Exception e) {
e.printStackTrace();
}
return JsonResponse.success(encodeUtil.getJsonString(map));
}
}

Ping++Util
@Slf4j
public class PingPPUtil {
static{
try {
InputStream inputStream;
ClassLoader cl = PingPPUtil. class .getClassLoader();
if (cl != null ) {
inputStream = cl.getResourceAsStream( "properties/PingPlusPlus.properties" );
} else {
inputStream = ClassLoader.getSystemResourceAsStream( "properties/PingPlusPlus.properties" );
}
Properties p = new Properties();
p.load(inputStream);
Pingpp.apiKey=p.getProperty("apiKey");
log.info("***************{}",p.getProperty("apiKey"));
Pingpp.privateKeyPath=p.getProperty("privateKeyPath");
log.info("%%%%%%%%%%{}",p.getProperty("privateKeyPath"));
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}

public static Map<String,Object> sendAlipay() throws ChannelException, APIException, AuthenticationException, InvalidRequestException, APIConnectionException {
Map<String, Object> chargeParams = new HashMap<String, Object>();
Map<String, String> app = new HashMap<String, String>();
app.put("id","app_r5yHSGOG4ub984GS");//APP ID
chargeParams.put("app", app);
chargeParams.put("currency","cny");

return chargeParams;
}
public static void main(String[] args) throws APIException, APIConnectionException, AuthenticationException, InvalidRequestException, ChannelException {
System.out.print(sendAlipay());
}

}

<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport"
content="width=device-width,initial-scale=1.0, minimum-scale=1.0, maximum-scale=1.0, user-scalable=no"/>
<title>MiniCheckout</title>
<link rel="stylesheet" type="text/css" href="assets/css/pinus.css">
</head>
<body>
<header>
<div class="h_content">
<span></span>
</div>
</header>
<section class="block">
<div class="content2">
<div class="app">
<span class="iphone"><img src="../img/bgpic.jpg" width="100%" height="auto"></span>
<label class="text_amount">
<input id="amount" type="text" placeholder="金 额"/>
</label>

<div class="ch">
<span class="up" onclick="wap_pay('upacp_wap')">银联 WAP</span>
<span class="up" onclick="wap_pay('alipay_wap')">支付宝 WAP</span>
<span class="up" onclick="wap_pay('bfb_wap')">百度钱包 WAP</span>
<span class="up" onclick="wap_pay('jdpay_wap')">京东支付 WAP</span>
<span class="up" onclick="wap_pay('yeepay_wap')">易宝支付 WAP</span>
<span class="up" onclick="wap_pay('wx_pub')">微信浏览器内公众号支付 WAP</span>

</div>
</div>
</div>
</section>
<script src="/lib/pingpp.js"></script>
<script>
var YOUR_URL = '/pay/topay';
function wap_pay(channel) {

if(YOUR_URL.length == 0 ){
alert("请填写正确的URL");
return;
}

var amount = document.getElementById('amount').value * 100;
console.log(amount);

var xhr = new XMLHttpRequest();
xhr.open("POST", YOUR_URL, true);
xhr.setRequestHeader("Content-Type","application/x-www-form-urlencoded");
var data = "channel="+ channel + "&amount=" +amount + "&orderId=" + 1001 +"&subject=book&body=javaWeb"

xhr.send(data);

xhr.onreadystatechange = function () {
if (xhr.readyState == 4 && xhr.status == 200) {
console.log(xhr.responseText);//获取服务器返回值
pingpp.createPayment(xhr.responseText, function(result, err) {
console.log(result);
console.log(err.msg);
console.log(err.extra);
});
}
}
}
</script>
</body>
</html>

运行起来之后,debug发现 Charge charge = Charge.create(chargeMap);这里报错了,错误信息如下:

com.pingplusplus.exception.InvalidRequestException: Error type: invalid_request_error
Error message: 缺少请求参数: bfb_login
at com.pingplusplus.net.APIResource.handleAPIError(Unknown Source)
at com.pingplusplus.net.APIResource.request(Unknown Source)
at com.pingplusplus.model.Charge.create(Unknown Source)
at com.ts.wjf.service.PayService.pay(PayService.java:46)
at com.ts.wjf.controller.PayController.pay(PayController.java:29)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:483)
at org.springframework.web.method.support.InvocableHandlerMethod.invoke(InvocableHandlerMethod.java:215)
at org.springframework.web.method.support.InvocableHandlerMethod.invokeForRequest(InvocableHandlerMethod.java:132)
at org.springframework.web.servlet.mvc.method.annotation.ServletInvocableHandlerMethod.invokeAndHandle(ServletInvocableHandlerMethod.java:104)
at org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.invokeHandleMethod(RequestMappingHandlerAdapter.java:781)
at org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.handleInternal(RequestMappingHandlerAdapter.java:721)
at org.springframework.web.servlet.mvc.method.AbstractHandlerMethodAdapter.handle(AbstractHandlerMethodAdapter.java:83)
at org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:943)
at org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:877)
at org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:966)
at org.springframework.web.servlet.FrameworkServlet.doPost(FrameworkServlet.java:868)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:727)
at org.springframework.web.servlet.FrameworkServlet.service(FrameworkServlet.java:842)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:820)
at org.mortbay.jetty.servlet.ServletHolder.handle(ServletHolder.java:511)
at org.mortbay.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1166)
at org.springframework.web.filter.CharacterEncodingFilter.doFilterInternal(CharacterEncodingFilter.java:88)
at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:107)
at org.mortbay.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1157)
at org.mortbay.jetty.servlet.ServletHandler.handle(ServletHandler.java:388)
at org.mortbay.jetty.security.SecurityHandler.handle(SecurityHandler.java:216)
at org.mortbay.jetty.servlet.SessionHandler.handle(SessionHandler.java:182)
at org.mortbay.jetty.handler.ContextHandler.handle(ContextHandler.java:765)
at org.mortbay.jetty.webapp.WebAppContext.handle(WebAppContext.java:418)
at org.mortbay.jetty.handler.ContextHandlerCollection.handle(ContextHandlerCollection.java:230)
at org.mortbay.jetty.handler.HandlerCollection.handle(HandlerCollection.java:114)
at org.mortbay.jetty.handler.HandlerWrapper.handle(HandlerWrapper.java:152)
at org.mortbay.jetty.Server.handle(Server.java:326)
at org.mortbay.jetty.HttpConnection.handleRequest(HttpConnection.java:542)
at org.mortbay.jetty.HttpConnection$RequestHandler.content(HttpConnection.java:938)
at org.mortbay.jetty.HttpParser.parseNext(HttpParser.java:755)
at org.mortbay.jetty.HttpParser.parseAvailable(HttpParser.java:218)
at org.mortbay.jetty.HttpConnection.handle(HttpConnection.java:404)
at org.mortbay.io.nio.SelectChannelEndPoint.run(SelectChannelEndPoint.java:409)
at org.mortbay.thread.QueuedThreadPool$PoolThread.run(QueuedThreadPool.java:582)
...全文
236 2 打赏 收藏 转发到动态 举报
写回复
用AI写文章
2 条回复
切换为时间正序
请发表友善的回复…
发表回复
  • 打赏
  • 举报
回复
他这个报错貌似说我请求参数有问题,可是小白不理解,请求哪里有问题,这些参数也都拿到了?有没有大神解决一下??
  • 打赏
  • 举报
回复
在service中 chargeMap.putAll(extramap);应该改为 chargeMap.put("extra",extramap); 记得细心,细心~~~~~~~~~~~~~

62,628

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧