Skip to content

下单与加密

下单接口

信息

  • 地址: https://openapi.syacn.cn/api/order/create
  • 请求方式: POST
  • 参数格式: JSON

入参

参数

参数名称类型说明为空
appkey商户号/渠道号String(20)商户后台创建的应用appkeyNO
signRSA加密内容String(1000)NO

样例

json
{
  "sign": "qftV4o2SDu1qNZgV43vdAVX/Jsgcz1ebkZpAAejDH/iTV/Fb3TQbLaRK1F+TVP89VIZZw88zP01GpPTB/Dh+I/ID2mN0ytwv+PgdUw5OY/asOiwvzFvrF4aXjTO54bidkRs7TsK7AJM6oGrOefVqk2OjcSToTEajk9ou+5a5DnE=",
  "appkey": "tongbao"
}

响应

参数

参数上级名称类型说明为空
code响应码String200 为成功NO
msg响应描述StringYES
info响应数据ObjectNO
orderNumberinfo通宝订单号String通宝订单编号NO
orderValidEndDayinfo有效截止时间String权益有效时间NO

样例

json
{
  "code": "200",
  "msg": "ok",
  "info": {
    "orderNumber": "TB2001080001900004",
    "orderValidEndDay": "2022-01-08"
  }
}

注意: 每个用户调用一次下单接口即可,返回订单编号后保存到数据库,在订单有效期内这个订单编号都是有效的。

加密说明

入参

参数

参数名称类型说明为空
ts当前时间戳String(13)毫秒,5分钟内有效NO
p支付金额String(20)单位元,0.01NO
cId合作方用户编号String合作方的用户的唯一idNO
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);
}