开发教程

 

创建订单、订单支付后消息推送至第三方系统


用户创建了订单、或者针对某个订单完成付款以后,如何将订单相关信息推送至我自己的服务器或者网站?


一直以来困扰着诸位开发者的问题就在今天得到了完美解决。


首先您需要先登录工厂后台,设置你的  “消息推送地址” ,该地址将用来接收工厂给你推送的数据:


image.png


现在,当有用户完成下单或者完成订单支付后,您的这个地址将能收到工厂给你推送的数据了;


数据将会被放在 Request 的请求体 body 里面已 POST 的方式发送给你;


您收到数据后,需要进行解密,才能查看到原始的数据 (JSON格式),如果成功接收,请返回  success 字符串,否则工厂认为未成功推送,还将会继续推送!


具体解密方式为:使用 秘钥简单异或算法 进行对称解密,加解密的秘钥为您的商户秘钥;


java 解密方法:


public static String dec(String encedString) throws Exception {
  byte[] originalArray = Base64.decodeBase64(encedString);
  byte[] keyArray = 你的商户秘钥.getBytes();
  byte[] newArray = new byte[originalArray.length];
  
  for (int i = 0; i < originalArray.length; i++) {
    int kPos = i;
    if (kPos >= keyArray.length) kPos = 0;
    newArray[i] = (byte) (originalArray[i] ^ keyArray[kPos]);
  }
  
  String r = new String(newArray, "UTF-8");
  return r;
}


PHP 解密方法:


function getBytes($string) {
    $bytes = array();
    for($i = 0; $i < strlen($string); $i++){
        $bytes[] = ord($string[$i]);
    }
    return $bytes;
}

function toStr($bytes) {
    $str = '';
    foreach($bytes as $ch) {
        $str .= chr($ch);
    }
    return $str;
}

function dec ($originalStr, $key) {
    $originalArray = getBytes(base64_decode($originalStr));
    $keyArray = getBytes($key);
    $newArray = array();
    for ($i = 0; $i < count($originalArray); $i++) {
    $kPos = $i;
    if ($kPos >= count($keyArray)) $kPos = 0;
    $newArray[] = $originalArray[$i] ^ $keyArray[$kPos];
    }
    return toStr($newArray);
}


其他语言请自行百度,难度应该不大的。


推送失败重试规则:


1、当第一次推送,未收到 success 字符串返回,工厂认为你未成功接收,将在3秒后继续推送;


2、未收到 success 字符串返回,工厂认为你未成功接收,将在5秒后继续推送;


3、未收到 success 字符串返回,工厂认为你未成功接收,将在15秒后继续推送;


4、未收到 success 字符串返回,工厂认为你未成功接收,将在30秒后继续推送;


5、未收到 success 字符串返回,工厂认为你未成功接收,将在1分钟后继续推送;


6、未收到 success 字符串返回,工厂认为你未成功接收,将在5分钟后继续推送;


7、未收到 success 字符串返回,工厂认为你未成功接收,将在10分钟后继续推送;


8、未收到 success 字符串返回,工厂认为你未成功接收,将在20分钟后继续推送;


9、未收到 success 字符串返回,工厂认为你未成功接收,将在30分钟后继续推送;


10、未收到 success 字符串返回,工厂认为你未成功接收,将在45分钟后继续推送;


11、未收到 success 字符串返回,工厂认为你未成功接收,将在1小时后继续推送;


12、未收到 success 字符串返回,工厂认为你未成功接收,将在2小时后继续推送;


13、未收到 success 字符串返回,工厂认为你未成功接收,将在3小时后继续推送;


14、未收到 success 字符串返回,工厂认为你未成功接收,将在4小时后继续推送;


15、未收到 success 字符串返回,工厂认为你未成功接收,将在5小时后继续推送;


祝大家使用愉快!



Copyright © 杭州于芯科技有限公司

QQ交流群:479413914

微信小程序api接口

浙ICP备15041833号