Avatar billede joki Juniormester
25. oktober 2012 - 15:02 Der er 17 kommentarer og
1 løsning

Dibs md5 dekrytering

Hej

Jeg jeg har gennemført betaling via dibs, vil jeg gerne opdatere databasen med transaktions id fra dibs.
Dette gør jeg fra acceptUrl siden.
Hvordan får jeg dekryteret den string jeg får retur, så jeg kan tjekke at beløb og ordre id er identiske med det som er sendt inden jeg jeg skriver transaktions id i basen?
Avatar billede Syska Mester
25. oktober 2012 - 15:21 #1
http://tech.dibspayment.com/dibs_api/other_features/mac_calculation/

http://tech.dibspayment.com/dibs_api/other_features/md5-key_control/

3 mins på dibs.

http://msdn.microsoft.com/en-us/library/system.security.cryptography.md5.aspx

Derefter 2 mins på google

Sig til hvis du ikke kan få det til at virke. Har været med til at lave integration fra ucommerce til dibs.
Avatar billede runesoft Nybegynder
25. oktober 2012 - 16:23 #2
MD5 er en envejs funktion, så du dekrypterer ikke resultatet. Istedet kører du dine egne data igennem MD5 og ser om resultatet er ens.
Avatar billede joki Juniormester
25. oktober 2012 - 17:42 #3
>> runesoft ok, men hvordan får jeg mit ordre id med over på min accepturl. syndes ikke der står noget om det på ovenstående links
Avatar billede Syska Mester
25. oktober 2012 - 20:01 #4
Det har du vel allerede i dit system hvis du har sendt ham over til DIBS ... ?

Men det er jo i dit callback du skal lave det check. jeg mener den callback så svarer tilbage til dibs ... og derefter bliver du sendt til accept eller cancel.

Men du må komme med lidt mere information, hvis overstående ikke svare på dit spm.
Avatar billede joki Juniormester
26. oktober 2012 - 20:47 #5
Ok, jeg har så taget fejl. Det tjek skal ligge i min callbackurl, men men hvordan tester jeg denne side?
Dibs kan vel ikke kalde den på localhost, eller hvornår kaldes callbackurl?
Avatar billede Syska Mester
27. oktober 2012 - 18:27 #6
du bliver nød til at have et hostname som kan kontaktes udefra ... Jrg kender i hvert fald ikke til andre måder at gøre det på. Men du kan vel høre hvordan de andre gør hvor du arbejder?
Avatar billede joki Juniormester
27. oktober 2012 - 23:11 #7
Det er et eksternt firma som har udviklet det, så kan ikke så alt kode, så mit håb var et eksempel
Avatar billede joki Juniormester
29. oktober 2012 - 09:31 #8
Det lykkes mig at finde et sted, jeg kunne placere koden, så  callbackurl kunne testes. Mit eneste problem er nu at jeg ikke kan hente orderid ud af parametrene ved Request.Form. Kan godt hente transact og andre parametre i henhold dokumentation fra dibs. Nogen erfaring med dette.
Alternativt må jeg inkludere mit ordre id i min callback url.
Avatar billede Syska Mester
29. oktober 2012 - 10:34 #9
Hvad mener du med "kan ikke hente" ... findes den ikke i den form som deres callback laver? eller andet der driller?

Jeg er rimelig sikker på at de i hvert fald sender et eller andet med tilbage som du kan bruge til at identificere din ordre med.

Er ordren accepted ved dibs når det callback kommer?

Er det ved Accepted return url eller callback du prøver at hente det ud eller?
Avatar billede joki Juniormester
29. oktober 2012 - 10:52 #10
Ja det burde de sende med iflg. deres dokumentation, men jeg kan ikke se den kommer med. Min kode er nedestående.
Ja ordre er accepteret hos dibs, når der kommer callback
private void RequestFormData()
        {

          System.Text.StringBuilder displayValues = new System.Text.StringBuilder();
          System.Collections.Specialized.NameValueCollection postedValues = Request.Form;
            String nextKey;
            decimal merchant = 4217522;
            decimal transact = 1234568;
            int orderId=57;
            for (int i = 0; i < postedValues.AllKeys.Length; i++)
            {
                nextKey = postedValues.AllKeys[i];
                if (nextKey.Substring(0, 2) != "__")
                {
                    if (nextKey == "merchant")
                    {
                        merchant = Convert.ToDecimal(postedValues[i]);
                    }

                    if (nextKey == "transact")
                    {
                        transact = Convert.ToDecimal(postedValues[i]);
                    }

                    if (nextKey == "orderid")
                    {
                        orderId = Convert.ToInt32(postedValues[i]);
                    }

                 
                }

             
            }
            HandlePayment(orderId, transact);
        }
Avatar billede joki Juniormester
29. oktober 2012 - 11:01 #11
Skulle da mene jeg ville få nedenstående retur


http://tech.dibs.dk/dibs_api/status_functions/callbackcgi/

orderid=AnOrderid&paytype=VISA&cardnomask=XXXXXXXXXXXX0000&cardprefix=471110&acquirer=TEST&cardexpdate=2406&accepturl=https%3A%2F%2Fshop%2Edibs%2Edk%2Fshopwin%5FacceptOrCancel%2Ephp%3Fstatus%
3Daccepted%26shopsOwnPar1%3DsomeValue1%26shopsOwnPar2%3DsomeValue2
&amount=100&callbackurl=https%3A%2%2Fshop%2Edibs%2Edk%2Fshopscript%
5Fcallback%2Ephp&cancelurl=https%3A%2F%2Fshop%2Edibs%2Edk%2Fshopwin%5FacceptOrCancel%2Ephp%3Fstatus%
3Dcancelled&cardtype=VISA%2CV%2DDK&currency=EUR&fullreply=1&ip=192%2E168%2E11%2E226&merchant=4206891
Avatar billede Syska Mester
29. oktober 2012 - 11:03 #12
Kan du ikke sætte et break point der, og så se hvad den præcis indeholder. Jeg undre mig over at du ikke får det med tilbage i dit callback. Der kan være settings inde i DIBS administrations panel der gør at det ikke automatisk sende med ... tjek det først.

Du kan lave din kode mere læsevenlig:

foreach(string key in postedValues.AllKeys)
{
// Her har du så din key ... og kan gøre:
// var value = postedValues[key];
}

Udover det ... hvorfor gør du ikke bare:
var orderId = postedValues["orderid"];

Hvis du alligevel allerede ved hvad values du skal have ud?
Avatar billede Syska Mester
29. oktober 2012 - 11:10 #13
Men sender du et ordreid med til dem?
Avatar billede joki Juniormester
29. oktober 2012 - 11:16 #14
det er jo kun i drift, jeg kan teste dette, så kan ikke benytte breakpoints :-(
Ja du har ret i at koden kan blive mere overskuelig dette er hentet fra microsoft, så det var bare for at komme lidt videre.
Jeg tjekker med dibs
Avatar billede joki Juniormester
29. oktober 2012 - 11:57 #15
Ja dibs får nedenstående

<input type="hidden" name="uniqueoid" value="yes" />
<input value="1234569" name="merchant" type="text" />
<input value="208" name="currency" type="text"/>
<input value="<%=OrderId%>" name="orderid" type="text"/>
<input value="<%=Amount%>" name="amount" type="text"/>
<input value="http://www.google.dk"  name="accepturl" type="text" />
<input value="http://localhost:1042/EndUserPages/CancelPayment.asxp" name="cancelurl" type="hidden" />
<input value="<%=CallBackUrl%>"  name="callbackurl" type="text" />
<input type="hidden" name="lang" value="da" />
<input type="hidden" name="paytype" value="DK" />
<input value="<%=Md5Key%>" name="md5key" type="text"" />
<input type="hidden" name="test" value="foo" />
<input type="hidden" name="account" value="EC" />
<input type="submit" value="Dibs!" />
Avatar billede Syska Mester
29. oktober 2012 - 12:40 #16
Mærkeligt ...

Men prøv at sætte et break point i din kode ... og se hvad du rent faktisk har af information når det callback kommer.

Har du kigget inde i dibs backend og sikker på at de rent faktisk sender det tilbage ... og at det ikke er slået fra. Der er mange mærkelige settings derinde :-)

Du kan også sætte op så du får en mail når noget fejler ... og der får du alle form values med mener jeg ...

Du kan også se i deres backend hvad du rent faktisk har sendt med til en ordre i deres system. Måske går der noget galt der ...
Avatar billede joki Juniormester
29. oktober 2012 - 19:29 #17
ok, jeg lavede en log tabel for at se hvad der kom retur fra dibs via callbackurl. Af en eller anden grund kommer order id retur som "OrderId" og ikke "orderid" med småt som alt det andet???
Anyway jeg er kommet videre, så tak for hjælpen :-) vil du have point??
Avatar billede Syska Mester
29. oktober 2012 - 20:39 #18
svar
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
IT-kurser om Microsoft 365, sikkerhed, personlig vækst, udvikling, digital markedsføring, grafisk design, SAP og forretningsanalyse.

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester