ASP.Net:EshineASPnetチュートリアル-支払機関支払モジュール

11475 ワード

チュートリアルリンク:ASP.Net:EshineASPnet-ASPベースNetオープンソースフレームワークの迅速な開発
支払いも最もよく見られる機能の一つで、ショッピングモールでもサービスでも、ビジネスモデルから言えば、1つのプロジェクトがお金にどれだけ近いかを見るのが一般的で、支払い機能は2 Cの最も直接的な利益方式です.
支払機関
支払い機関が多く、どの会社が国からの支払いナンバープレートを手に入れたのかは議論の範疇ではなく、主流の人は支付宝と微信の支払いに使うに違いない.また、連動U払い、速銭、通聯、易宝など、あまり知られていないかもしれません.それぞれの支払いサービスは大きく異なり、一般的に使われるウェブ決済、モバイル決済、一括支払いなどがあります.差も常にあり、手数料率、サービスなどに差があります.あなたはいつもいくつかの支付宝が満足していない需要に出会う可能性があります.あなたは帰って他の第三者の支払いを求める可能性があります.例えば筆者のこれまでの業務は欧米の消費方式に倣い、クレジットカードの情報を入力して支払う必要があった.あるいはあなたは手数料の上で駆け引きをしたいと思っています.支付宝が大きすぎるので、あなたの流水が大きい限り、人はあなたを鳥にしません.あるいはあなたは中間プラットフォームとして収入をあなたの手数料を差し引いて他の口座に振り込みたいと思っています.もちろんこれらの一般的なプログラマーは考慮する必要はありません.CTOはコントロールする必要があります.ただ、技術の範疇に限らず、雑談しないでください.
手数料
料金の面では支付宝はこれまで取引の1.2%だったが、流水の大きさで最低0.6%に下がることができ、中小企業は固定0.55%に下がることができ、微信も0.6%で、他の第三者も差が少なく、速銭通連は0.5%で、量が大きい.この手数料は取引が成功した後、すぐに差し引かれ、差し引かれた金額になります.0.1%を軽視しないでください.100万の流水支払い機構ごとに1000元を受け取ります.0.6%は6000元です.これも無視できません.販売額の大部分がコストなので、この手数料は利益から差し引かなければなりません.税金を考えるともっと複雑です.もちろん今、国家税務はインターネットの支払いプラットフォームのお金でまだあまり監督管理されていません.主に銀行の流れを見ているので、支付宝などで税金を避ける方法を提供しています.多くの会社もそうしています.将来はきっとこの暇がないに違いない.ビットコイン中央銀行も、どのように税務監督管理を支付宝にするかは時間のことであり、法規の登場周期が長いだけだ.
手数料なし振込
上記の料金率はネットショップが購入して注文が発生した場合で、もう一つの場合は手数料がありません.それはユーザーが振り替えて、各商家にQRコードがあり、支付宝で商家入金コードを呼んで、このQRコードをスキャンしても金額は現れません.これはある注文に対応していないので、金額は自分で入力して、お金が商家口座に着いても手数料は控除されません.この方式の弊害も明らかで、人工的に帳簿を調べる必要があり、人工的に注文書をマッチングする必要がある.だから0.6%の手数料が高いか、従業員を雇って帳簿を調べるコストが高いかを比較することができます.これは注文数の実際の状況から考えればいいです.今、街の小さな店に置いてあるQRコードの多くは個人のQRコードで、このような振り替え形式で、小さな店は領収書さえ開かないでどうしてこの0.6%の手数料を払うことができますか?
ネットバンク支払い
支付宝などの第三者決済会社のほか、当初は牛が騒いでいた銀行もあった.ネットバンクの支払いはずっとあって、知っていなければならないのは今ネットバンクの支払いを選んで実は多くの最後に行ったのか第三者の支払い通路なのか、必ずしも支付宝ではありませんて、その上多くは支付宝ではありませんて、どうして、他の小さい支払い会社がもっと優遇する料金率を与えることができるためです.しかし、私たちはやはり消費者の展示ページに銀行のリストを表示することができます.最後にジャンプしたページも確かに銀行の支払いページです.ただ、受取人はあなたの消費者ではなく第三者の支払い機関になりました.
支払制限
さらに支払い制限といえば、まず消費者の支払いの制限であり、多くの人は自分で制限をしないで、銀行の制限に基づいている.例えば、速いお金は1万を超えず、1日に2万を超えず、量が大きく調整できるものもあります.支付宝の単筆は10万を超えず、1日200万を超えない.これは一般的にどのようにこの制限に達するのかと思うかもしれませんが、筆者は例を挙げて、もしあなたが賃貸業務をしているならば、あなたは年払いの選択肢を提供するかもしれません(追加割引を受けることができます)、1つの良い家の源は月の賃貸料が万を超えているかもしれません.それでは、1筆で超過する可能性があります.玉石の字画の贅沢品については、もっと超えている可能性があります.それから商戸口座の転出の制限で、多くは金額の制限がなくて、支付宝は毎日500万を制限して、速いお金の制限は対公口座に現金化するしかありません.多くの场合、现金の手数料は出ていません.支付宝の当日の入金には0.2%の手数料がかかり、最低2元は最高25元で、翌日の入金はかかりません.まだ終わっていないので、これらはすべて人工的に操作することはできません.もし自動的に操作するならば、APIインタフェースを接続する必要があります.APIで支払う必要があります.どちらも違います.自分で比較します.
アリペイと微信の支払い
1家のアリ1家のテンセント、源もとても深くて、馬雲創アリの時に馬化騰の投資を探して投げていないで、よくない原因を見ても評価の原因はやはり株のシェアを占める原因はすべてあるかもしれません.テンセントはとても牛で、テンセントの最も牛のは写し(筆者が言ったのは過去で、今も革新して投資しています)で、写したのはすべて青が青より出て青に勝って、しかし成功しないこともあって、微博は新浪に負けて、財付通は支付宝に負けて、今微信の支払いは悪くありません.もちろんアリも社交に行って羹を分けようとしたが成功しなかった.微信の支払いの背後にも財付通が縛られていて、個人的には支払いが宝で作ったほうがいいと感じています.個人的な意見は噴き出してはいけません.
インタフェースドッキング
各家が支払うのはすべて完璧なインタフェースのドキュメントと使用例などを提供して、ドッキングするのはとても容易な1件の事で、ただ商家番号、鍵などのパラメータを修正して、これらは実はすべて契約の産出で、ビジネスの部分に属して、しかし過程の中でドメイン名、ipなどの小さい部分の技術のパラメータを記入することに関連して、業務と技術の共同参加の部分に属します.ここではインタフェースドキュメントのコードは貼られず、家ごとに異なりますが、支払いに関連するデータベース設計を提案する必要があります.私たちの注文データベースは、支払機関から返された支払番号、支払日などのデータを格納するためにフィールドを予約する必要があります.これにより、後期に手動でも自動でも帳簿を調べることができます.複数のサードパーティに対する支払いを計画している場合は、各支払い機関に対応するフィールドがあり、もちろん1つの共通のフィールドだけでJSON方式で格納することもでき、フィルタの利便性やデータ構造の複雑さを自分で比較することができます.必ず修正しなければならないのは注文ステータスフィールドで、支払いポートは支払いが完了した後に何度も支払い成功メッセージをプッシュして、インタフェースは受け取った後にまず注文ステータスがすでにこの支払いメッセージを処理したかどうかを検査して、もし無視するならば、さもなくば相応の操作を実行して、例えば注文ステータスを修正して支払いに成功して、通知メールを送って、配達の流れを起動します.ここでは支付宝の即時入金製品を例に挙げます.通常はnotifyをurlとreturn_urlなどはWeb.Configで読み取り、まずアリペイComを引用する.Alipay、そして注文情報をDictionaryに保存し、上のnotifyを含む.url、return_url、テーマ(通常の注文には名前はありませんが、Eshine精選などの一般的な名前を設定したり、複数の商品を1つ目の商品名をテーマに選んだりすることができます)、注文番号(自分の注文番号で、後に支付宝の支払い注文番号ではありません)、総価格(第三者の支払いの基準とは異なり、分割単位、すなわち整形、一部は元単位、すなわち浮動小数点型)、内容(空いていればいい)、フィッシング防止タイムスタンプなどは、ネットバンク決済を選択して銀行のコードを記入するのが一般的で、最後にはPost用のFormとJS用のPostを自動的に実行するためのJSが生成されます.
    public void goalipay(string out_trade_no, string total_fee, string paytype)
    {
        //    
        string payment_type = "1";
        string notify_url = System.Configuration.ConfigurationManager.AppSettings["notify_url"];
        string return_url = System.Configuration.ConfigurationManager.AppSettings["return_url"];
        string seller_email = "[email protected]";

        //    
        string subject = (string)GetGlobalResourceObject("GResource", "mpselection");
        //    
        string body = "";
        //      
        string show_url = "";

        //      
        string anti_phishing_key = Submit.Query_timestamp();
        //          submit  query_timestamp  

        //    IP  
        string exter_invoke_ip = "";
        //       IP  , :221.0.0.1

        //          
        SortedDictionary<string, string> sParaTemp = new SortedDictionary<string, string>();
        sParaTemp.Add("partner", Config.Partner);
        sParaTemp.Add("_input_charset", Config.Input_charset.ToLower());
        sParaTemp.Add("service", "create_direct_pay_by_user");
        sParaTemp.Add("payment_type", payment_type);
        sParaTemp.Add("notify_url", notify_url);
        sParaTemp.Add("return_url", return_url);
        sParaTemp.Add("seller_email", seller_email);
        sParaTemp.Add("out_trade_no", out_trade_no);
        sParaTemp.Add("subject", subject);
        sParaTemp.Add("total_fee", total_fee);
        sParaTemp.Add("body", body);

        if (paytype != "alipay")
        {
            sParaTemp.Add("paymethod", "bankPay");
            sParaTemp.Add("defaultbank", paytype.Substring(7, paytype.Length - 7));
        }

        sParaTemp.Add("show_url", show_url);
        sParaTemp.Add("anti_phishing_key", anti_phishing_key);
        sParaTemp.Add("exter_invoke_ip", exter_invoke_ip);

        //    
        string sHtmlText = Submit.BuildRequest(sParaTemp, "get", "  ");
        Response.Write(sHtmlText);
    }

上のSubmitは支付宝の類の中にあります.このコードは注文書が支付宝に提出される過程を示しています.この瞬間からページは支付宝のサイトにジャンプします.つまり、自分のサイトのページではありません.ユーザーが支払いを完了していないのに、あなたのサイトにジャンプできないことを避けるために、この支払いページは新しいウィンドウであるはずですが、JSが開いた新しいウィンドウではありません.ブラウザにブロックされるので、支払いが成功しても成功しなくても、ユーザーはあなたのサイトを閲覧することができます.私の注文ページに行って再支払いできます.支払いに成功した処理ここではサンプルを示し,最終的には実際の状況に従って処理する.
            if (verifyResult)//    
            {
                orders.orderID = int.Parse(Request.QueryString["out_trade_no"]);
                orders = ob.getorders(orders);

                if (orders != null)
                {
                    orders.payRefNum = Request.QueryString["trade_no"];
                    orders.payNote = Request.QueryString["trade_status"];

                    if (Request.Form["trade_status"] == "TRADE_FINISHED")
                    {
                        //                    
                        //        ,     (out_trade_no)                    ,          
                        //       ,          
                        if (orders.orderStatus != "    ")
                        {
                            orders.orderStatus = "    ";
                            PublicClass pc = new PublicClass();
                            orders = pc.doshop_eticket(orders);
                        }

                    }
                    else if (Request.Form["trade_status"] == "TRADE_SUCCESS")
                    {

                    }
                    ob.Update(orders);
                }

                Response.Write("success");  //        
            }

上のコードはnotifyに置いてありますurlの中のは検証に成功した後にまず帰ってきた注文番号によって自分のデータベースで注文を探し出して、もし見つけたら、処理したことがなければ、支付宝の注文番号、支払い状態などを保存して、支払い注文を修正して支払いの完成にして、そして後続の処理をします.
締めくくり
最初は技術に目を向けず、技術は業務に奉仕することを共に学びたいという内容だった.
このチュートリアルのコードはEshineASPnetWebpaymentを参照してください.aspx EshineASPNet\Webotify_url.aspx
チュートリアルリンク:ASP.Net:EshineASPnet-ASPベースNetオープンソースフレームワークの迅速な開発