主题
下单与加密
下单接口
信息
- 地址:
https://openapi.syacn.cn/api/order/create - 请求方式:
POST - 参数格式:
JSON
入参
参数
| 参数 | 名称 | 类型 | 说明 | 为空 |
|---|---|---|---|---|
appkey | 商户号/渠道号 | String(20) | 商户后台创建的应用appkey | NO |
sign | RSA加密内容 | String(1000) | NO |
样例
json
{
"sign": "qftV4o2SDu1qNZgV43vdAVX/Jsgcz1ebkZpAAejDH/iTV/Fb3TQbLaRK1F+TVP89VIZZw88zP01GpPTB/Dh+I/ID2mN0ytwv+PgdUw5OY/asOiwvzFvrF4aXjTO54bidkRs7TsK7AJM6oGrOefVqk2OjcSToTEajk9ou+5a5DnE=",
"appkey": "tongbao"
}响应
参数
| 参数 | 上级 | 名称 | 类型 | 说明 | 为空 |
|---|---|---|---|---|---|
code | 响应码 | String | 200 为成功 | NO | |
msg | 响应描述 | String | YES | ||
info | 响应数据 | Object | NO | ||
orderNumber | info | 通宝订单号 | String | 通宝订单编号 | NO |
orderValidEndDay | info | 有效截止时间 | String | 权益有效时间 | NO |
样例
json
{
"code": "200",
"msg": "ok",
"info": {
"orderNumber": "TB2001080001900004",
"orderValidEndDay": "2022-01-08"
}
}注意: 每个用户调用一次下单接口即可,返回订单编号后保存到数据库,在订单有效期内这个订单编号都是有效的。
加密说明
入参
参数
| 参数 | 名称 | 类型 | 说明 | 为空 |
|---|---|---|---|---|
ts | 当前时间戳 | String(13) | 毫秒,5分钟内有效 | NO |
p | 支付金额 | String(20) | 单位元,0.01 | NO |
cId | 合作方用户编号 | String | 合作方的用户的唯一id | NO |
oId | 合作方流水号 | String | 与通宝订单id一对一,需保证唯一 | NO |
加密公钥publicKey通过通宝后台管理系统获取
样例
json
{
"timestamp": "1643025555000",
"payAmt": "4.5",
"channelUserId": "15866668888",
"serialNo": "000001"
}加密Demo-Java版
java
import org.apache.tomcat.util.codec.binary.Base64;
import javax.crypto.Cipher;
import java.security.KeyFactory;
import java.security.PublicKey;
import java.security.spec.X509EncodedKeySpec;
public static String encryptByPubKey(String data, String publicKey) throws Exception {
byte[] pubKey = Base64.decodeBase64(publicKey);
X509EncodedKeySpec x509KeySpec = new X509EncodedKeySpec(pubKey);
KeyFactory keyFactory = KeyFactory.getInstance("RSA");
PublicKey publicKey1 = keyFactory.generatePublic(x509KeySpec);
Cipher cipher = Cipher.getInstance(keyFactory.getAlgorithm());
cipher.init(Cipher.ENCRYPT_MODE, publicKey1);
return Base64.encodeBase64String(cipher.doFinal(data));
}加密Demo-PHP版
php
/**
* RSA 加密:(联合登录)
* @param $data 待签名数据
* @param $private_key_path 商户私钥文件路径
* return 签名结果
*/
public function rsaSign($data) {
$path = 'data/key/public_key.txt';
$st = json_encode($data);
$pri = file_get_contents($path);
$pk = openssl_pkey_get_public($pri);
openssl_public_encrypt($st, $encrypt_data, $pk);
return base64_encode($encrypt_data);
}