API

WP开放平台API接口

请先在http://mp.wordpressopen.com 注册,创建网站应用,获取网站应用ID和AppSecret;此外如需要APP支付请单独联系客服。
一.下单接口:
请求地址:https://pay.wordpressopen.com/payment/do.html
请求方式:http post
请求数据格式: 【json】

参数
1.version 接口版本号,固定值:1.0
2.lang 接入语言 取值:zh-cn或en-us
3.plugins 接入插件ID,任意字符串,标识作用,示例:my-wechat
4.appid 应用ID
5.trade_order_id 网站订单号,唯一。
6.payment 支付网关: wechat 或 alipay
7.is_app 是否是移动端 Y(是) |N(否)
8.total_fee 订单近(人民币)
9.title 订单标题
10.description 订单描述 (可选)
11.time 自Unix 纪元(January 1 1970 00:00:00 GMT)起的当前时间的秒数的函数
12.notify_url 回调URL(订单支付成功后,WP开放平台会把支付成功消息异步回调到这个地址上)
13.return_url 支付成功url(订单支付成功后,浏览器会跳转到这个地址上)
14.callback_url 商品详情URL或支付页面的URL(移动端,商品支付失败时,会跳转到这个地址上)
15.nonce_str 随机字符串(一定要每次都不一样,保证请求安全)
16.hash 加密数据

其中,hash计算方法:
private final String generate_xh_hash(HashMap<String , String> params,String appSecret) throws Exception{
if(params==null){
throw new Exception(“datas is null!”);
}

List<String> list = new ArrayList<String>(params.keySet());
//对key键值按字典升序排序
Collections.sort(list);
String paramString =””;

for (int i = 0; i < list.size(); i++) {
String key =list.get(i);
if(key==null||”hash”==key){
continue;
}

if(paramString.length()>0){
paramString+=”&”;
}
paramString+=key+”=”+ params.get(key);
}

return DigestUtils.md5Hex((paramString+appSecret).getBytes());
}

示例:
HashMap<String , String> params=new HashMap<String , String>();
params.put(“version”, “1.0”);
params.put(“lang”, “zh-cn”);
params.put(“plugins”, “my-wechat”);
params.put(“appid”, “20160102”);
params.put(“trade_order_id”, “51222”);
params.put(“payment”, “wechat”);
params.put(“is_app”, “N”);
params.put(“total_fee”, “12.5”);
params.put(“title”, “测试”);
params.put(“description”, “测试描述”);
long time= System.currentTimeMillis()/1000;
params.put(“time”,String.valueOf(time));
params.put(“notify_url”, “http://www.a.com/notify”);
params.put(“return_url”, “http://www.a.com/order/success”);
params.put(“callback_url”, “http://www.a.com/product/1.html”);
params.put(“nonce_str”, “http://www.a.com/product/1.html”);

//计算hash
params.put(“hash”, generate_xh_hash(params,”AMASNXCASCLASHSABSYAS”));

String jsonString =JSONObject.fromObject(params);

//
http POST json ….

返回数据(json):

“errcode” :0, //0.成功,非0,失败
“errmsg” :””,//错误消息
“url”:”https://pay.com/…” , //支付地址(跳转到这个地址进行支付),
“hash” :”asasasxxasxas” //签名【请对返回数据进行签名比对,防止他人恶意攻击】,

二.订单成功,回调接口(notify URL)

回调参数(post参数中获取)
1.trade_order_id 网站订单号,唯一
2.total_fee 订单金额
3.transacton_id 业务订单号
4.order_date 订单支付时间
5.plugins 请求时的plugins
6.status OD 已支付 ,WP或其他 :未知或待定
7.hash 签名

//1.检查签名是否正确
2.订单状态判断
if(status==’OD’){
//更新订单状态(WP开放平台可能会多次回调这个接口,请确保二次回调时,系统能正常处理业务)

//….
}

成功时:

HashMap<String , String> params=new HashMap<String , String>();
params.put(“appid”, “2009120121”);
params.put(“action”, “success”);
params.put(“hash”, generate_xh_hash(params,”AMASNXCASCLASHSABSYAS”));
String jsonString =JSONObject.fromObject(params);

(返回) jsonString;

PHP DEMO下载