帖子
帖子
用户
博客
课程
显示全部楼层
33
帖子
0
勋章
2000
Y币

写一个支付宝后台demo

[复制链接]
发表于 2017-6-26 11:10:30
签约就不说了  记得上传支付宝公钥密钥
出现40247错误   看下
1.没签约,所以没有权限
2.看下上传公钥密钥没有   用支付宝验签工具匹配一下公钥密钥   
2.记得把请求参数给encoder编码

回调时候验签的时候给支付宝返回参数success  记得把网址复制到到浏览器看下 success  大小  
java加了这个success会比通常的大一点 支付宝会不识别 response.setHeader("Access-Control-Allow-Headers", "X-Requested-With");
        response.setHeader("Cache-Control", "no-cache");
验签就不说了  挺简单的  就是步骤挺多

public static void main(String[] args) throws AlipayApiException, UnsupportedEncodingException {

String appId = "";
String notifyUrl = "";
String privateKey = "";

String paymentOrder =UtilDate.getThree()+ UtilDate.getOrderNum() + UtilDate.getThree(); //订单编号
//支付金额

AlipayConfig alipayConfig = new AlipayConfig(appId, notifyUrl, privateKey);

//把请求参数打包成数组
    Map<String, String> sParaTemp = new HashMap<String, String>();
    sParaTemp.put("app_id", alipayConfig.getAppId());
    sParaTemp.put("method", alipayConfig.getMethod());
    sParaTemp.put("format", alipayConfig.getFormat());
    sParaTemp.put("charset", alipayConfig.getCharset());
    sParaTemp.put("timestamp", DatetimeUtil.convertDateToString("yyyy-MM-dd hh:mm:ss", new Date()));
    sParaTemp.put("version", alipayConfig.getVersion());
    sParaTemp.put("notify_url", alipayConfig.getNotifyUrl());
    sParaTemp.put("sign_type", alipayConfig.getSignType());
   
    Map<String, String> bizContent = new HashMap<String, String>();
    bizContent.put("total_amount", "0.01");
    bizContent.put("subject", "");  //支付宝订单信息
    bizContent.put("out_trade_no", paymentOrder);
    bizContent.put("product_code", "QUICK_MSECURITY_PAY");
    bizContent.put("goods_type", "1");
    bizContent.put("seller_id", "");  //不需要填  默认为商户签约账号对应的支付宝用户ID
    sParaTemp.put("biz_content", JSONUtil.map2json(bizContent));
   
    String  signString  = AlipayCore.createLinkString(AlipayCore.paraFilter(sParaTemp)); //待签名字符串
   
    String         encodeSignString = AlipayCore.createLinkEncodeString(AlipayCore.paraFilter(sParaTemp)); //格式 key=value&key2=value2 其中value encode处理
   
    System.out.println(signString);
   
    //得到签名
    String sign = AlipaySignature.rsa256Sign(signString, alipayConfig.getPrivateKey(), alipayConfig.getCharset());
   
    String signEncode = URLEncoder.encode(sign, "UTF-8");
   
   
    String orderInfo = encodeSignString + "&sign=" + signEncode;
   
    System.out.println(orderInfo);
33
帖子
0
勋章
2000
Y币
自己想带额外参数添加到extend_params这个里面  记得把他URLEncoder编码一下 里面的key和vuale  值都是随便写别跟参数重名
您需要登录后才可以回帖 登录

本版积分规则