從軟體工程師角度三分鐘了解Steaker

Steaker簡介

依據Steaker的官方說明Steaker做的服務主要是以下這些:

根據我實際推薦周圍朋友的經驗,有些專有名詞對我們來說都不一定能夠給出詳盡的解釋,更何況是沒有相關知識的一般人更是難以理解Steaker到底是怎樣的一個平台,如果要我給出一個簡單的解釋,Steaker就是一間專門做”加密貨幣“的銀行或金控公司

就像你把錢存在銀行、買基金 、 買股票,讓其他人用這筆你提供的資金去做他們想做的事情舉凡套利 、 周轉 、 貸款等而你只負責收利息,聽起來很棒,不是嗎?當然你可能還有許多疑惑,讓我們接著看下去

Steaker為何可以達到年化收益9%以上

舉凡銀行基金股票等常見的投資標的,每年能有穩定的5%收益相信對許多人來說就已經十分誘人,Steaker卻主打10%以上,那究竟是不是詐騙呢?相信這是每個人剛接收到Steaker這個平台都有的疑惑,答案我能肯定的告訴你,NO

傳統投資型產品之所以很難達到高收益,是因為中間的人事管控成本,資產借貸的對象受限種種原因而導致的,是不是有點難理解呢?下面舉個例子:假設你把錢定存在銀行,銀行得要找到有借貸需求的客戶,需要對客戶做還款能力審查,到實際借給客戶,這中間無形中耗費了許多時間及人力成本 , 但假設是在加密貨幣上呢?今天世界上任何一個人有加密貨幣的借貸需求,無論他是拿來做合約,套利或是其他操作,都可以使用到你提供的加密貨幣,利息也是幾乎回饋給你,因為這過程是由一系列的電腦運算完成的,假設你把加密貨幣想像成實體資產,等於世界上有任何一個人有借錢的需求,你馬上可以將你閒置的錢借出去,並且獲得出借這筆錢的收益,這也是為何Steaker可以這麼高收益的原因

Steaker 方案間收益的區別

那這時可能又會有人有疑惑了,既然同樣是借錢,為何還有利率的不同呢?
那是因為你授予Steaker權限不同的關係

  • 固定利率方案:類似銀行,單純授權Steaker使用你存放的加密貨幣租借別人收取利息,所以不會有利率上的變化,也是最保守,最穩定賺錢的模式
  • 浮動利率方案:相當於你找專業經理人幫您操作股票及基金,會收取績效費,但效益較高,但在市場動盪時還是有虧損的風險
  • 高利率方案:一樣是授權專業經理人的概念但是以更高風險的手段幫您套利,賺得多但虧損風險更大

Steaker 入金教學

Steaker本身是無法購買加密貨幣的(如下圖)

所以我推薦大家一個我自己實際操作過覺得手續費最低的方式入金:MAX交易所

https://max.maicoin.com/signup?r=ebbdb67f

這是跟Maicoin同公司的交易所,價格比Maicoin更優惠且是受台灣金管會監管的台灣第一家上市交易所,比起國外的交易所我覺得相對安全,且使用上面連結註冊享有20%的手續費減免,加上是使用台幣入金,比起國外的交易所在先天上就少了一個跨境刷卡的額外手續費,以下是兌換流程

1.點選MAX錢包,在台幣的部分點選入金

2.使用進行認證的銀行帳戶匯款到MAX的託管帳戶

3.點選交易選擇USDT,下單要購買的數量,Steaker除了固定利率方案外都是需要至少3000USDT以上的金額

4.完成後到錢包進行提領

5.到Steaker錢包的USDT點選入金

6.選擇TRC20並複製地址到MAX交易所

7.最後到MAX交易所提交出金申請就完成啦!你的USDT會在數分鐘內匯到你的steaker帳戶中,就可以購買您想購買的方案了!

我自己目前是申購過兩次固定利率方案,因為在研究steaker之前我大部分的資產配置都是放在股票的部分,但俗話說雞蛋不要放在同一個籃子,做好分散風險也是很重要的,如何在股市崩跌時擁有另一份穩定的收益也是我目前在研究的一個重要課題,而steaker就是我其中一個避險方式

雖然比起操作股市或直接參與加密貨幣市場的收益只能算是蠅頭小利,但我覺得隨時保有一筆穩定成長的資產也是很重要的

虛擬貨幣投資方法分享 MAX + Steaker

方法

先簡單總結一下我嘗試過各種方式以後我個人覺得穩定性較高,投報率也不低的方式,以上方法都是我個人親身嘗試後整理出的結論,尤其是當初甚麼都不懂匯入Steaker錢包選用了ERC20方式,多噴了不少手續費

  1. MAX交易所購買 USDT 或 USDS 後使用TRC20方式入金到Steaker 做定存(較推薦)
  2. MAX交易所購買MAX幣作定存

簡介MAX

MAX交易所是台灣第一家虛擬貨幣購買平台
網址:https://max.maicoin.com/signup?r=ebbdb67f
簡介一下此平台的優點

  1. 他是台灣的平台,若發生甚麼事情,比起在國外的交易所求償無門至少保障性會稍微高一些
  2. 交易手續費很低廉,用幣安 or bybit等國外平台入帳時不但要先被扣一手信用卡費,而且像ETH等還可能有高額的gas fee,等你要獲利了結還是得將幣轉回台灣的交易所賣掉才能夠實質拿到獲利,虛擬幣的錢包跟錢包之間轉帳都會有礦工費侵蝕掉你的獲利
  3. 他的手續費有大優惠的折扣,若使用以上連結註冊享有20%的手續費減免,若使用max代幣還可另外減免40%,非常優惠

整體來說他除了能夠買的幣種較國外的交易所少了些以外,對於一般人購買虛擬貨幣的需求來說可以說是十分夠用了

簡介Steaker

網址:https://steaker.com/zh-TW/signup?r=stkr60483
簡單來講就像你買股票請專業機構幫你套利一樣,Steaker就是你購買虛擬貨幣後他們運用這些資金幫您套利,再跟您收取一定比例的績效費,目前平台一兩年來的績效平均落在13%~15%(已扣除績效費),但如果您不想承受虛擬貨幣波動的風險,他們也有提供定存方案(年利率約9.8%)比起其他的保守型投資方式獲利也是高出不少,唯一麻煩的點是他無法直接入金買幣,而是需要透過其他交易所(如上述所提的max交易所)購買幣後匯入到Steaker錢包(記得選用 TRC20方式),等到滿足收益後再匯到MAX平台賣出後出金回自己的銀行帳戶即可

wordpress 正規API寫法教學

官方教學請參考:點我

非外掛情況:加入在function.php
外掛情況:加入在class的__construct()內

add_action('rest_api_init', function(){
   register_rest_route( 'apitest/v1', '/apitest01/', array(
                        'methods' => 'POST',
		        'callback' => array($this,'testapi'),
		         )
   );
});
//api網址=網站根目錄網址+wp-json/apitest/v1/apitest01

測試的function(實際上api做的事情)
要記得這邊有個小坑要注意,若上面的methods設定為post但實際上用get方式,反之亦然,api雖然依舊會執行function但會多回傳一個WP_ERROR的json將其視為路徑不存在

function testapi($data){
                //$data相當於PHP變數$POST
		echo json_encode(array('success'=>'測試成功'));
                //但純回傳測試成功
		exit();
	}

接下來讓我們建立一支html檔做簡單的測試,內容如下:

<form action="網站根目錄網址+wp-json/apitest/v1/apitest01" method="POST">
	<input type="submit" value="送交"/>
</form>

點擊按鈕送出後得到以下結果即代表成功!
{“success”:”\u6e2c\u8a66\u6210\u529f”}

PHPMailer發信(高安全性模式 Oauth2)

之前一直說要填的坑,研究了好幾天才終於搞懂,不得不說有關的教學真的太少了(中英文都是),導致要湊出完整的流程真的挺困難的,先把觀念記錄下來,有機會再做成外掛方便大家使用 。
本篇文章參考:https://blog.hoyo.idv.tw/?p=3692撰寫
這已經是我找到相對來講最完整的教學了,也感謝這篇文章的作者讓我可以完成這部分的改寫。

  1. 確定 PHP 已經更新到 5.4 以上 (PHPMailer get_oauth_token.php 的需求)
  2. 下載 PHPMailer 5.2.23 (最新版)
  3. 將 PHPMailer 解壓縮在你的網站/外掛內
  4. 安裝 composer
  5. 到 PHPMailer 目錄執行 composer install
    順便先補兩個 composer require , league/oauth2-client 和 league/oauth2-google
    (這邊要注意調整資料夾權限否則無法安裝)
  6. 到 Google APIs 建立一個發信件用的專案
  7. 到「憑證」內產生「OAuth 2.0 用戶端 ID」 ,並且設定好「已授權的重新導向 URI」,請設定為你的get_oauth_token.php檔案的url
  8. 到 get_oauth_token.php 內設定好 $redirectUri(這支程式的網路位置 url) $clientId $clientSecret(google api內會給) 三個變數,並執行,會詢問帳號授權,選擇欲發信帳號後會出現 Token ,請複製起來
  9. 複製 examples/gmail_xoauth.phps 到 你要用來發信的程式 做測試
    (記得檔案要改成php)
  10. 修改  你要用來發信的程式
    oauthUserEmail (你要用來發信的gmail)
    oauthClientId  (google發信專案的 oauthClientId )
    oauthClientSecret  (google發信專案的 oauthClientSecret )
    oauthRefreshToken (詢問授權後獲得的 Token )
    ,以及寄信人、收信人後即可執行發信測試

發送mail的核心程式,如果上面測試有出現錯誤請檢查一下檔案內發信的程式碼

$mail= new PHPMailer();                             //建立新物件
	$mail->setOAuth(
		new OAuth(
			[
				'provider' => $provider,
				'clientId' => $clientId,
				'clientSecret' => $clientSecret,
				'refreshToken' => $refreshToken,
				'userName' => $email,
			]
		)
	);
	$mail->SMTPDebug = 3; //如果需要顯示debug內容,測完確定沒問題請改成0
	$mail->SMTPAuth = true; //設定SMTP需要驗證
	$mail->SMTPSecure = 'tls';
	$mail->AuthType = 'XOAUTH2';
	$mail->Host = "smtp.gmail.com";  //Gamil的SMTP主機
	$mail->Port = 587;
	$mail->CharSet = "utf-8"; //郵件編碼
	$mail->From = "example@gmail.com"; //寄件者信箱
	$mail->FromName = "寄件測試"; //寄件者姓名
	$mail->Subject = $title; //郵件標題
	$mail->Body = $content; //郵件內容
	$mail->IsHTML(true);//郵件內容為html
	$mail->AddAddress($email);//收件者郵件及名稱
	$mail->Send();

如果有說明不夠清楚的地方歡迎留言反映我再做調整,感謝各位 。

wordpress外掛開發 綠界物流外掛開發踩雷分享

大概一年多前串了綠界金流的外掛,當時其實也有想試試看串物流,但因為看起來有點複雜加上各種偷懶到現在才補坑,經過一年的成長其實發現沒有當初想像的那麼難但也沒有多簡單而且還有很多坑

先附上外掛載點:

https://drive.google.com/drive/folders/1PcfhV4skRgFMiT9YhK_f-PyV7sH2gztW?usp=sharing

跟綠界的物流界接說明文件:

https://www.ecpay.com.tw/Content/files/ecpay_030.pdf

這次的範例外掛主要流程如下:

  1. 點下按鈕後 -> 開啟綠界超商api
  2. 接收到綠界超商api使用者選完回傳的商店資訊後 -> 建立物流訂單

外掛使用方式:

  1. 下載後安裝
  2. 建立一個頁面 輸入短代碼 [c2c-test type=”c2c_btn_test”]
  3. 點選按鈕”建立物流訂單”

開啟超商地圖api程式碼說明:

其實跟一般的api沒什麼兩樣,只是可能因為綠界那邊太少更新了,在串的時候就發現幾個點

  • ServerReplyURL IsCollection ->這個欄位在綠界的說明文件是要填 Y or N 實際上要填 YES or NO
  • LogisticsSubType ->這個欄位看文件說明會以為要切成C2C應該要改成UNIMARTC2C,實際上這樣寫會導致程式錯誤,應該要填寫 UNIMART_C2C即可正常運作
  • ServerReplyURL->綠界api回傳超商資料的網址
function createC2COrder(){
		// 一般物流訂單建立
		require_once(ECPAY_C2C_TEST_DIR.'/SDK/Ecpay.Logistic.Integration.php');
		try {
			$AL = new EcpayLogistics();
			$AL->Send = array(
				'MerchantID' => '2000132',
				'MerchantTradeNo' => 'no' . date('YmdHis'),
				'LogisticsSubType' => EcpayLogisticsSubType::UNIMART,
				'IsCollection' => EcpayIsCollection::NO,
				'ServerReplyURL' => get_home_url(). '/ServerReplyURL.php',
				'ExtraData' => '測試額外資訊',
				'Device' => EcpayDevice::PC
			);
			// CvsMap(Button名稱, Form target)
			$html = $AL->CvsMap('電子地圖(統一)');
			echo $html;
			exit();
		} catch(Exception $e) {
			echo $e->getMessage();
			exit();
		}
	}

建立物流訂單api程式碼說明:

  • LogisticsC2CReplyURL -> 建立訂單失敗會回傳的網址
  • ClientReplyURL -> 訂單物流狀態更改時會回傳的網址
if(strpos($_SERVER['REQUEST_URI'], '/ServerReplyURL')===0||strpos($_SERVER['REQUEST_URI'], '/ServerReplyURL')>0){
			require_once(ECPAY_C2C_TEST_DIR.'/SDK/Ecpay.Logistic.Integration.php');
			echo $_POST["MerchantID"]."\r\n";
			echo $_POST["MerchantTradeNo"]."\r\n";
			echo $_POST["LogisticsSubType"]."\r\n";
			echo $_POST["CVSStoreID"]."\r\n";
			echo $_POST["CVSStoreName"]."\r\n";
			echo $_POST["CVSAddress"]."\r\n";
			echo $_POST["CVSTelephone"]."\r\n";
			echo $_POST["CVSOutSide"]."\r\n";
			echo $_POST["ExtraData"]."\r\n";
                        //這些是超商地圖api選擇完後會回傳的參數
			try {
				$AL = new EcpayLogistics();
				$AL->HashKey = '5294y06JbISpM5x9';
				$AL->HashIV = 'v77hoKGq4kWxNNIS';
				$AL->Send = array(
					'MerchantID' => '2000132',
					'MerchantTradeNo' => 'no' . date('YmdHis'),
					'MerchantTradeDate' => date('Y/m/d H:i:s'),
					'LogisticsType' => EcpayLogisticsType::CVS,
					'LogisticsSubType' => EcpayLogisticsSubType::UNIMART,
					'GoodsAmount' => 1500,
					'CollectionAmount' => 10,
					'IsCollection' => EcpayIsCollection::NO,
					'GoodsName' => '測試商品',
					'SenderName' => '測試寄件者',
					'SenderPhone' => '0226550115',
					'SenderCellPhone' => '0911222333',
					'ReceiverName' => '測試收件者',
					'ReceiverPhone' => '0226550115',
					'ReceiverCellPhone' => '0933222111',
					'ReceiverEmail' => 'test_emjhdAJr@test.com.tw',
					'TradeDesc' => '測試交易敘述',
					'ServerReplyURL' => get_home_url() . '/ServerReplyURL.php',
					'ClientReplyURL' => get_home_url(),
					'LogisticsC2CReplyURL' => get_home_url() . '/LogisticsC2CReplyURL.php',
					'Remark' => '測試備註',
					'PlatformID' => '',
				);
				$AL->SendExtend = array(
					'ReceiverStoreID' => '991182',
					'ReturnStoreID' => '',
				);
				// CreateShippingOrder()
				$Result = $AL->CreateShippingOrder();
				echo '<pre>' . print_r($Result, true) . '</pre>';
				exit();
			} catch(Exception $e) {
				echo $e->getMessage();
				exit();
			}
		}

本次範例外掛只針對最核心的部分來做說明跟講解,各位小夥伴可依據自己開發的程式需求及功能做架構上的調整,有問題的話歡迎留言一起討論 。

wordpress 外掛適應多語言開發撰寫方式

使用時機:
網頁有多個語言版本供用戶閱覽,或是外掛開發目的是讓多國使用者使用,可提升外掛跨國通用程度。

外掛主檔設定

外掛主檔設定:

/*

 * Plugin Name: 

 * Description: * Author: nekoto

 * Plugin URI: 

 * Version: 

 * Text Domain: $文本域名

 * Domain Path: /languages

 */

1.建立.pot檔(開發主語言翻譯)

檔案名稱:$文本域名.pot

#. 翻譯文本1
msgid "翻譯索引1"
msgstr "翻譯後文字1"

#. 翻譯文本2
msgid "翻譯索引2"
msgstr "翻譯後文字2"

#. 翻譯文本3
msgid "翻譯索引3"
msgstr "翻譯後文字3"

#. 翻譯文本4
msgid "翻譯索引4"
msgstr "翻譯後文字4"

2.建立.po檔(依照語言命名)

檔案名稱:$文本域名.po

若此檔要套用至繁體中文
則檔案名稱命名為:$文本域名-zh_TW.po

(.mo檔命名同理)

3.將撰寫好的.po檔轉成.mo檔  (php只認.mo檔,所以po檔更改後要記得轉.mo檔才會套用變更)

https://po2mo.net/ 上傳撰寫好的.po檔後下載轉好的.mo檔

下載後改名
檔案名稱:$文本域名.mo

4.外掛內載入:在外掛主檔內寫入

/*
* Load plugin textdomain.
*/
function plugin_load_textdomain() {
load_plugin_textdomain( '$文本域名', false, basename( dirname( __FILE__ ) ) .'/languages/' );
//這邊等於我把翻譯檔路徑設在我外掛下的languages資料夾,wordpress框架會自動去抓翻譯檔
}
add_action( 'init', 'plugin_load_textdomain' );

5.在呼叫文字時使用

例如我語言設定檔內有個

#. 翻譯範例

msgid “apple”

msgstr “蘋果”

在頁面要呼叫的時候:

原本不用語言管理時:echo “蘋果”; 

使用語言管理寫法後: _e( ‘apple’ , ‘$文本域名’ );

兩個寫法在頁面上都會顯示 蘋果

若要翻譯的文檔中含有變數 則使用printf搭配使用:

printf(

__( ‘你的蘋果是 %s.’, ‘$文本域名’ ),$apple

);