操屁眼的视频在线免费看,日本在线综合一区二区,久久在线观看免费视频,欧美日韩精品久久综

新聞資訊

    IT之家8月9日消息 今天微軟發布了Win10 SDK Build 16257預覽版下載,與此同時微軟還推出了Win10 Mobile模擬器Build 15235。值得注意的是,Win10 SDK Build 16257已經是功能完善版SDK,微軟后續只會修復Bug,提升穩定性和可靠性等。

    已知問題:

    • 在Visual Studio中的Designer窗口中查看XAML時,控件無法呈現。這可以通過使用Visual Studio 2017.3 Preview來解決。

    • 在非Windows 10平臺上編譯失敗;

    • 在此前的平臺上構建應用程序時,可能會收到錯誤。

    Win10 SDK和模擬器下載:請點此鏈接。

    想看到更多這類內容?去APP商店搜IT之家,天天都有小歡喜。

    聲明本篇博客為作者原創,本篇是繼支付寶支付之后本人又學習的第二種支付實現,本篇著重于原理與注意事項的學習。

    微信支付的開發文檔相比支付寶的比較簡單,但是使用功能絲毫也不含糊,我覺得簡單易讀的文檔是吸引開發者做出喜好選擇的第一步。但是個人覺得,微信支付與支付寶的支付的實現思路大致雷同,并不能說是微信另開思路進行支付創新。

    微信支付的官方文檔中提供了掃碼支付、公眾號支付、App支付支付模式。開發者要實現用微信支付的功能,需要商戶向微信官方申請微信支付權限,商戶獲得權限后,將支付賬戶信息告訴開發者。

    商戶申請的支付賬號信息表如下:

    好了下面將要卻別兩個概念,什么是公眾號?什么是開放平臺?

    參考公眾賬號就是面向企業、團體、機構、公司、政府等等的擁有一定運營能力一個團結的集合的公眾號,用來作為一個自媒體或者服務窗口來用,強調信息流。開放平臺是面向那些擁有成熟的應用程序,能夠將信息分享給社交圈子的一種偏向技術實現的平臺,是面向開發者來說。看看shareSDK中都能夠的一些社交平臺都是一種開放平臺。個人理解。

    微信支付的模式有:(參考)刷卡支付、掃碼支付、公眾號支付、App支付

    刷卡支付:(非驗密支付)門店收銀臺生成訂單->用戶打開客戶端生成支付條碼->門店掃碼->后臺生成sign->后臺調用刷卡API請求支付->微信支付系統驗證支付信息->通過驗證處理數據->給商戶后臺->商戶后臺對得到的支付結果進行簽名驗證和處理->{處理成功:微信支付系統會將支付結果返回給商戶,同時把支付結果通知給用戶(以短信、微信消息的形式通知)}(驗密支付)門店收銀臺生成訂單->向后臺發起支付請求->后臺調用【提交刷卡支付API】請求支付生成支付交易->微信支付系統驗證請求支付信息驗證->通過驗證要求用戶輸入密碼->微信支付系統返回USERPAYING狀態->給商戶后臺返回收銀臺應答結果->微支付系統通知用戶輸入密碼->用戶輸入密碼,提交微信支付,萬成支付->微信客戶端提示微信后臺返回在支付結果->用戶得到來自微信后臺的提示短息->商戶收銀臺得到USERPAYING狀態經過商戶后臺調用【查詢訂單API】查詢實際支付結果->如果支付結果仍為USERPAYING,則每隔5秒循環調用【查詢訂單API】判斷實際支付結果,如果用戶取消支付或累計30秒用戶都未支付,商戶收銀臺退出查詢流程后繼續調用【撤銷訂單API】撤銷支付交易。

    支付的異常處理:

    用戶遇到支付異常,請按如下說明處理

    (1)用戶微信端彈出系統錯誤提示框,用戶可在交易列表查看交易情況,如果未找到訂單,需要商戶重新發起支付交易;如果訂單顯示成功支付,商戶收銀系統再次調用【查詢訂單API】查詢實際支付結果;

    (2)用戶微信端彈出支付失敗提示,例如:余額不足,信用卡失效。需要重新發起支付;

    (3)當交易超時或支付交易失敗,商戶收銀系統必須調用【撤銷訂單API】,撤銷此交易。

    (4)由于銀行系統異常、用戶余額不足、不支持用戶卡種等原因使當前支付交易失敗,商戶收銀系統應該把錯誤提示明確展示給收銀員。

    (5)根據返回的錯誤碼,判斷是否需要撤銷交易,具體詳見API返回錯誤碼列表

    下面是微信支付的協議規則:

    微信支付也要使用到簽名(加密)

    關于簽名:

    第一步生成簽名:

    (1)生成簽名,在生成簽名之前,與支付寶的一樣,也是要將訂單的信心以URL鍵值對的格式即key1=value1&key2=value2…)拼接成字符串stringA。對于該鍵值對要進行排序,按照(參數名ASII碼排序,就是第一個字母排序,如果首字母相同,就對第二個字母進行排序,依次排序....)

    (2)不對空的鍵值對進行簽名,在準備訂單信息的時候如出現空值,則該空值對應的鍵不被簽名

    (3)參數有大小寫之分,并且鍵 sign 不參與簽名

    (4)如果訂單中除了微信給出的字段,又增添若干字段,

    第二步得到臨時sign:

    在stringA最后拼接上key得到stringSignTemp字符串,并對stringSignTemp進行MD5運算,再將得到的字符串所有字符轉換為大寫,得到sign值signValue。

    key設置路徑:微信商戶平臺(pay.weixin.qq.com)-->賬戶設置-->API安全-->密鑰設置

    樣例參照官方文檔:參照如何使用在線簽名驗證的操作:參照

    在官方文檔中說明 “生成個隨機數算法” 有這樣一句話:字段nonce_str,主要保證簽名不可預測。我覺得這與支付寶中的:時間戳、隨機串都是要實現一樣的功能,增加簽名的復雜性與唯一性。微信這個nonce_str就相當于支付寶的Order.h中聲明的時間戳屬性字段。

    在微信中凡是涉及資金的接口都需要獲取商戶的證書。如:資金回滾、退款、撤銷接口。

    關于商戶證書:參考就支付寶簽名要用到的公鑰與私鑰與微信的簽名機制比較,微信是采用的是證書機制,首先在商戶服務器上部署微信根證書,私鑰包含在證書里面,要想對訂單信息進行簽名,就需要對證書進行驗證,由于根證書放在商戶的有訪問權限控制的非虛擬目錄中(防止非法下載,防止病毒木馬,他人非法盜取),所以不論是請求還是回調都要使用https安全的傳輸協議。

    注意事項:微信官方文檔建議商戶使用較高版本的微信SSL、建議在調用支付API時,使用IPV4解析 參考

    要使用微信支付前,必須要仔細閱讀官方文檔,要做到對上面的API的各種參數了解,明白怎么使用,也要注意文檔中的注意事項。

    有可能官方的SDK會修改,文檔會變動,所以還是要及時關注官方的文檔去學習。在我的下一篇博客中我會去重點寫一下使用微信支付的SDK環境搭建,以及如何從微信的官方demo中抽出有用的組件到我們的工程中。關于主要的參數本篇不再贅述。

    下面僅僅是模擬微信支付的實現,因為微信支付是在微信這個App中不存在調用網頁支付。所以本文不能看到支付的界面。

    首先建立一個新的工程作為我們的工程,工程名字為weixin_study

    使用故事版為其關聯一個支付的按鈕,按鈕名字為:weixinPay_Button

    (1)注冊微信的開放平臺申請Appid 注冊

    這里注冊的測試 Appid 是 “wx920fde9f97d60569”

    在工程->info->URL Types 中作如下配置

    (2)從官網得到的demo中取出名字為 “SDKExport” 的文件夾拖入我們的工程中

    (2)在工程->Build Phases->Link Binary With Libraries 中引入下面組件

    致此支付的環境已經配置好了,下面實現支付的功能

    我們模擬的訂單信息是:

    {

    "status": 200,

    "message": "成功!",

    "data": {

    "payId": 14187,

    "orderId": 16257,

    "orderNo": "2016011215151844904636",

    "amount": 300,

    "name": "【內飾清洗】微利天弘汽車美容裝飾",

    "description": "微利天弘汽車美容裝飾 內飾清洗服務",

    "notifyUrl": "http://app.cheguchina.com/wash/weixinpay/mobilenotify",

    "payType": 30,

    "ip": "218.28.20.138",

    "prepay": {

    "appId": "wx920fde9f97d60569",

    "partnerId": "1220277201",

    "prepayId": "920103900011129271ad0485b2fa00",

    "package": "Sign=WXPay",

    "timeStamp": "1452582979",

    "nonce": "xl27JbHJSLcs52tv",

    "sign": "1f3da1f83f60cbda0f715e6b0b9a0241b790d4"

    }

    在Appdeleagate.m中注冊商戶App,,并導入相關頭文件

    下面是主要的關鍵代碼:

    #import "AppDelegate.h"
    #import "WXApi.h"
    #import "WXApiObject.h"
    
    
    @interface AppDelegate <WXApiDelegate>
    
    @end
    
    @implementation AppDelegate
    
    
    - (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
    
        //1.AppID : 微信開發者平臺注冊后給的一個應用標示
        //2.description : 沒什么用只是給開發者一種解釋的作用
        [WXApi registerApp:@"wx920fde9f97d60569" withDescription:@"demo 2.0"];
        
        return YES;
    }
    
    
    -(void)onResp:(BaseResp*)resp{
        
        if ([resp isKindOfClass:[PayResp class]]){
            PayResp *response=(PayResp*)resp;
            
            //通知中心傳值
            [[NSNotificationCenter defaultCenter] postNotificationName:@"weixinzhifu" object:response];
            
            
        
        }
    }

    View Code Appdeleagate.m

    #import "ViewController.h"
    #import "WXApi.h"
    #import "WXApiObject.h"
    @interface ViewController <WXApiDelegate>
    
    @end
    
    @implementation ViewController
    
    - (void)viewDidLoad {
        [super viewDidLoad];
        // Do any additional setup after loading the view, typically from a nib.
    }
    - (IBAction)wxAtcion:(id)sender {
        
        //微信支付方法
        
        PayReq *request=[[PayReq alloc] init];
        
        
        //** 商家向財付通申請的商家id */
        request.partnerId=@"1220277201";
        //預支付訂單 (包含商品的信息 如價格 : 標題 , 描述 等信息)
        request.prepayId=@"8201038000160122a3971f85dc6f20d";
        //商家根據財付通文檔填寫的數據和簽名  類似一種標示
        request.package=@"Sign=WXPay";
        //隨機串
        request.nonceStr=@"5xv1tGmFhe1cq5IZ";
        //時間戳  (從1970年到現在的秒數)
        request.timeStamp=1452582950;
        //商家根據微信開放平臺文檔對數據做的簽名  (對數據的一種加密形勢)
        request.sign=@"0ac8963b331100acf5461e4d1ab726f7877912e";
        
        //調用微信支付的方法
        [WXApi sendReq:request];
    
        
    }
    
    - (void)viewWillAppear:(BOOL)animated {
        [super viewWillAppear:animated];
        
        //接受通知
        [[NSNotificationCenter defaultCenter]addObserver:self selector:@selector(weiXinPayBack:) name:@"weixinzhifu" object:nil];
    }
    
    //通知中心觸發的方法
    - (void)weiXinPayBack:(NSNotification *)notification {
        
           PayResp *response=notification.object;
        
        switch(response.errCode){
            case WXSuccess:
     //服務器端查詢支付通知或查詢API返回的結果再提示成功
     NSLog(@"支付成功");
     break;
            default:
     NSLog(@"支付失敗,retcode=%d",response.errCode);
     break;
        }
    }
    
    - (void)viewWillDisappear:(BOOL)animated {
        [super viewWillDisappear:animated];
        [[NSNotificationCenter debugDescription] removeObserver:self forKeyPath:@"weixinzhifu"];
    }
    
    
    - (void)didReceiveMemoryWarning {
        [super didReceiveMemoryWarning];
        // Dispose of any resources that can be recreated.
    }
    
    @end

    View Code ViewController.m

    這里已經能夠完成實現支付了,如果數據是真正從服務器獲得的數據就可以查看到支付結果了。

網站首頁   |    關于我們   |    公司新聞   |    產品方案   |    用戶案例   |    售后服務   |    合作伙伴   |    人才招聘   |   

友情鏈接: 餐飲加盟

地址:北京市海淀區    電話:010-     郵箱:@126.com

備案號:冀ICP備2024067069號-3 北京科技有限公司版權所有