Re: paypal

"Cristian Costantini [email protected] [cfmentor]" <[email protected]> Wed, 5 Nov 2014 16:45:16 +0100
Newsgroups gmane.comp.cms.cold-fusion.devel.italian
Message-ID <[email protected]>
--Apple-Mail=_20BD8DD3-E6B2-48A3-924A-2AB17403DBBA
Content-Type: text/plain; charset=windows-1252
Content-Transfer-Encoding: quoted-printable

Ho questo CFC che =E8 un po datato perch=E9 da qualche tempo sono passato a=
 REST



------------------------------------

------------------------------------

CFMentor
http://www.cfmentor.com
------------------------------------

Link utili di Yahoo Gruppi=20=20

<*> Per andare all'homepage del gruppo vai alla pagina:
    http://it.groups.yahoo.com/group/cfmentor/

<*> Le tue impostazioni email:
    Email singoli|Tradizionali

<*> Per cambiare le impostazioni online visita il sito:
    http://it.groups.yahoo.com/group/cfmentor/join
    (necessaria l'ID Yahoo!)

<*> Per cambiare le impostazioni tramite email:
    [email protected]=20
    [email protected]

<*> Per annullare l'iscrizione al gruppo scrivi a:
    [email protected]

<*> L'utilizzo da parte tua di Yahoo Gruppi =E8 soggetto alle:
    https://info.yahoo.com/legal/it/yahoo/tos.html


--Apple-Mail=_20BD8DD3-E6B2-48A3-924A-2AB17403DBBA
Content-Disposition: attachment;
	filename=ExpressCheckout.cfc
Content-Type: application/octet-stream;
	name="ExpressCheckout.cfc"
Content-Transfer-Encoding: 7bit

component accessors="true" {

    property name="useCertificate"type="boolean";
    property name="serverURL" type="String";
    property name="username" type="String";
    property name="password" type="String";
    property name="signature" type="String";
    property name="version" type="String";
    property name="returnURL" type="String";
    property name="cancelURL" type="String";
    property name="charset" type="String";
    property name="currencyCode" type="String";
    property name="noshipping" type="String";
    property name="allownote" type="String";
    property name="sandbox" type="String";
    property name="IPNListener" type="String";


    public ExpressCheckout function init( String charset="utf-8", String version="63.0", boolean useCertificate=false ){

        setCharset( arguments.charset );
        setVersion( arguments.version );
        setUseCertificate( arguments.useCertificate );

        return this;
    }

    public Struct function setExpressCheckout( required String amount, String currencyCode=getCurrencyCode(),
                                               String subject, String paymentAction='Authorization', String returnURL=getReturnURL(),
                                               String cancelURL=getCancelURL(),
                                               String billType,
                                               String billDesc,
                                               String payType,
                                               String custom){

        var obj = {};
        var result = {};
        var response = "";

        obj.put( 'paymentaction', arguments.paymentAction );
        obj.put( 'amt', arguments.amount );
        obj.put( 'returnurl', arguments.returnURL );
        obj.put( 'cancelurl', arguments.cancelURL );
        obj.put( 'method', 'setExpressCheckout' );
        obj.put( 'version', getVersion() );
        obj.put( 'currencycode', arguments.currencyCode );
        obj.put( 'noshipping', getNoshipping() );
        obj.put( 'allownote', getAllownote() );



        if (!isNull(arguments.billType))
            obj.put( 'L_BILLINGTYPE0', arguments.billType );
        if (!isNull(arguments.billDesc))
            obj.put( 'L_BILLINGAGREEMENTDESCRIPTION0', arguments.billDesc );
        if (!isNull(arguments.payType))
            obj.put( 'L_PAYMENTTYPE0', arguments.payType );
        if (!isNull(arguments.custom))
            obj.put( 'custom', arguments.custom );

        obj.put( 'user', getUsername() );
        obj.put( 'pwd', getPassword() );

        if( !getUseCertificate() ){
            obj.put( 'signature', getSignature() );
        }

        if( !isNull( arguments.subject ) ){
            obj.put( 'subject', arguments.subject );
        }

        response = payPalProxy( obj );

        result = getNVPResponse( urlDecode( response ) );

        return result;

    }

    public Struct function manageRecurringPaymentsProfileStatus( required String subject,
                                                                 required String action,
                                                                 required String profileId) {

        var response = "";
        var result = {};
        var obj = {};

        obj.put('METHOD', 'ManageRecurringPaymentsProfileStatus');
        obj.put('PROFILEID', arguments.profileId);
        obj.put('VERSION', getVersion());
        obj.put('ACTION', arguments.action);

        obj.put( 'user', getUsername() );
        obj.put( 'pwd', getPassword() );

        if( !getUseCertificate() ){
            obj.put( 'signature', getSignature() );
        }

        response = payPalProxy( obj );

        result = getNVPResponse( urlDecode( response ) );

        return result;
    }

    public Struct function billOutstandingAmount( required String subject,
                                                  required String profileId,
                                                  String amt,
                                                  String note) {

        var response = "";
        var result = {};
        var obj = {};

        obj.put('METHOD', 'BillOutstandingAmount');
        obj.put('PROFILEID', arguments.profileId);
        obj.put('VERSION', getVersion());

        obj.put( 'user', getUsername() );
        obj.put( 'pwd', getPassword() );

        if( !getUseCertificate() ){
            obj.put( 'signature', getSignature() );
        }

        if( !isNull( arguments.amt ) ){
            obj.put( 'amt', arguments.amt );
        }

        if( !isNull( arguments.note ) ){
            obj.put( 'note', arguments.note );
        }

        response = payPalProxy( obj );

        result = getNVPResponse( urlDecode( response ) );

        return result;
    }

    public Struct function getTransactionDetails( required String transactionId) {

        var response = "";
        var result = {};
        var obj = {};

        obj.put('METHOD', 'GetTransactionDetails');
        obj.put('transactionid', arguments.transactionId);
        obj.put('VERSION', getVersion());

        obj.put( 'user', getUsername() );
        obj.put( 'pwd', getPassword() );

        if( !getUseCertificate() ){
            obj.put( 'signature', getSignature() );
        }

        response = payPalProxy( obj );

        result = getNVPResponse( urlDecode( response ) );

        return result;
    }

    public Struct function doAuthorization( required String transactionId,
                                            required String amt,
                                            String transactionEntity,
                                            String subject,
                                            String currencyCode=getCurrencyCode()) {

        var response = "";
        var result = {};
        var obj = {};

        obj.put('METHOD', 'DoAuthorization');
        obj.put('transactionid', arguments.transactionId);
        obj.put('amt', arguments.amt);
        obj.put('VERSION', getVersion());
        obj.put('currencycode', arguments.currencyCode );

        obj.put('user', getUsername() );
        obj.put('pwd', getPassword() );

        if( !getUseCertificate() ){
            obj.put( 'signature', getSignature() );
        }

        if( !isNull( arguments.transactionEntity ) ){
            obj.put('transactionentity', arguments.transactionEntity);
        }

        response = payPalProxy( obj );

        result = getNVPResponse( urlDecode( response ) );

        return result;
    }

    public Struct function doCapture( required String authorizationId,
                                      required String amt,
                                      required String completeType,
                                      String currencyCode=getCurrencyCode(),
                                      String invNum,
                                      String note,
                                      String softDescriptor) {

        var response = "";
        var result = {};
        var obj = {};

        obj.put('METHOD', 'DoCapture');
        obj.put('authorizationid', arguments.authorizationId);
        obj.put('amt', arguments.amt);
        obj.put('completetype', arguments.completeType);
        obj.put('VERSION', getVersion());
        obj.put('currencycode', arguments.currencyCode );

        obj.put('user', getUsername() );
        obj.put('pwd', getPassword() );

        if( !getUseCertificate() ){
            obj.put( 'signature', getSignature() );
        }

        if( !isNull( arguments.invNum ) ){
            obj.put('invnum', arguments.invNum);
        }

        if( !isNull( arguments.note ) ){
            obj.put('note', arguments.note);
        }

        if( !isNull( arguments.softDescriptor ) ){
            obj.put('softdescriptor', arguments.softDescriptor);
        }

        response = payPalProxy( obj );

        result = getNVPResponse( urlDecode( response ) );

        return result;
    }

    public Struct function massPayment( required String subject,
                                        required String receivertype,
                                        required String mail,
                                        required String amt) {

        var response = "";
        var result = {};
        var obj = {};

        obj.put('METHOD', 'MassPay');
        obj.put('receivertype', arguments.receivertype);
        obj.put('l_email0', arguments.mail);
        obj.put('l_amt0', arguments.amt);
        obj.put('VERSION', getVersion());
        obj.put('CURRENCYCODE', getCurrencyCode());

        obj.put( 'user', getUsername() );
        obj.put( 'pwd', getPassword() );

        if( !getUseCertificate() ){
            obj.put( 'signature', getSignature() );
        }

        response = payPalProxy( obj );

        result = getNVPResponse( urlDecode( response ) );

        return result;
    }

    public Struct function refundTransaction( required String trans,
                                              String amt) {

        var response = "";
        var result = {};
        var obj = {};

        obj.put('METHOD', 'RefundTransaction');

        if( !isNull( arguments.amt ) ){
            obj.put('amt', arguments.amt);
        }

        obj.put('transactionid', arguments.trans);
        obj.put('VERSION', getVersion());
        obj.put('CURRENCYCODE', getCurrencyCode());

        obj.put( 'user', getUsername() );
        obj.put( 'pwd', getPassword() );

        if( !getUseCertificate() ){
            obj.put( 'signature', getSignature() );
        }

        response = payPalProxy( obj );

        result = getNVPResponse( urlDecode( response ) );

        return result;
    }

    public Struct function transactionSearch( required String startdate,
                                              String enddate,
                                              String email,
                                              String receiver,
                                              String receiptid,
                                              String transactionid,
                                              String invnum,
                                              String acct,
                                              String auctionItemNumber,
                                              String transactionClass,
                                              String amt,
                                              String status) {

        var response = "";
        var result = {};
        var obj = {};

        obj.put('METHOD', 'TransactionSearch');

        obj.put('VERSION', getVersion());
        obj.put('CURRENCYCODE', getCurrencyCode());
        obj.put('STARTDATE', arguments.startdate);

        if( !isNull( arguments.enddate ) ){
            obj.put('enddate', arguments.enddate);
        }

        if( !isNull( arguments.email ) ){
            obj.put('email', arguments.email);
        }

        if( !isNull( arguments.receiver ) ){
            obj.put('receiver', arguments.receiver);
        }

        if( !isNull( arguments.receiptid ) ){
            obj.put('receiptid', arguments.receiptid);
        }

        if( !isNull( arguments.transactionid ) ){
            obj.put('transactionid', arguments.transactionid);
        }

        if( !isNull( arguments.acct ) ){
            obj.put('acct', arguments.acct);
        }

        if( !isNull( arguments.auctionItemNumber ) ){
            obj.put('auctionItemNumber', arguments.auctionItemNumber);
        }

        if( !isNull( arguments.transactionClass ) ){
            obj.put('transactionClass', arguments.transactionClass);
        }

        if( !isNull( arguments.amt ) ){
            obj.put('amt', arguments.amt);
        }

        if( !isNull( arguments.status ) ){
            obj.put('status', arguments.status);
        }

        obj.put( 'user', getUsername() );
        obj.put( 'pwd', getPassword() );

        if( !getUseCertificate() ){
            obj.put( 'signature', getSignature() );
        }

        response = payPalProxy( obj );

        result = getNVPResponse( urlDecode( response ) );

        return result;
    }

    public Struct function getRecurringPaymentsProfileDetails( required String subject,
                                                               required String profileId) {

        var response = "";
        var result = {};
        var obj = {};

        obj.put('METHOD', 'GetRecurringPaymentsProfileDetails');
        obj.put('PROFILEID', arguments.profileId);
        obj.put('VERSION', getVersion());

        obj.put( 'user', getUsername() );
        obj.put( 'pwd', getPassword() );

        if( !getUseCertificate() ){
            obj.put( 'signature', getSignature() );
        }

        response = payPalProxy( obj );

        result = getNVPResponse( urlDecode( response ) );

        return result;
    }

    public Struct function getBalance( required String type,
                                       String subject) {

        var response = "";
        var result = {};
        var obj = {};

        obj.put('METHOD', 'GetBalance');
        obj.put('RETURNALLCURRENCIES', arguments.type);
        obj.put('VERSION', getVersion());

        obj.put( 'user', getUsername() );
        obj.put( 'pwd', getPassword() );

        if( !getUseCertificate() ){
            obj.put( 'signature', getSignature() );
        }

        response = payPalProxy( obj );

        result = getNVPResponse( urlDecode( response ) );

        return result;
    }

    public Struct function addressVerify( required String email,
                                          required String street,
                                          required String zip,
                                          String subject) {

        var response = "";
        var result = {};
        var obj = {};

        obj.put('METHOD', 'AddressVerify');
        obj.put('email', arguments.email);
        obj.put('street', arguments.street);
        obj.put('zip', arguments.zip);
        obj.put('VERSION', getVersion());

        obj.put( 'user', getUsername() );
        obj.put( 'pwd', getPassword() );

        if( !getUseCertificate() ){
            obj.put( 'signature', getSignature() );
        }

        if( !isNull( arguments.subject ) ){
            obj.put( 'subject', arguments.subject );
        }

        response = payPalProxy( obj );

        result = getNVPResponse( urlDecode( response ) );

        return result;
    }

    public Struct function createRecurringPaymentsProfile( required String token, String currencyCode=getCurrencyCode(),
                                                           required String email, required String amount,
                                                           required String profilestartdate, required String desc,
                                                           required String billingperiod,
                                                           required String billingfrequency, required String cat,
                                                           required String name, required String amt,
                                                           required String qty, required String subject) {

        var response = "";
        var result = {};
        var obj = {};

        obj.put('METHOD', 'CreateRecurringPaymentsProfile');
        obj.put('TOKEN', arguments.token);
        obj.put('CURRENCYCODE', arguments.currencyCode);
        obj.put('EMAIL', arguments.email);
        obj.put('AMT', arguments.amount);
        obj.put('PROFILESTARTDATE', arguments.profilestartdate);
        obj.put('DESC', arguments.desc);
        obj.put('BILLINGPERIOD', arguments.billingperiod);
        obj.put('BILLINGFREQUENCY', arguments.billingfrequency);
        obj.put('L_PAYMENTREQUEST_0_ITEMCATEGORY0', arguments.cat);
        obj.put('L_PAYMENTREQUEST_0_NAME0', arguments.name);
        obj.put('L_PAYMENTREQUEST_0_AMT0', arguments.amt);
        obj.put('L_PAYMENTREQUEST_0_QTY0', arguments.qty);
        obj.put('VERSION', getVersion());

        obj.put( 'user', getUsername() );
        obj.put( 'pwd', getPassword() );

        if( !getUseCertificate() ){
            obj.put( 'signature', getSignature() );
        }

        if( !isNull( arguments.subject ) ){
            obj.put( 'subject', arguments.subject );
        }

        response = payPalProxy( obj );

        result = getNVPResponse( urlDecode( response ) );

        return result;
    }

    public Struct function doExpressCheckoutPayment( required String token, String currencyCode=getCurrencyCode(),
                                                     required String payerId, required String paymentaction,
                                                     required String amount, String subject, boolean useIPN=false ){

        var response = "";
        var result = {};
        var obj = {};

        obj.put( 'paymentaction', arguments.paymentaction );
        obj.put( 'method', 'doExpressCheckoutPayment' );
        obj.put( 'payerId', arguments.payerId );
        obj.put( 'token', arguments.token );
        obj.put( 'amt', arguments.amount );
        obj.put( 'currencyCode', arguments.currencyCode );

        obj.put( 'version', getVersion() );
        obj.put( 'user', getUsername() );
        obj.put( 'pwd', getPassword() );

        if( !getUseCertificate() ){
            obj.put( 'signature', getSignature() );
        }

        if( !isNull( arguments.subject ) ){
            obj.put( 'subject', arguments.subject );
        }

        if( !isNull( getIPNListener() ) and arguments.useIPN ){
            obj.put( 'notifyurl', getIPNListener() );
        }

        response = payPalProxy( obj );

        result = getNVPResponse( urlDecode( response ) );

        return result;

    }

    public Struct function getExpressCheckoutDetails( required String token, String subject ){

        var response = "";
        var result = {};
        var obj = {};

        obj.put( 'method', 'getExpressCheckoutDetails' );
        obj.put( 'token', arguments.token );
        obj.put( 'version', getVersion() );
        obj.put( 'user', getUsername() );
        obj.put( 'pwd', getPassword() );

        if( !getUseCertificate() ){
            obj.put( 'signature', getSignature() );
        }

        if( !isNull( arguments.subject ) ){
            obj.put( 'subject', arguments.subject );
        }

        response = payPalProxy( obj );

        result = getNVPResponse( urlDecode( response ) );

        return result;

    }

    private Struct function getNVPResponse( required String payPalResponse ){

        var responseStruct = StructNew();
        var nvpArray = ArrayNew(1) ;

        nvpArray = listToArray( arguments.payPalResponse, "&" );

        for( i=1; i<=arrayLen( nvpArray ); i++ ){

            responseStruct.put( listFirst( nvpArray[i], "=" ), listLast( nvpArray[i], "=" ) );

        }

        return responseStruct;

    }

    private String function payPalProxy( required Struct params ){

        var result = "";
        var svc = new Http();
        var i = "";

        svc.setUrl( getServerURL() );
        svc.setMethod( 'post' );
        svc.setCharset( getCharset() );

        for( i in arguments.params ){

            svc.addParam( name=i, value=arguments.params[ i ], type="formfield", encoded="true" );

        }

        result = svc.send();

        return result.getPrefix().fileContent;

    }

}

--Apple-Mail=_20BD8DD3-E6B2-48A3-924A-2AB17403DBBA
Content-Transfer-Encoding: quoted-printable
Content-Type: text/plain;
	charset=windows-1252



Cristian

Il giorno 05/nov/2014, alle ore 15:53, Marco Colombo marco.colombo@nirvanav=
erde.it [cfmentor] <[email protected]> ha scritto:

> Ciao Cristian,
>=20
> pensavo NVP
>=20
> Marco
>=20
> Il 05/11/2014 15:52, Cristian Costantini [email protected]=20
> [cfmentor] ha scritto:
>> Ciao Marco,
>>=20
>> che ripo di servizi vuoi utilizzare?
>>=20
>> NVP o REST?
>>=20
>> Ad ogni modo, ho sviluppato per entrambi, per=F2 non sono sicuro che il
>> REST sia attivo in Italia.
>>=20
>> Cristian
>>=20
>> Il giorno 05/nov/2014, alle ore 14:46, Marco Colombo
>> [email protected] [cfmentor] <[email protected]> ha
>> scritto:
>>=20
>>> Ciao a tutti,
>>>=20
>>> devo realizzare un pagamento in paypal con cf, evete gi=E0 realizzato
>>> qualcosa a riguardo?
>>>=20
>>> Grazie
>>>=20
>>> Marco
>>>=20
>>>=20
>>> ------------------------------------
>>>=20
>>> ------------------------------------
>>>=20
>>> CFMentor
>>> http://www.cfmentor.com
>>> ------------------------------------
>>>=20
>>> Link utili di Yahoo Gruppi
>>>=20
>>>=20
>>>=20
>>=20
>>=20
>=20
>=20
>=20
> ------------------------------------
>=20
> ------------------------------------
>=20
> CFMentor
> http://www.cfmentor.com
> ------------------------------------
>=20
> Link utili di Yahoo Gruppi=20=20
>=20
>=20
>=20


--Apple-Mail=_20BD8DD3-E6B2-48A3-924A-2AB17403DBBA--