From 9f68be1c3afd30ff5a4fce3ba656a57ff66605a5 Mon Sep 17 00:00:00 2001 From: patrick Date: Mon, 9 Mar 2020 13:02:51 +1100 Subject: [PATCH] rpn submit works, but proxy http is not feasible, as js/image is not included. --- rpn.go | 131 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++- 1 file changed, 129 insertions(+), 2 deletions(-) diff --git a/rpn.go b/rpn.go index aa04f85..eb93857 100644 --- a/rpn.go +++ b/rpn.go @@ -1,13 +1,140 @@ package main -import "net/url" +import ( + "net/http" + "net/url" + "strconv" + "strings" + "time" +) // var url = "https://deposit.paylomo.net/pay.php?r=payEasy" //production // var url = "https://deposit-mac.chinapaytech.com/pay.php?r=payEasy" //test // var md5p2p = "370296119874502" // var md5fat = "207841502473198" +type RpnReq struct { + version string + sign_type string + mid string + notify_url string + order_id string + order_amount string + order_time string //YYYYMMDDHHMMSS + user_id string + user_name string + user_cardno string + signature string +} + +//build request from leanwork request forms +func (m *RpnReq) buildReqByForm(form url.Values) RpnReq { + r := RpnReq{} + r.version = "1.1" + r.sign_type = "MD5" + r.mid = "EU85201311P2P" + r.notify_url = "http://rpn.supertraderfx.ayvwd8em49pvoa3g.com/rpn_notify" + r.order_id = form["orderNo"][0] + r.order_amount = form["orderAmount"][0] //cents + r.order_time = m.now() + r.user_id = form["customerId"][0] + r.user_name = "SuperForex" + r.user_cardno = "6212262002002377849" + r.signature = md4RpnFormP2P(r) + *m = r + return r +} + +func (m *RpnReq) now() string { + t := time.Now() + return t.Format("20060102150405") +} //send request to RPN to initiate transaction -func sendReq(form url.Values) { +func (m *RpnReq) SendReq(form url.Values) (*http.Response, error) { + r := m.buildReqByForm(form) + hc := http.Client{Timeout: 15 * time.Second} + + myForm := url.Values{} + myForm.Set("version", r.version) + myForm.Set("sign_type", r.sign_type) + myForm.Set("mid", r.mid) + myForm.Set("notify_url", r.notify_url) + myForm.Set("order_id", r.order_id) + myForm.Set("order_amount", r.order_amount) + myForm.Set("order_time", r.order_time) + myForm.Set("user_id", r.user_id) + myForm.Set("user_name", r.user_name) + myForm.Set("user_cardno", r.user_cardno) + myForm.Set("signature", r.signature) + //req, err := http.NewRequest("POST", "https://lawipac.com/dumprequest.php", strings.NewReader(myForm.Encode())) + req, err := http.NewRequest("POST", Config.Rpn.UrlTest, strings.NewReader(m.encode())) + if err != nil { + panic("wrong") + } + req.Header.Add("Content-Type", "application/x-www-form-urlencoded") + req.Header.Add("content-Length", strconv.Itoa(len(form.Encode()))) + return hc.Do(req) + //Config.Rpn.UrlTest + // return http.PostForm(Config.Rpn.UrlTest, myForm) + //return http.PostForm("https://lawipac.com/dumprequest.php", myForm) } + +//encode without disturbing it's original order +func (m *RpnReq) encode() string { + s := "version=" + m.version + s += "&sign_type=" + m.sign_type + s += "&mid=" + m.mid + s += "¬ify_url=" + url.QueryEscape(m.notify_url) + s += "&order_id=" + m.order_id + s += "&order_amount=" + m.order_amount + s += "&order_time=" + m.order_time + s += "&user_id=" + m.user_id + s += "&user_name=" + m.user_name + s += "&user_cardno=" + m.user_cardno + s += "&signature=" + m.signature + return s +} + +// '1.1', +// 'sign_type'=> 'MD5', +// 'mid' => 'EU85201311P2P', //must to use your mid +// 'notify_url' => 'https://lawipac.com/dumprequest.php', +// 'order_id' => "demo-" . date('YmdHis'), +// 'order_amount' => 120000 , //round($_POST['amount']*100), +// 'order_time' => date('YmdHis'), +// 'user_id'=> 'supertraderP2P', //$_POST['user_id'], +// 'user_name'=>"zhang3", //urlencode($_POST['user_name']), +// 'user_cardno'=>"6212262002002377849" //$_POST['user_cardno'], +// ); + +// $params = array(); +// foreach ($data as $field => $value) { +// if( $value == '' ) continue; +// $params[] = "$field=$value"; +// } +// $params[] = "key=p1j4A3mEMj+ft0xkSfVULQ"; //must to use your key + +// $data['signature'] = md5(implode('|', $params)); +// ?> + +// +// +// +// +// +//
+// $val) { +// echo ''; +// } +// ?> +// +//
+// +// +// some text