zoukankan      html  css  js  c++  java
  • salesforce 调用webservice

    Call External Web Service from Salesforce Apex

    Some times, you may need to call an extenal web service which might have written on a serverside language like .net, php or java.
    Once you made your web service on the serverside or you can use a third party web service api. 

    I will explain you this using Authorize.netpayment gateway. 
    There are several types of payment criterias available for Authorize.net. For an example I will go with CIM (Customer Information Manager)
    You will find all the details in Authoirze.netdeveloper documentation.

    To do payments on authorize using CIM we need to create customer profile first.

    Here is the apex code that calls an external web service.

    //Before any Apex 
    callout can call an external site, that site must be registered in the Remote Site Settings page, or the call will fail. The platform, by default, prevents calls to unauthorized network addresses. 
    //You can do this like this: got Setup->Administration setup->Security controls->Remote site settings->New and add your endpoint URL there.
    //In our case the ende point is https://api.authorize.net/soap/v1/Service.asmx.

    1. Public class callExternalWS  
    2. {  
    3.     public void invokeExternalWs()  
    4.     {  
    5.         HttpRequest req = new HttpRequest();  
    6.         //Set HTTPRequest Method  
    7.         req.setMethod('POST');  
    8.         req.setEndpoint('https://api.authorize.net/soap/v1/Service.asmx');  
    9.         req.setMethod('POST');  
    10.         req.setHeader('Content-Type''text/xml; charset=utf-8');  
    11.         req.setHeader('SOAPAction''https://api.authorize.net/soap/v1/CreateCustomerProfile');//  
    12.         string b =   '<?xml version="1.0" encoding="utf-8"?><soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">'+  
    13.                       '<soap:Body><CreateCustomerProfile xmlns="https://api.authorize.net/soap/v1/">'+  
    14.                       '<merchantAuthentication><name>Merchant name here</name>'+  
    15.                       '<transactionKey>Transaction Key here</transactionKey></merchantAuthentication>'+  
    16. '<profile><description>description</description>'+  
    17.                       '<email>sforce2009@gmail.com</email>'+  
    18.                       '<paymentProfiles>'+  
    19.                       '<CustomerPaymentProfileType><customerType>individual</customerType>'+  
    20. '<payment><creditCard><cardNumber>6011000000000012</cardNumber>'+  
    21.                       '<expirationDate>2009-12</expirationDate></creditCard>'+  
    22.                       '</payment></CustomerPaymentProfileType></paymentProfiles></profile>'+  
    23.                       '</CreateCustomerProfile></soap:Body></soap:Envelope>';  
    24.         req.setBody(b);  
    25.         Http http = new Http();  
    26.         try {  
    27.           //Execute web service call here         
    28.           HTTPResponse res = http.send(req);     
    29.           //Helpful debug messages  
    30.           System.debug(res.toString());  
    31.           System.debug('STATUS:'+res.getStatus());  
    32.           System.debug('STATUS_CODE:'+res.getStatusCode());  
    33.         //YOU CAN ALWAYS PARSE THE RESPONSE XML USING XmlStreamReader  CLASS  
    34.        } catch(System.CalloutException e) {  
    35.             //Exception handling goes here....  
    36.      }         
    37. }  
    38. }  


    Hope this is useful

  • 相关阅读:
    Linux中将两块新硬盘合并成一个,挂载到/data目录下
    linux将硬盘格式化为xfs文件系统
    nginx配置文件
    centos 添加新硬盘,lvm对根目录扩容
    centos7重新调整分区大小
    Linux 一种调用蜂鸣器的方法
    mybatis中 keyProperty="id" 的作用
    MySQL实战45讲
    常用正则表达式最强整理(速查手册)
    linux下nacos的1.1.3版本集群部署
  • 原文地址:https://www.cnblogs.com/yqskj/p/3041781.html
Copyright © 2011-2022 走看看