NutzCN Logo
精华 支付宝APP支付集成案例 附上代码 老版本的接口
发布于 2871天前 作者 Hamming 2215 次浏览 复制 上一个帖子 下一个帖子
标签: 支付宝

支付宝app支付 最终需要一个请求地址 控制层已经拼接好
首先是配置文件

package nuoshang.bluejay.common.alipay.config;

/**
 * 支付宝老版本接口
 */
public class AlipayConfig {
	
	//↓↓↓↓↓↓↓↓↓↓请在这里配置您的基本信息↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓
	// 合作身份者ID,以2088开头由16位纯数字组成的字符串
	public static String partner = "2088421655369285";
	// 商户的私钥,使用支付宝自带的openssl工具生成。
	public static String private_key = "";

	// 支付宝的公钥,无需修改该值
	public static String ali_public_key  = "";
											
	//↑↑↑↑↑↑↑↑↑↑请在这里配置您的基本信息↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑
	public static final String SIGN_ALGORITHMS = "SHA1WithRSA";
	
	public static String seller = "ynnskj@qq.com";

}

生成签名的工具类

package nuoshang.bluejay.common.alipay.sign;

import java.security.KeyFactory;
import java.security.PrivateKey;
import java.security.spec.PKCS8EncodedKeySpec;

/**
 * 签名生成工具类 老版接口
 * Created by yuhaiming on 2016/11/28 0028.
 */
public class SignUtils {

    private static final String ALGORITHM = "RSA";

    private static final String SIGN_ALGORITHMS = "SHA1WithRSA";

    private static final String DEFAULT_CHARSET = "UTF-8";

    public static String sign(String content, String privateKey) {
        try {
            PKCS8EncodedKeySpec priPKCS8 = new PKCS8EncodedKeySpec(
                    Base64.decode(privateKey));
            KeyFactory keyf = KeyFactory.getInstance(ALGORITHM);
            PrivateKey priKey = keyf.generatePrivate(priPKCS8);

            java.security.Signature signature = java.security.Signature
                    .getInstance(SIGN_ALGORITHMS);

            signature.initSign(priKey);
            signature.update(content.getBytes(DEFAULT_CHARSET));

            byte[] signed = signature.sign();

            return Base64.encode(signed);
        } catch (Exception e) {
            e.printStackTrace();
        }

        return null;
    }

}
package nuoshang.bluejay.common.alipay.util;

import nuoshang.bluejay.common.alipay.config.AlipayConfig;
import nuoshang.bluejay.common.alipay.sign.SignUtils;

import java.io.UnsupportedEncodingException;
import java.net.URLEncoder;
import java.util.Map;

/**
 * 支付宝APP 调用参数封装
 * 老版本 1.0
 * Created by yuhaiming on 2016/11/23 0023.
 */
public class AlipayTradeUtil {

    public static String CreateOrd(String order_id, String body,String order_price){
        String content = SignString(order_id,body,order_price);
        String sign = GetSign(content);
        try{
            sign = URLEncoder.encode(sign,"utf-8");
        } catch (UnsupportedEncodingException e) {
            e.printStackTrace();
        }
        String url = content + "&sign=" + "\"" + sign + "\"" + "&sign_type=\"RSA\"";
        return url;
    }

    private static String SignString(String order_id, String body,String order_price) {

        // 签约合作者身份ID
        String orderInfo = "partner=" + "\"" + AlipayConfig.partner + "\"";

        // 签约卖家支付宝账号
        orderInfo += "&seller_id=" + "\"" + AlipayConfig.seller + "\"";

        // 商户网站唯一订单号
        orderInfo += "&out_trade_no=" + "\"" + order_id + "\"";

        // 商品名称(此处显示编号)
        orderInfo += "&subject=" + "\"" + "蓝鸦商城" + "\"";

        // 商品详情
        orderInfo += "&body=" + "\"" + body + "\"";

        // 商品金额
        orderInfo += "&total_fee=" + "\"" + order_price + "\"";

        // 服务器异步通知页面路径
        orderInfo += "&notify_url=" + "\"" + "http://notify.msp.hk/notify.htm"
                + "\"";

        // 服务接口名称, 固定值
        orderInfo += "&service=\"mobile.securitypay.pay\"";

        // 支付类型, 固定值
        orderInfo += "&payment_type=\"1\"";

        // 参数编码, 固定值
        orderInfo += "&_input_charset=\"utf-8\"";

        // 设置未付款交易的超时时间
        // 默认30分钟,一旦超时,该笔交易就会自动被关闭。
        // 取值范围:1m~15d。
        // m-分钟,h-小时,d-天,1c-当天(无论交易何时创建,都在0点关闭)。
        // 该参数数值不接受小数点,如1.5h,可转换为90m。
        orderInfo += "&it_b_pay=\"30m\"";

        // extern_token为经过快登授权获取到的alipay_open_id,带上此参数用户将使用授权的账户进行支付
        // orderInfo += "&extern_token=" + "\"" + extern_token + "\"";

        // 支付宝处理完请求后,当前页面跳转到商户指定页面的路径,可空
        orderInfo += "&return_url=\"m.alipay.com\"";

        // 调用银行卡支付,需配置此参数,参与签名, 固定值 (需要签约《无线银行卡快捷支付》才能使用)
        // orderInfo += "&paymethod=\"expressGateway\"";
        return orderInfo;
    }

    private static String GetSign(String content){
        return SignUtils.sign(content,AlipayConfig.private_key);
    }
}

控制层代码

    @At("/alipay")
    @Ok("json")
    public Object Alipay(@Param("order_id") String order_id,
                         @Param("order_price") String order_price,
                         @Param("body") String body){
        Map<String, String> requPara = new HashMap<String, String>();
        String url = AlipayTradeUtil.CreateOrd(order_id,body,order_price);
        requPara.put("url",url);
        return ResultApp.success("success",requPara);
    }

最新的支付接口 花了很多时间调试 都是各种问题
一直没有调成功 目前用这个老的接口方法能解决问题 先这样
写出了 希望能帮到需要的人

0 回复
添加回复
请先登陆
回到顶部