abap cer证书 post_ABAP 提供http post服务

ABAP 提供http post服务

ABAP 提供http post服务

1. SE24新建类ZCL_POS_HTTP_POST

实现接口IF_HTTP_EXTENSION

2. SICF在路径/default_host/sap/bc/下新建服务ZAPI_POS_HTTP,使用上面新建的类

方法HANDLE_REQUEST

DATA: lv_method       TYPE string,

lv_content_type TYPE string,

lv_parameter    TYPE string,

lt_head_fields  TYPE tihttpnvp,

lv_parameter_return    TYPE string,

lv_result       TYPE string,

lv_xdata        TYPE xstring,

lv_xdata_o      TYPE xstring,

lv_json         TYPE string.

DATA: lv_service TYPE string,

lv_query   TYPE string,

lv_out     TYPE string,

lv_zfunc   TYPE rs38l_fnam.

DATA: serializer TYPE REF TO cl_trex_json_serializer.

*  *******************************************************************************

CLEAR: lv_method, lv_content_type, lv_parameter, lv_result .

lv_method = server->request->get_header_field( '~request_method' ). " 调用方式(POST/GET)

IF lv_method = 'GET'.

CREATE OBJECT serializer

EXPORTING data = lv_parameter.

CALL METHOD serializer->serialize( ).

lv_json = serializer->get_data( ).

ELSEIF  lv_method = 'POST'.

*  *类型校验可以不需要

lv_content_type = server->request->get_header_field( 'Content-Type' ).

*        CHECK lv_content_type+0(16) = 'application/json' .

**  *  获得输入参数

*      CALL METHOD server->request->get_cdata

*        RECEIVING

*          data = lv_parameter.

*      获得header

CALL METHOD server->request->get_header_fields

CHANGING

fields = lt_head_fields.

CALL FUNCTION 'ZFM_POS_RETURN_PAY_RESULT'

EXPORTING

"iv_parameter       = lv_parameter

IT_HEAD_FIELDS     = lt_head_fields

IMPORTING

ov_parameter       = lv_parameter_return

.

CALL METHOD server->response->set_cdata

EXPORTING

data = lv_parameter_return.

ENDIF.

函数:ZFM_POS_RETURN_PAY_RESULT

*"----------------------------------------------------------------------

*"*"本地接口:

*"  IMPORTING

*"     REFERENCE(IV_PARAMETER) TYPE  STRING OPTIONAL

*"     REFERENCE(IT_HEAD_FIELDS) TYPE  TIHTTPNVP OPTIONAL

*"  EXPORTING

*"     REFERENCE(OV_PARAMETER) TYPE  STRING

*"----------------------------------------------------------------------

DATA: lr_deserializer TYPE REF TO cl_trex_json_deserializer.

DATA: lwa_zttr10 TYPE zttr10.

DATA: lv_json TYPE string.

DATA: lwa_head_fields TYPE ihttpnvp.

DATA: lwa_tab TYPE ty_result.

DATA: lt_tab TYPE TABLE OF ty_result.

READ TABLE it_head_fields INTO lwa_head_fields WITH KEY name = '~query_string'.

IF lwa_head_fields IS NOT INITIAL.

PERFORM frm_mapping_result_fields USING lwa_head_fields-value

CHANGING lt_tab.

ENDIF.

IF lt_tab[] IS INITIAL.

ov_parameter = '未解析到数据'.

RETURN.

ENDIF.

LOOP AT lt_tab INTO lwa_tab.

CLEAR: lwa_zttr10.

SELECT SINGLE * INTO lwa_zttr10

FROM zttr10

WHERE cusid = lwa_tab-cusid         "商户号

AND bizseq = lwa_tab-bizseq.      "检索单号

*    IF sy-subrc NE 0.

*      ov_parameter = 'bizseq is Non-existent '.

*      EXIT.

*    ENDIF.

MOVE-CORRESPONDING lwa_tab TO lwa_zttr10.

lwa_zttr10-state = 'Y'.

CALL FUNCTION 'ZFM_DBM_SET_UPDATE_LOG'

EXPORTING

iv_mode       = 'U'

CHANGING

cs_line       = lwa_zttr10

.

CALL FUNCTION 'ZFM_UPDATE_ZTTR10' IN UPDATE TASK

EXPORTING

is_zttr10       = lwa_zttr10

.

COMMIT WORK AND WAIT.

IF sy-subrc = 0.

ov_parameter = 'success'.

ELSE.

ov_parameter = 'error'.

ENDIF.

ENDLOOP.

FORM frm_mapping_result_fields  USING    pv_value TYPE ihttpval

CHANGING ct_tab TYPE tt_result.

DATA: BEGIN OF lt_string OCCURS 0,

value TYPE char255,

END OF lt_string.

DATA: lwa_tab TYPE ty_result.

DATA: lv_name TYPE string.

DATA: lv_value TYPE string.

"sap-client=200&acct=opn0buHwphGY11u5Q01PEVymBZYI&accttype=99&amount=12&appid=00004391&bizseq=02191030085936389A48&cusid=550100082990B20&fee=0&paytime=20191030090039&randomstr=655509&sign=da861f3b496904d6d6c0a7b779eef0e6&signtype=MD5

"&termbatchid=000224&ter

"若该参数值有中文,则会出现乱码现象,需要将中文转换成 %+ASCII 形

CALL METHOD cl_http_utility=>unescape_url

EXPORTING

escaped   = pv_value

RECEIVING

unescaped = lv_value.

SPLIT lv_value AT '&' INTO TABLE lt_string.

LOOP AT lt_string.

CLEAR: lv_name,lv_value.

SPLIT lt_string-value AT '=' INTO lv_name lv_value.

CASE lv_name.

WHEN 'trxcode'.

lwa_tab-trxcode = lv_value.

WHEN 'appid'.

lwa_tab-appid = lv_value.

WHEN 'cusid'.

lwa_tab-cusid = lv_value.

WHEN 'timestamp'.

lwa_tab-timestamp = lv_value.

WHEN 'randomstr'.

lwa_tab-randomstr = lv_value.

WHEN 'sign'.

lwa_tab-sign = lv_value.

WHEN 'bizseq'.

lwa_tab-bizseq = lv_value.

WHEN 'trxstatus'.

lwa_tab-trxstatus = lv_value.

WHEN 'amount'.

lwa_tab-amount = lv_value.

WHEN 'trxid'.

lwa_tab-trxid = lv_value.

WHEN 'srctrxid'.

lwa_tab-srctrxid = lv_value.

WHEN 'trxday'.

lwa_tab-trxday = lv_value.

WHEN 'paytime'.

lwa_tab-paytime = lv_value.

WHEN 'termid'.

lwa_tab-termid = lv_value.

WHEN 'termbatchid'.

lwa_tab-termbatchid = lv_value.

WHEN 'traceno'.

lwa_tab-traceno = lv_value.

WHEN 'trxreserve'.

lwa_tab-trxreserve = lv_value.

WHEN 'accttype'.

lwa_tab-accttype = lv_value.

WHEN 'acct'.

lwa_tab-acct = lv_value.

WHEN 'termauthno'.

lwa_tab-termauthno = lv_value.

WHEN 'termrefnum'.

lwa_tab-termrefnum = lv_value.

WHEN 'fee'.

lwa_tab-fee = lv_value.

WHEN 'signtype'.

lwa_tab-signtype = lv_value.

WHEN OTHERS.

ENDCASE.

ENDLOOP.

APPEND lwa_tab TO ct_tab.

ENDFORM.

ABAP 提供http post服务相关教程

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值