您的位置:首页 > 其它

移动支付服务端接口

2016-01-13 10:30 435 查看
1.开通移动支付的功能

移动支付申请
https://b.alipay.com/newIndex.htm
2.准备好参数

//↓↓↓↓↓↓↓↓↓↓请在这里配置您的基本信息↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓

// 合作身份者ID,以2088开头由16位纯数字组成的字符串

public static String partner = "";

// 商户的私钥

public static String private_key = "";

// 支付宝的公钥,无需修改该值

public static String ali_public_key = "";

//↑↑↑↑↑↑↑↑↑↑请在这里配置您的基本信息↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑

// 调试用,创建TXT日志文件夹路径

public static String log_path = "D:\\";

// 字符编码格式 目前支持 gbk 或 utf-8

public static String input_charset = "utf-8";

// 签名方式 不需修改

public static String sign_type = "RSA";

public static final String SELLER = "";

public static final String RSA_PRIVATE = "";

public static final String RSA_PUBLIC = "";

public static final String NOTIFY_URL = "";

3.做订单参数拼接

public static String create( String orderNo, String price) {

String orderInfo = getOrderInfo( orderNo, price);

String sign = SignUtils.sign(orderInfo, AlipayConfig.RSA_PRIVATE);

try {

// 仅需对sign 做URL编码

sign = URLEncoder.encode(sign, "UTF-8");

} catch (UnsupportedEncodingException e) {

e.printStackTrace();

}

// 完整的符合支付宝参数规范的订单信息

return orderInfo + "&sign=\\\"" + sign +"\\"+ "\"&" + getSignType();

}

public static String getOrderInfo( String orderNo, String price) {

// 签约合作者身份ID

String orderInfo = "\"partner=\\" + "\"" + AlipayConfig.partner +"\\"+ "\"";

// 签约卖家支付宝账号

orderInfo += "&seller_id=\\" + "\"" + AlipayConfig.SELLER+"\\" + "\"";

// 商户网站唯一订单号

orderInfo += "&out_trade_no=\\" + "\"" + orderNo +"\\"+ "\"";

// 商品详情

orderInfo += "&body=\\" + "\"" + "支付金额"+"\\" + "\"";

// 商品金额

orderInfo += "&total_fee=\\" + "\"" + price+"\\" + "\"";

// 服务器异步通知页面路径

orderInfo += "¬ify_url=\\" + "\"" + AlipayConfig.NOTIFY_URL +"\\"+ "\"";

// 服务接口名称, 固定值

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=\"\"";

// 调用银行卡支付,需配置此参数,参与签名, 固定值 (需要签约《无线银行卡快捷支付》才能使用)

// orderInfo += "&paymethod=\"expressGateway\"";

return orderInfo;

}

public static String getSignType() {

return "sign_type=\\\"RSA"+"\\"+"\""+"\"";

}

参考格式如下:

{

"status": "2000000",

"msg": "success",

"data": "partner=\"合作身份者ID\"&seller_id=\"商户的私钥\"&out_trade_no=\"订单号\"&body=\"支付金额\"&total_fee=\"流水金额\"¬ify_url=\"回调地址(需要自己写)\"&service=\"mobile.securitypay.pay\"&payment_type=\"1\"&_input_charset=\"utf-8\"&it_b_pay=\"30m\"&sign=\"签名"&sign_type=\"签名类型\""

}

4.签名

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;

}

5.回调地址

根据客户端返回来的状态,修改账号的金额和状态
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: