移动支付服务端接口
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.回调地址
根据客户端返回来的状态,修改账号的金额和状态
移动支付申请
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.回调地址
根据客户端返回来的状态,修改账号的金额和状态
相关文章推荐
- Linux Shell的第一个小程序
- WPS 去掉自动打开的文档漫游和在线模板
- chrome查看hover样式方法
- hdoj5491The Next
- Lowest Common Ancestor of a Binary Search Tree
- UIView的四种动画(类似于下拉刷新的动画效果)
- mysql数据库中外键的用法
- Ubuntu下的环境变量LD_LIBRARY_PATH
- Android 网络编程 Socket
- 基于Jws的WebService项目
- 针对谷歌默认最小字体12px的正确解决方案
- 关于C++的递归调用(n的阶乘为例)
- Java微信开发之现金红包接口
- CountDownLatch
- 九宫格 - 购物车抽象实现
- IOS网络访问之使用AFNetworking
- 堆和栈的区别
- 设计模式笔记--迭代器模式
- My mac cannot run 类相关的操作 , which is lower than 类相关的操作。
- PHP防止重复提交表单