澳門通(MPay) iOS集成

澳門通(MPay)


最近公司做了個(gè)項(xiàng)目 投放市場(chǎng)在澳門庄萎,澳門那邊的支付環(huán)境主要使用澳門通(以下使用MPay代替)迹恐,所以在做支付功能的時(shí)候挣惰,就有了MPay集成需求。初聽到這個(gè)消息的時(shí)候殴边,作為一名工作積極份子憎茂,立馬開始了一頓猛如虎的操作——百度、谷歌锤岸、簡(jiǎn)書竖幔、GitHub等各大平臺(tái)各種搜索,結(jié)果無奈的發(fā)現(xiàn)是偷,均沒有關(guān)于iOS MPay集成這方面的資料拳氢,可能是因?yàn)楸容^小眾的緣故,咱忍了蛋铆。

一臉懵逼

最后與MPay及澳方工作人員溝通馋评,拿到了一份《澳門通線上收單支付接入規(guī)範(fàn)v1.0.2》,洋洋灑灑 75 個(gè)Page刺啦,抱著誠懇與學(xué)習(xí)的態(tài)度留特,花了近1個(gè)小時(shí)才拜讀完,看完之后,發(fā)現(xiàn)上面對(duì)于iOS MPay集成的可用信息幾乎為零磕秤,頓時(shí)心中策馬奔騰乳乌。

因?yàn)樵诎拈T通集成過程中幾經(jīng)波折,也碰到過些坑市咆,在完成之后汉操,回頭發(fā)現(xiàn)本來很簡(jiǎn)單的事情,因?yàn)椴皇煜っ衫迹约霸谂c澳方溝通過程花費(fèi)了大量時(shí)間磷瘤,所以將自己的血淚歷程與MPay集成方法,以及碰到的坑搜变,分享給大家采缚,希望大家在開發(fā)過程中能節(jié)省點(diǎn)寶貴的時(shí)間及少趟點(diǎn)坑,權(quán)當(dāng)拋磚引玉挠他。

\color{red}{吁...停車扳抽!別再往下拉了,再拉你可能會(huì)錯(cuò)過可愛的我??}

MPay 在打包靜態(tài)庫的時(shí)候殖侵,已經(jīng)將 微信 打包進(jìn)了SDK贸呢,所以如果項(xiàng)目在調(diào)用 微信 的時(shí)候,只能使用 MPay內(nèi)部集成的 微信 支付拢军,如果外界想要單獨(dú)調(diào)用 微信支付的時(shí)候楞陷,在導(dǎo)入 微信 SDK的時(shí)候,就會(huì)報(bào) 重復(fù)導(dǎo)入 的錯(cuò)誤茉唉。這是一個(gè)坑固蛾,要留意一下!

所以度陆,以下分為三個(gè)步驟來說明 MPAy 支付艾凯,MPay調(diào)用 支付寶 ,MPay調(diào)用微信 懂傀。

\color{red}{先談一下 MPay 的交互模式}
澳門通與商戶之間通過交換報(bào)文與資料檔案來交換業(yè)務(wù)資訊览芳、實(shí)現(xiàn)業(yè)務(wù)流程、控制業(yè)務(wù)規(guī)則鸿竖。雙方的交互模式可以歸納為請(qǐng)求-應(yīng)答沧竟、單向通知、文檔上傳與文檔下載這四種模式缚忧,實(shí)際業(yè)務(wù)中可能會(huì)將各種交互模式結(jié)合起來使用悟泵。下文將介紹這四種交互模式適用的場(chǎng)景與實(shí)現(xiàn)方式。

1闪水、請(qǐng)求(Request)-應(yīng)答(Response)模式:

在請(qǐng)求-應(yīng)答模式下糕非,一方作為服務(wù)提供者,另一方作為服務(wù)使用者。由服 務(wù)使用者主動(dòng)向服務(wù)提供者發(fā)起請(qǐng)求并等待應(yīng)答朽肥,服務(wù)提供者接受請(qǐng)求禁筏,完成 處理,并向服務(wù)使用者應(yīng)答處理結(jié)果衡招,服務(wù)使用者收到處理結(jié)果之后進(jìn)行后續(xù) 處理篱昔。

請(qǐng)求-應(yīng)答模式適用于服務(wù)使用者需要根據(jù)服務(wù)提供者的服務(wù)應(yīng)答才能進(jìn)行 正確的后續(xù)處理的場(chǎng)景。 本文中始腾,服務(wù)使用者指商戶的系統(tǒng)設(shè)施及服務(wù)州刽,服務(wù)提供者指澳門通及其相應(yīng) 的系統(tǒng)設(shè)施及服務(wù)。


請(qǐng)求(Request)-應(yīng)答(Response)模式
2浪箭、單向通知模式:

在單向通知模式下穗椅,一方作為通知發(fā)送者,一方作為通知接收者奶栖。發(fā)送者發(fā)送通知匹表,并保證接收者收到通知。通知接收者在收到通知之后宣鄙,立即返回發(fā)送者通知已收到袍镀。通知送達(dá)之后,發(fā)送方與接收方可以獨(dú)立地進(jìn)行后續(xù)業(yè)務(wù)處理框冀。如果對(duì)方進(jìn)行業(yè)務(wù)處理所需的時(shí)間不可預(yù)知時(shí),采用單向通知模式敏簿。單向通知模式可以單獨(dú)使用明也,也可以作為其它交互模式的一部分使用,因此惯裕,單向模式適用于澳門通主動(dòng)通知商戶交易處理成功温数。

單向通知模式


一:MPaySDK支付集成流程

1:由MPay iOS端提供的 MPaySDK.framework靜態(tài)庫引入到工程項(xiàng)目中(目前不支持Cocopods);
MPaySDK.framework

在需要支付的類中導(dǎo)入 #import <MPaySDK/MPaySDK.h> 文件路徑

2:Command+B 編譯一下蜻势,報(bào)錯(cuò)導(dǎo)入以下類:

libsqlite3.tbd

libc++.tbd

libz.tbd

libc.tbd

CoreMotion.framework

CFNetwork.framework

SystemConfiguration.framework

CoreTelephony.framework

QuartzCore.framework

CoreText.framework

CoreGraphics.framework

Foundation.framework

UIKit.framework

編譯撑刺,完美通過

3:Target - info -URL Types 配置URL Types 設(shè)置自己項(xiàng)目的URL Schems,以便調(diào)用SDK方法的時(shí)候使用
URL Schemes

因?yàn)閁AT測(cè)試環(huán)境,生產(chǎn)環(huán)境服務(wù)器的https應(yīng)用層不
支持ATS設(shè)置握玛,如果應(yīng)用程式基于9.0編譯够傍,由于iOS9.0中https應(yīng)用程序傳輸安全(ATS)的限制,我們需要設(shè)置:NSAppTransportSecurity 的 Allow Arbitrary Loads 為 YES

4挠铲、支付環(huán)境設(shè)置

在MPaySDK.h文件中可以查看環(huán)境變量的枚舉值

0:MPay_SIT 代表MPay SIT 環(huán)境

1: MPay_UAT 代表MPay UAT環(huán)境

2:MPay_Prod 代表MPay 生產(chǎn)環(huán)境

通過實(shí)例方法進(jìn)行UAT環(huán)境配置
例:[[MPaySDKsharedInstance] setEnvironmentType:MPay_UAT];

5冕屯、支付方法調(diào)用
/**
 商戶使用(MPay)
 
 @param params 商戶簽名后的訂單數(shù)據(jù)
 @param schema 商戶APP的url schema
 @param sender  當(dāng)前控制器
 @param delegate 實(shí)現(xiàn)協(xié)議方法的代理對(duì)象
 */
-(void)MPayWithParams:(NSDictionary *)params withSchema:(NSString *)schema WithSender:(id)sender withDelegate:(id<MPaySDKDelegate>)delegate;
6、params 參數(shù)說明
參數(shù) 類型 是否必填 最大長(zhǎng)度 描述 示例值
app_id String 必須 32 MacauPay分配給開發(fā)者的應(yīng)用ID 2014072300007148
api_name String 必須 30 接口名稱 preCreate
biz_api_code String 必須 30 接口功能 100020007
data_type String 可選 40 僅支持JSON JSON
charset String 必須 10 請(qǐng)求使用的編碼格式拂苹,如utf-8,gbk,gb2312等 utf-8
sign_type String 必須 10 商戶生成簽名字符串所使用的簽名算法類型安聘,目前支持RSA RSA
sign String 必須 256 商戶請(qǐng)求參數(shù)的簽名串,詳見簽名 詳見示例,6.4.私鑰生成請(qǐng)求簽名章節(jié)
timestamp String 必須 19 發(fā)送請(qǐng)求的時(shí)間,格式"yyyy-MM-dd HH:mm:ss" 2014-07-24 03:07:50
version String 必須 3 調(diào)用的接口版本浴韭,固定為:1.0 1.0
biz_content String 必須 - 請(qǐng)求參數(shù)的集合丘喻,最大長(zhǎng)度不限,除公共參數(shù)外所有請(qǐng)求參數(shù)都必須放在這個(gè)參數(shù)中傳遞念颈,具體參照各產(chǎn)品快速接入文檔 參考下面

● biz_content 說明

參數(shù) 類型 是否必填 最大長(zhǎng)度 描述 示例值
out_trade_no String 必須 64 商戶訂單號(hào),64個(gè)字符以內(nèi)泉粉、只能包含字母、數(shù)字舍肠、下劃線搀继;需保證在商戶端不重復(fù) 20150320010101001
total_amount Price 必須 9 訂單總金額,單位為元翠语,精確到小數(shù)點(diǎn)后兩位叽躯,取值范圍[0.01,100000000] 88.88
subject String 必須 256 訂單標(biāo)題 Iphone6 16G
trade_mode String 必須 10 0001擔(dān)保支付,0002即時(shí)到賬肌括,默認(rèn):0002 0002即時(shí)到賬
body String 可選 128 對(duì)交易或商品的描述 Iphone6 16G
buyer_logon_id String 可選 100 買家MacauPay賬號(hào)点骑,和 buyer_user_id不能同時(shí)為空 15901825620
buyer_user_id String 可選 28 買家在MacauPay的用戶id 2088101117955611
operator_id String 可選 28 商戶操作員編號(hào) Yx_001
store_id String 可選 32 商戶門店編號(hào) NJ_001
terminal_id String 可選 32 商戶機(jī)具終端編號(hào) NJ_T_001
timeout_express String 可選 6 該筆訂單允許的最晚付款時(shí)間,逾期將關(guān)閉交易谍夭。取值范圍:1m~15d黑滴。m-分鐘,h-小時(shí)紧索,d-天袁辈,1c-當(dāng)天(1c-當(dāng)天的情況下,無論交易何時(shí)創(chuàng)建珠漂,都在0點(diǎn)關(guān)閉)晚缩。該參數(shù)數(shù)值不接受小數(shù)點(diǎn),如 1.5h媳危,可轉(zhuǎn)換為 90m荞彼。默認(rèn)90m 90m
submerchant_id String 可選 32 二級(jí)商戶號(hào),與MacauPay約定按照MCC收手續(xù)費(fèi)時(shí)使用 2016041400077000000003314986
currency String 可選 6 默認(rèn)MOP MOP
notify_url String 可選 256 MacauPay服務(wù)器主動(dòng)異步通知商戶服務(wù)器里指定的頁面http/https路徑待笑。 http://api.test.net/atinterface/receive_n
return_url String 可選 256 MacauPay服務(wù)器主動(dòng)同步通知商戶服務(wù)器里指定的頁面http/https路徑鸣皂。 http://api.test.net/atinterface/receive_n
goods_detail GoodsDetail [] 可選 - 訂單包含的商品列表信息.Json格式. 其它說明詳見:“商品明細(xì)說明” [{"order_no":"201604141231231231231222","goods_id":"apple-01","goods_name":"ipad","goods_category":"7788230","price":"2000.00","quantity":"1"}]
order_no String 必填 64 商品明細(xì)訂單號(hào) 2016041400077000000003
goods_id String 必填 32 商品的編號(hào) apple-01
goods_name String 必填 256 商品名稱 ipad
quantity Number 必填 10 商品數(shù)量 1
price Price 必填 9 商品單價(jià),單位為元 2000
body String 可選 1000 商品描述信息 特價(jià)手機(jī)
show_url String 可選 400 商品的圖片地址 http://www.alipay.com/xxx.jpg
7暮蹂、方法具體實(shí)現(xiàn):
//簽名地址    - 要改成貴公司服務(wù)器 api 地址

NSString*signUrl =  @"xxxx";

//簽完名之后拿到服務(wù)器返回的NSDictionary類型數(shù)據(jù)寞缝,作為參數(shù)

//調(diào)起支付

        if(params) {

            [[MPaySDK sharedInstance]MPayWithParams:params withSchema:@"macaupayF2823" WithSender:self withDelegate:self];

        }
8、在響應(yīng)事件 控制器中遵循代理協(xié)議
@interface ViewController ()<MPaySDKDelegate>

實(shí)現(xiàn)代理方法
//實(shí)現(xiàn)支付完成或者取消之后的回調(diào)結(jié)果(注意兼容ios8的方法)
//在需要處理結(jié)果的地方實(shí)現(xiàn)MPaySDKDelegate協(xié)議方法 處理展示結(jié)果邏輯

/**

 支付成功回調(diào)

@paramstatus 支付狀態(tài)標(biāo)誌 true成功 false 失敗

@paramorder 訂單信息

 */

-(void)MPaySDK_WithPayStatus:(bool)status WithOrder:(NSDictionary*)order;

/**

 支付失敗回調(diào)

@paramerrorInfo 錯(cuò)誤信息

@paramerrorCode 錯(cuò)誤碼

 */

-(void)MPaySDK_WithFailed:(NSString*)errorInfo withErrorCode:(NSString*)errorCode;
9仰泻、支付回調(diào)及響應(yīng)狀態(tài)

在項(xiàng)目AppDelegate.m里面的回調(diào)方法

-(BOOL)application:(UIApplication*)app openURL:(NSURL*)url options:(NSDictionary *)options{

   //里面調(diào)用

    [[MPaySDK sharedInstance]ProcessOrderWithPaymentResult:url];

    return true;

}

-(BOOL)application:(UIApplication*)application openURL:(NSURL*)url sourceApplication:(NSString*)sourceApplication annotation:(id)annotation

{

    //回調(diào)方法第租,必調(diào)

    [[MPaySDK sharedInstance] ProcessOrderWithPaymentResult:url];

    return true;

}
10、支付狀態(tài)碼
Code ResultMsg
9000 訂單支付成功
6002 網(wǎng)絡(luò)連接出錯(cuò)
6001 用戶中途取消
5000 支付異常
4044 訂單金額無效
4004 無效訂單
4000 訂單支付失敗
1000 簽名失敗
0001 手續(xù)費(fèi)大於交易金額
1002 數(shù)據(jù)格式錯(cuò)誤

二:AliPaySDK支付集成流程


AliPay 和 MPay 前期配置相同我纪,導(dǎo)入MPaySDK.framework靜態(tài)庫慎宾,并且需要導(dǎo)入AliPaySDK 包文件丐吓,只不過支付方法和 上傳參數(shù),這里只說明有區(qū)別的點(diǎn)趟据,其它參考 上面 MPay券犁,AliPaySDK支付狀態(tài)碼參考同MPaySDK支付狀態(tài)碼

1、支付方法調(diào)用
  /**

      商戶使用(支付寶)

      @paramparams 商戶簽名后的訂單數(shù)據(jù)

      @paramScheme 商戶APP的url schema

      @paramdelegate 實(shí)現(xiàn)協(xié)議方法的代理對(duì)象

      */
-(void)AliPayWithParams:(NSDictionary*)params withScheme:(NSString*)Scheme with:(id)delegate;
2汹碱、params參數(shù)說明
參數(shù) 類型 是否必填 最大長(zhǎng)度 描述 示例值
app_id String 必須 32 MacauPay分配給開發(fā)者的應(yīng)用ID 2014072300007148
api_name String 必須 30 接口名稱 aliNoAccPay
biz_api_code String 必須 30 接口功能 100020008
data_type String 可選 40 僅支持JSON JSON
charset String 必須 10 請(qǐng)求使用的編碼格式粘衬,如utf-8,gbk,gb2312等 utf-8
sign_type String 必須 10 商戶生成簽名字符串所使用的簽名算法類型,目前支持RSA RSA
sign String 必須 256 商戶請(qǐng)求參數(shù)的簽名串咳促,詳見簽名 詳見示例,6.4.私鑰生成請(qǐng)求簽名章節(jié)
timestamp String 必須 19 發(fā)送請(qǐng)求的時(shí)間稚新,格式"yyyy-MM-dd HH:mm:ss" 2014-07-24 03:07:50
version String 必須 3 調(diào)用的接口版本,固定為:1.0 1.0
biz_content String 必須 - 請(qǐng)求參數(shù)的集合跪腹,最大長(zhǎng)度不限褂删,除公共參數(shù)外所有請(qǐng)求參數(shù)都必須放在這個(gè)參數(shù)中傳遞,具體參照各產(chǎn)品快速接入文檔 參考下面

● biz_content 說明
參考macauPay的參數(shù)說明

3冲茸、方法具體實(shí)現(xiàn):
//a屯阀、簽名地址    - 要改成貴公司服務(wù)器 api 地址

NSString*signUrl =  @"xxxx";

//b、簽完名之后拿到服務(wù)器返回的NSDictionary類型數(shù)據(jù)轴术,作為參數(shù)

//調(diào)起支付

        if(params) {

            [[MPaySDK sharedInstance] AliPayWithParams:params withScheme:@"macaupayF2823" with:self];

        }

三:WechatPaySDK支付集成流程


由MPay iOS端提供的sdk文件难衰,MPaySDK.framework 靜態(tài)庫引用到工程項(xiàng)目中(如果已經(jīng)引入,無需重復(fù)引入):并且需要導(dǎo)入WechatPay支付所需要的文件和靜態(tài)庫:libWeChatSDK.a, WechatAuthSDK.h, WXApi.h, WXApiObject.當(dāng)已經(jīng)再開放平臺(tái)已經(jīng)注冊(cè)應(yīng)用并且報(bào)備之后逗栽,再項(xiàng)目工程里面的AppDelegate.h文件中導(dǎo)入的WXApi.h 盖袭,并且在didFinishLaunchingWithOptions 方法中向微信發(fā)起注冊(cè):

例:[WXApi registerApp:@"xxxx" enableMTA:NO];

在需要支付的類中導(dǎo)入MPaySDK.h文件路徑即可。

1彼宠、支付方法調(diào)用
/**

 商戶使用(微信)

 @paramparams 商戶簽名后的訂單數(shù)據(jù)

 @paramScheme 商戶APP在開放平臺(tái)註冊(cè)的appid

 @paramdelegate 實(shí)現(xiàn)協(xié)議方法的代理對(duì)象

 */

-(void)WeChatPayWithParams:(NSDictionary*)params withScheme:(NSString*)Scheme with:(id)delegate;
2鳄虱、params參數(shù)說明
參數(shù) 類型 是否必填 最大長(zhǎng)度 描述 示例值
appid String 必須 32 微信分配給開發(fā)者的應(yīng)用ID wxb4ba3c02aa476ea1
partnerid String 必須 32 商戶號(hào) 1900000109
package String 必須 128 擴(kuò)展字段 Sign=WXPay
noncestr String 可選 32 隨機(jī)字符串 5K8264ILTKCH16CQ2502SI8ZNMTM67VS
timestamp String 必須 10 時(shí)間戳 1412000000
prepayid String 必須 32 預(yù)支付交易會(huì)話ID 微信返回的支付交易會(huì)話ID
sign String 必須 32 簽名 C380BEC2BFD727A4B6845133519F3AD6
3、方法具體實(shí)現(xiàn):
//a兵志、簽名地址    - 要改成貴公司服務(wù)器 api 地址

NSString*signUrl =  @"xxxx";

//b醇蝴、簽完名之后拿到服務(wù)器返回的NSDictionary類型數(shù)據(jù)宣肚,作為參數(shù)

//調(diào)起支付

        if(params) {

            [[MPaySDK sharedInstance] WeChatPayWithParams:params withScheme:@"macaupayF2823" with:self];

        }
4想罕、支付回調(diào)及響應(yīng)狀態(tài)

參考同MPaySDK支付回調(diào)及響應(yīng)狀態(tài)

5、支付狀態(tài)碼
ResultStatus Result
9000 訂單支付成功
6001 用戶中途取消
6005 微信支付:簽名錯(cuò)誤霉涨、未註冊(cè)APPID按价、項(xiàng)目設(shè)置APPID不正確、註冊(cè)的APPID與設(shè)置的不匹配笙瑟、其他異常等.

以上就是 MPay iOS端集成的全部過程楼镐,如有疑問歡迎留言指正。??


?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末往枷,一起剝皮案震驚了整個(gè)濱河市框产,隨后出現(xiàn)的幾起案子凄杯,更是在濱河造成了極大的恐慌,老刑警劉巖秉宿,帶你破解...
    沈念sama閱讀 210,914評(píng)論 6 490
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件戒突,死亡現(xiàn)場(chǎng)離奇詭異,居然都是意外死亡描睦,警方通過查閱死者的電腦和手機(jī)膊存,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 89,935評(píng)論 2 383
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來忱叭,“玉大人隔崎,你說我怎么就攤上這事≡铣螅” “怎么了爵卒?”我有些...
    開封第一講書人閱讀 156,531評(píng)論 0 345
  • 文/不壞的土叔 我叫張陵,是天一觀的道長(zhǎng)埂息。 經(jīng)常有香客問我技潘,道長(zhǎng),這世上最難降的妖魔是什么千康? 我笑而不...
    開封第一講書人閱讀 56,309評(píng)論 1 282
  • 正文 為了忘掉前任享幽,我火速辦了婚禮,結(jié)果婚禮上拾弃,老公的妹妹穿的比我還像新娘值桩。我一直安慰自己,他們只是感情好豪椿,可當(dāng)我...
    茶點(diǎn)故事閱讀 65,381評(píng)論 5 384
  • 文/花漫 我一把揭開白布奔坟。 她就那樣靜靜地躺著,像睡著了一般搭盾。 火紅的嫁衣襯著肌膚如雪咳秉。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 49,730評(píng)論 1 289
  • 那天鸯隅,我揣著相機(jī)與錄音澜建,去河邊找鬼。 笑死蝌以,一個(gè)胖子當(dāng)著我的面吹牛炕舵,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播跟畅,決...
    沈念sama閱讀 38,882評(píng)論 3 404
  • 文/蒼蘭香墨 我猛地睜開眼咽筋,長(zhǎng)吁一口氣:“原來是場(chǎng)噩夢(mèng)啊……” “哼!你這毒婦竟也來了徊件?” 一聲冷哼從身側(cè)響起奸攻,我...
    開封第一講書人閱讀 37,643評(píng)論 0 266
  • 序言:老撾萬榮一對(duì)情侶失蹤蒜危,失蹤者是張志新(化名)和其女友劉穎,沒想到半個(gè)月后睹耐,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體舰褪,經(jīng)...
    沈念sama閱讀 44,095評(píng)論 1 303
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,448評(píng)論 2 325
  • 正文 我和宋清朗相戀三年疏橄,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了占拍。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 38,566評(píng)論 1 339
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡捎迫,死狀恐怖晃酒,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情窄绒,我是刑警寧澤贝次,帶...
    沈念sama閱讀 34,253評(píng)論 4 328
  • 正文 年R本政府宣布,位于F島的核電站彰导,受9級(jí)特大地震影響蛔翅,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜位谋,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,829評(píng)論 3 312
  • 文/蒙蒙 一山析、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧掏父,春花似錦笋轨、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,715評(píng)論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至陶缺,卻和暖如春钾挟,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背饱岸。 一陣腳步聲響...
    開封第一講書人閱讀 31,945評(píng)論 1 264
  • 我被黑心中介騙來泰國打工掺出, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人伶贰。 一個(gè)月前我還...
    沈念sama閱讀 46,248評(píng)論 2 360
  • 正文 我出身青樓蛛砰,卻偏偏與公主長(zhǎng)得像罐栈,于是被迫代替她去往敵國和親黍衙。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 43,440評(píng)論 2 348

推薦閱讀更多精彩內(nèi)容