• 易捷支付完整业务流程的lr脚本编写


    业务流程:
    1、注册
    2、登录
    3、重置支付密码
    4、下订单
    5、支付订单
    6、查看订单列表

    通用md5.h代码如下:

      1 #ifndef MD5_H
      2 #define MD5_H
      3 #ifdef __alpha
      4 typedef unsigned int uint32;
      5 #else
      6 typedef unsigned long uint32;
      7 #endif
      8 struct MD5Context {
      9         uint32 buf[4];
     10         uint32 bits[2];
     11         unsigned char in[64];
     12 };
     13 extern void MD5Init();
     14 extern void MD5Update();
     15 extern void MD5Final();
     16 extern void MD5Transform();
     17 typedef struct MD5Context MD5_CTX;
     18 #endif
     19 #ifdef sgi
     20 #define HIGHFIRST
     21 #endif
     22 #ifdef sun
     23 #define HIGHFIRST
     24 #endif
     25 #ifndef HIGHFIRST
     26 #define byteReverse(buf, len)    /* Nothing */
     27 #else
     28 void byteReverse(buf, longs)unsigned char *buf; unsigned longs;
     29 {
     30     uint32 t;
     31     do {
     32     t = (uint32) ((unsigned) buf[3] << 8 | buf[2]) << 16 |((unsigned) buf[1] << 8 | buf[0]);
     33     *(uint32 *) buf = t;
     34     buf += 4;
     35     } while (--longs);
     36 }
     37 #endif
     38 void MD5Init(ctx)struct MD5Context *ctx;
     39 {
     40     ctx->buf[0] = 0x67452301;
     41     ctx->buf[1] = 0xefcdab89;
     42     ctx->buf[2] = 0x98badcfe;
     43     ctx->buf[3] = 0x10325476;
     44     ctx->bits[0] = 0;
     45     ctx->bits[1] = 0;
     46 }
     47 void MD5Update(ctx, buf, len) struct MD5Context *ctx; unsigned char *buf; unsigned len;
     48 {
     49     uint32 t;
     50     t = ctx->bits[0];
     51     if ((ctx->bits[0] = t + ((uint32) len << 3)) < t)
     52     ctx->bits[1]++;
     53     ctx->bits[1] += len >> 29;
     54     t = (t >> 3) & 0x3f;
     55     if (t) {
     56     unsigned char *p = (unsigned char *) ctx->in + t;
     57     t = 64 - t;
     58     if (len < t) {
     59         memcpy(p, buf, len);
     60         return;
     61     }
     62     memcpy(p, buf, t);
     63     byteReverse(ctx->in, 16);
     64     MD5Transform(ctx->buf, (uint32 *) ctx->in);
     65     buf += t;
     66     len -= t;
     67     }
     68     while (len >= 64) {
     69     memcpy(ctx->in, buf, 64);
     70     byteReverse(ctx->in, 16);
     71     MD5Transform(ctx->buf, (uint32 *) ctx->in);
     72     buf += 64;
     73     len -= 64;
     74     }
     75     memcpy(ctx->in, buf, len);
     76 }
     77 void MD5Final(digest, ctx)
     78     unsigned char digest[16]; struct MD5Context *ctx;
     79 {
     80     unsigned count;
     81     unsigned char *p;
     82     count = (ctx->bits[0] >> 3) & 0x3F;
     83     p = ctx->in + count;
     84     *p++ = 0x80;
     85     count = 64 - 1 - count;
     86     if (count < 8) {
     87     memset(p, 0, count);
     88     byteReverse(ctx->in, 16);
     89     MD5Transform(ctx->buf, (uint32 *) ctx->in);
     90     memset(ctx->in, 0, 56);
     91     } else {
     92     memset(p, 0, count - 8);
     93     }
     94     byteReverse(ctx->in, 14);
     95     ((uint32 *) ctx->in)[14] = ctx->bits[0];
     96     ((uint32 *) ctx->in)[15] = ctx->bits[1];
     97     MD5Transform(ctx->buf, (uint32 *) ctx->in);
     98     byteReverse((unsigned char *) ctx->buf, 4);
     99     memcpy(digest, ctx->buf, 16);
    100     memset(ctx, 0, sizeof(ctx));
    101 }
    102 
    103 #define F1(x, y, z) (z ^ (x & (y ^ z)))
    104 #define F2(x, y, z) F1(z, x, y)
    105 #define F3(x, y, z) (x ^ y ^ z)
    106 #define F4(x, y, z) (y ^ (x | ~z))
    107 #define MD5STEP(f, w, x, y, z, data, s) ( w += f(x, y, z) + data,  w = w<<s | w>>(32-s),  w += x )
    108 void MD5Transform(buf, in)
    109     uint32 buf[4]; uint32 in[16];
    110 {
    111     register uint32 a, b, c, d;
    112     a = buf[0];
    113     b = buf[1];
    114     c = buf[2];
    115     d = buf[3];
    116     MD5STEP(F1, a, b, c, d, in[0] + 0xd76aa478, 7);
    117     MD5STEP(F1, d, a, b, c, in[1] + 0xe8c7b756, 12);
    118     MD5STEP(F1, c, d, a, b, in[2] + 0x242070db, 17);
    119     MD5STEP(F1, b, c, d, a, in[3] + 0xc1bdceee, 22);
    120     MD5STEP(F1, a, b, c, d, in[4] + 0xf57c0faf, 7);
    121     MD5STEP(F1, d, a, b, c, in[5] + 0x4787c62a, 12);
    122     MD5STEP(F1, c, d, a, b, in[6] + 0xa8304613, 17);
    123     MD5STEP(F1, b, c, d, a, in[7] + 0xfd469501, 22);
    124     MD5STEP(F1, a, b, c, d, in[8] + 0x698098d8, 7);
    125     MD5STEP(F1, d, a, b, c, in[9] + 0x8b44f7af, 12);
    126     MD5STEP(F1, c, d, a, b, in[10] + 0xffff5bb1, 17);
    127     MD5STEP(F1, b, c, d, a, in[11] + 0x895cd7be, 22);
    128     MD5STEP(F1, a, b, c, d, in[12] + 0x6b901122, 7);
    129     MD5STEP(F1, d, a, b, c, in[13] + 0xfd987193, 12);
    130     MD5STEP(F1, c, d, a, b, in[14] + 0xa679438e, 17);
    131     MD5STEP(F1, b, c, d, a, in[15] + 0x49b40821, 22);
    132     MD5STEP(F2, a, b, c, d, in[1] + 0xf61e2562, 5);
    133     MD5STEP(F2, d, a, b, c, in[6] + 0xc040b340, 9);
    134     MD5STEP(F2, c, d, a, b, in[11] + 0x265e5a51, 14);
    135     MD5STEP(F2, b, c, d, a, in[0] + 0xe9b6c7aa, 20);
    136     MD5STEP(F2, a, b, c, d, in[5] + 0xd62f105d, 5);
    137     MD5STEP(F2, d, a, b, c, in[10] + 0x02441453, 9);
    138     MD5STEP(F2, c, d, a, b, in[15] + 0xd8a1e681, 14);
    139     MD5STEP(F2, b, c, d, a, in[4] + 0xe7d3fbc8, 20);
    140     MD5STEP(F2, a, b, c, d, in[9] + 0x21e1cde6, 5);
    141     MD5STEP(F2, d, a, b, c, in[14] + 0xc33707d6, 9);
    142     MD5STEP(F2, c, d, a, b, in[3] + 0xf4d50d87, 14);
    143     MD5STEP(F2, b, c, d, a, in[8] + 0x455a14ed, 20);
    144     MD5STEP(F2, a, b, c, d, in[13] + 0xa9e3e905, 5);
    145     MD5STEP(F2, d, a, b, c, in[2] + 0xfcefa3f8, 9);
    146     MD5STEP(F2, c, d, a, b, in[7] + 0x676f02d9, 14);
    147     MD5STEP(F2, b, c, d, a, in[12] + 0x8d2a4c8a, 20);
    148     MD5STEP(F3, a, b, c, d, in[5] + 0xfffa3942, 4);
    149     MD5STEP(F3, d, a, b, c, in[8] + 0x8771f681, 11);
    150     MD5STEP(F3, c, d, a, b, in[11] + 0x6d9d6122, 16);
    151     MD5STEP(F3, b, c, d, a, in[14] + 0xfde5380c, 23);
    152     MD5STEP(F3, a, b, c, d, in[1] + 0xa4beea44, 4);
    153     MD5STEP(F3, d, a, b, c, in[4] + 0x4bdecfa9, 11);
    154     MD5STEP(F3, c, d, a, b, in[7] + 0xf6bb4b60, 16);
    155     MD5STEP(F3, b, c, d, a, in[10] + 0xbebfbc70, 23);
    156     MD5STEP(F3, a, b, c, d, in[13] + 0x289b7ec6, 4);
    157     MD5STEP(F3, d, a, b, c, in[0] + 0xeaa127fa, 11);
    158     MD5STEP(F3, c, d, a, b, in[3] + 0xd4ef3085, 16);
    159     MD5STEP(F3, b, c, d, a, in[6] + 0x04881d05, 23);
    160     MD5STEP(F3, a, b, c, d, in[9] + 0xd9d4d039, 4);
    161     MD5STEP(F3, d, a, b, c, in[12] + 0xe6db99e5, 11);
    162     MD5STEP(F3, c, d, a, b, in[15] + 0x1fa27cf8, 16);
    163     MD5STEP(F3, b, c, d, a, in[2] + 0xc4ac5665, 23);
    164     MD5STEP(F4, a, b, c, d, in[0] + 0xf4292244, 6);
    165     MD5STEP(F4, d, a, b, c, in[7] + 0x432aff97, 10);
    166     MD5STEP(F4, c, d, a, b, in[14] + 0xab9423a7, 15);
    167     MD5STEP(F4, b, c, d, a, in[5] + 0xfc93a039, 21);
    168     MD5STEP(F4, a, b, c, d, in[12] + 0x655b59c3, 6);
    169     MD5STEP(F4, d, a, b, c, in[3] + 0x8f0ccc92, 10);
    170     MD5STEP(F4, c, d, a, b, in[10] + 0xffeff47d, 15);
    171     MD5STEP(F4, b, c, d, a, in[1] + 0x85845dd1, 21);
    172     MD5STEP(F4, a, b, c, d, in[8] + 0x6fa87e4f, 6);
    173     MD5STEP(F4, d, a, b, c, in[15] + 0xfe2ce6e0, 10);
    174     MD5STEP(F4, c, d, a, b, in[6] + 0xa3014314, 15);
    175     MD5STEP(F4, b, c, d, a, in[13] + 0x4e0811a1, 21);
    176     MD5STEP(F4, a, b, c, d, in[4] + 0xf7537e82, 6);
    177     MD5STEP(F4, d, a, b, c, in[11] + 0xbd3af235, 10);
    178     MD5STEP(F4, c, d, a, b, in[2] + 0x2ad7d2bb, 15);
    179     MD5STEP(F4, b, c, d, a, in[9] + 0xeb86d391, 21);
    180     buf[0] += a;
    181     buf[1] += b;
    182     buf[2] += c;
    183     buf[3] += d;
    184 }
    185 char* CMd5(const char* s)
    186 {
    187      struct MD5Context md5c;
    188      unsigned char ss[16];
    189      char subStr[3],resStr[33];
    190      int i;
    191      MD5Init( &md5c );
    192      MD5Update( &md5c, s, strlen(s) );
    193      MD5Final( ss, &md5c );
    194      strcpy(resStr,"");
    195      for( i=0; i<16; i++ )
    196      {
    197          sprintf(subStr, "%02x", ss[i] );
    198          itoa(ss[i],subStr,16);
    199          if (strlen(subStr)==1) {
    200              strcat(resStr,"0");
    201          }
    202          strcat(resStr,subStr);
    203      }
    204      strcat(resStr,"");
    205      return resStr;
    206 }
    View Code

     业务lr脚本如下:

      1 Action()
      2 {
      3 
      4     //================注册===========================
      5 //    web_custom_request("注册",
      6 //        "URL=http://192.168.145.130:8080/mobile/api/user/register",
      7 //        "Method=POST",
      8 //        "TargetFrame=",
      9 //        "Resource=0",
     10 //        "Referer=",
     11 //        "Mode=HTML",
     12 //        "EncType=application/json",
     13 //        "Body={"mobile":"{mobile}","password":"123456","code":"3367","platform":"windows","username":"shon01"}",
     14 //        LAST); 
     15 
     16     //调用md5小写32位加密函数,将密码加密后赋值给paypassword
     17     lr_save_string(CMd5("123456"),"paypassword");
     18 
     19     web_reg_save_param_ex(
     20         "ParamName=get_code",
     21         "LB={"code":",
     22         "RB=,"msg"",
     23         SEARCH_FILTERS,
     24         LAST);
     25     web_reg_save_param_ex(
     26         "ParamName=get_token",
     27         "LB="token":"",
     28         "RB=","identity",
     29         SEARCH_FILTERS,
     30         LAST);
     31     //=====================登录=====================
     32     web_custom_request("登录",
     33         "URL=http://192.168.145.130:8080/mobile/api/user/login",
     34         "Method=POST",
     35         "TargetFrame=",
     36         "Resource=0",
     37         "Referer=",
     38         "Mode=HTML",
     39         "EncType=application/json",
     40         "Body={"mobile":"18705092505","password":"123456"}",
     41         LAST);
     42     lr_error_message("用户登录成功!%s",lr_eval_string("{get_code}"));
     43     lr_error_message("token:%s",lr_eval_string("{get_token}"));
     44 
     45     
     46     
     47     web_reg_save_param_ex(
     48         "ParamName=get_payId",
     49         "LB=payId":"",
     50         "RB=","orders",
     51         SEARCH_FILTERS,
     52         LAST);
     53     web_reg_save_param_ex(
     54         "ParamName=value01",
     55         "LB=,"msg":"",
     56         "RB=,"data",
     57         SEARCH_FILTERS,
     58         LAST);
     59     //中文请求参数转换
     60     lr_convert_string_encoding( "我是肖恩",LR_ENC_SYSTEM_LOCALE,LR_ENC_UTF8, "str" );  
     61     lr_save_string(lr_eval_string("{str}"),"strvalue");
     62     //====================下订单==============================
     63     web_custom_request("下订单",
     64         "URL=http://192.168.145.130:8080/mobile/api/order/addorder",
     65         "Method=POST",
     66         "TargetFrame=",
     67         "Resource=0",
     68         "Referer=",
     69         "Mode=HTML",
     70         "EncType=application/json",
     71         "Body={"token":"{get_token}","getAddrId":1,"getCarId":23,"payType":2,"remark":"{strvalue}","price":88,"orders":[{"getTime":"1450921104000","goodss":[{"goodsId":93,"count":1},{"goodsId":96,"count":1}]}],"invoiceTitle":"fapiao"}",
     72         LAST);
     73     //响应乱码转换
     74     lr_convert_string_encoding(lr_eval_string("{value01}"), LR_ENC_UTF8,LR_ENC_SYSTEM_LOCALE,"BM");
     75     lr_error_message(lr_eval_string("{BM}"));
     76     lr_error_message("payId:%s",lr_eval_string("{get_payId}"));
     77 
     78     web_reg_save_param_ex(
     79         "ParamName=value03",
     80         "LB=,"msg":"",
     81         "RB=,"data",
     82         SEARCH_FILTERS,
     83         LAST);
     84     
     85     //================重置密码========================重置一次之后就不需要再重置了
     86     /*web_custom_request("重置密码",
     87         "URL=http://192.168.145.130:8080/mobile/api/user/resetpaypwd",
     88         "Method=POST",
     89         "TargetFrame=",
     90         "Resource=0",
     91         "Referer=",
     92         "Mode=HTML",
     93         "EncType=application/json",
     94         "Body={"token":"{get_token}","password":"{paypassword}"}",
     95         LAST);
     96     lr_convert_string_encoding(lr_eval_string("{value03}"), LR_ENC_UTF8,LR_ENC_SYSTEM_LOCALE,"chong");
     97     lr_error_message(lr_eval_string("{chong}"));
     98     lr_error_message(lr_eval_string("{paypassword}"));  */
     99     
    100     web_reg_save_param_ex(
    101         "ParamName=value02",
    102         "LB=,"msg":"",
    103         "RB=,"data",
    104         SEARCH_FILTERS,
    105         LAST);
    106     //=================支付订单============================
    107     web_custom_request("支付订单",
    108         "URL=http://192.168.145.130:8080/mobile/api/pay/pay",
    109         "Method=POST",
    110         "TargetFrame=",
    111         "Resource=0",
    112         "Referer=",
    113         "Mode=HTML",
    114         "EncType=application/json",
    115         "Body={"token":"{get_token}","payId":"{get_payId}","payPwd":"{paypassword}","platform":3}",
    116         LAST);
    117     lr_convert_string_encoding(lr_eval_string("{value02}"), LR_ENC_UTF8,LR_ENC_SYSTEM_LOCALE,"msg");
    118     lr_error_message(lr_eval_string("{msg}"));
    119     
    120     lr_save_string(lr_eval_string("{get_token}"),"url_token");
    121     //将文本格式的token转换成url的
    122     web_convert_param("url_token", "SourceEncoding=PLAIN",
    123      "TargetEncoding=URL", LAST );
    124 
    125     //=====================查看订单列表========================
    126     web_custom_request("查看订单列表",
    127         "URL=http://192.168.145.130:8080/mobile/api/order/getorders?token={url_token}&offset=0&size=15",
    128         "Method=GET",
    129         "TargetFrame=",
    130         "Resource=0",
    131         "Referer=",
    132         "Mode=HTML",
    133         "EncType=application/json",
    134         "Body=",
    135         LAST);
    136     return 0;
    137 }

    注意:

    1、将md5文件放置脚本文件下后要,添加文件,操作如下图:

    2、添加md5.h文件之后,在globals.h文件里面要输入#include "md5.h" 引入,如图:

  • 相关阅读:
    redis基本操作 —— hash
    redis基本操作 —— string
    redis —— linux下源码安装
    zookeeper c api 安装 & 连接 zookeeper
    wpa_supplicant移植(2.9版本)
    hostapd移植(2.6版本为例)
    hostapd移植(2.7版本)
    使用MKdocs搭建个人主页并关联到GithubPages上
    yolov5的yaml文件解析
    RANSAC——(RANdom SAmple Consensus(随机抽样一致))
  • 原文地址:https://www.cnblogs.com/shonblog/p/10700431.html
Copyright © 2020-2023  润新知