数日前、会社のプロジェクトの要件により、WeChat を使用してオンライン リチャージするための機能を作成したいと思いました。これは、WeChat ブラウザーで Web ページをクリックして WeChat 支払いを呼び出すものです。次に、開発プロセスについて簡単に説明します。 WeChat 支払いの 公式アカウント支払い :
まず第一に、あなたの公式アカウントは 認定されたサービス アカウントである必要があり、コードを開発して記述する前に、WeChat 支払いの許可が有効化されている必要があります。支払いを設定する必要があります。その後の操作を容易にするための関連情報 有効化後、公式アカウント販売者プラットフォームのバックグラウンド ログインに関連する情報が含まれる電子メールが送信されます。 販売者プラットフォームにログインした後、キーを設定します。 ->アカウント設定->APIセキュリティ、これは後で使用されます
アカウントパラメータの説明
APIパラメータ名 | 詳細説明 | |
---|---|---|
appid | appid パブリックプラットフォームでパブリックアカウントを申請した後、またはオープンプラットフォームでAPPアカウントを申請した後の、WeChatパブリックアカウントまたはオープンプラットフォームAPPの一意の識別子です。 , WeChat はアプリケーションを識別するために、対応する appid を自動的に割り当てます。このフィールドの値は、販売者の WeChat Payment 承認メールにも含まれます。 | |
mch_id | 加盟店がWeChatペイメントを申請した後、WeChatペイメントによって割り当てられる加盟店の支払いアカウント。 | |
key | 取引プロセス中の署名によって生成されたキーは、販売者システムとWeChat支払いのバックグラウンドにのみ保持され、ネットワーク内に拡散することはありません。マーチャントは、キーが漏洩しないように、キーを適切に保管し、ネットワーク上で送信したり、他のクライアントに保管したりしないようにする必要があります。販売者は、設定する電子メールのプロンプトに従って WeChat 販売者プラットフォームにログインできます。 | |
secret | AppSecret は、APPID に対応するインターフェースのパスワードであり、インターフェース呼び出し資格情報 access_token を取得するために使用されます。 WeChat 支払いでは、最初に OAuth2.0 インターフェイスを通じてユーザーの openid が取得され、この openid は WeChat 内の Web 支払いモードの注文インターフェイスによって使用されます。開発モードで AppSecret を取得します (開発者になり、アカウントに異常がない状態)。 |
主要な加盟店システムとWeChat支払いシステムアクション:
1. マーチャントサーバーは、統合注文インターフェースを呼び出して注文をリクエストします。API については、前払い注文をリクエストする前に、WeChat OAuth2.0 Web ページを呼び出す必要があります。ユーザーがユーザーの WeChat OpenId を取得するためのコードです。ここでは詳しく説明しません。以下は、前払い注文のコード実装です。
string timeStamp = TenPayUtil.GetTimestamp(); string nonceStr = TenPayUtil.GetNoncestr(); string paySign = string.Empty; //创建支付应答对象 var packageReqHandler = new RequestHandler(null); string spbill_create_ip = Request.UserHostAddress; //初始化 //packageReqHandler.Init(); //packageReqHandler.SetKey(TenPayInfo.Key); //设置package订单参数 packageReqHandler.SetParameter("appid", appID); //公众账号ID packageReqHandler.SetParameter("body", StrUtil.GetCutString(productName, 100)); //不能超过127个字符 packageReqHandler.SetParameter("mch_id", mchid); //商户号 packageReqHandler.SetParameter("nonce_str", nonceStr.ToLower()); //随机字符串 packageReqHandler.SetParameter("notify_url", notifyUrl); //接收财付通通知的URL packageReqHandler.SetParameter("openid", openId); //openid packageReqHandler.SetParameter("out_trade_no", sp_billno); //商家订单号 // packageReqHandler.SetParameter("attach", ""); //附加数据 未来可用于区分不同微信支付业务 packageReqHandler.SetParameter("spbill_create_ip", spbill_create_ip); //用户的公网ip,不是商户服务器IP packageReqHandler.SetParameter("total_fee", (onlinePayMoney * 100).ToString("0")); //商品金额,以分为单位(money * 100).ToString() packageReqHandler.SetParameter("trade_type", "JSAPI"); //交易类型 //获取package包 string sign = packageReqHandler.CreateMd5Sign("key", TenPayInfo.Key); packageReqHandler.SetParameter("sign", sign); //交易类型 string data = packageReqHandler.ParseXML(); LoggerHelper.Log(data); //调用统一下单接口请求订单 var result = TenPayV3Service.Unifiedorder(data); LoggerHelper.Log(result); var res = XDocument.Parse(result); string prepayId = string.Empty; if (res.Element("xml").Element("return_code").Value == "SUCCESS") { prepayId = res.Element("xml").Element("prepay_id").Value; } string package = string.Format("prepay_id={0}", prepayId); timeStamp = TenPayUtil.GetTimestamp(); //设置支付参数 var paySignReqHandler = new RequestHandler(null); paySignReqHandler.SetParameter("appId", appID); paySignReqHandler.SetParameter("timeStamp", timeStamp); paySignReqHandler.SetParameter("nonceStr", nonceStr); paySignReqHandler.SetParameter("package", package); paySignReqHandler.SetParameter("signType", "MD5"); paySign = paySignReqHandler.CreateMd5Sign("key", TenPayInfo.Key); //将信息传递给支付页面 ViewBag.appId = appID; ViewBag.timeStamp = timeStamp; ViewBag.nonceStr = nonceStr; ViewBag.package = package; ViewBag.paySign = paySign;
2. 加盟店サーバーは支払い通知を受け取り、API はパブリック API【支払い結果通知 API】にあります
<script> // 当微信内置浏览器完成内部初始化后会触发WeixinJSBridgeReady事件。 document.addEventListener('WeixinJSBridgeReady', function onBridgeReady() { $(function () { //公众号支付 jQuery('#getBrandWCPayRequest').click(function (e) { WeixinJSBridge.invoke('getBrandWCPayRequest', { "appId": "@ViewBag.appId", //公众号名称 "timeStamp": "@ViewBag.timeStamp", //时间戳 "nonceStr": "@ViewBag.nonceStr", //随机串 "package": "@Html.Raw(ViewBag.package.ToString())",//扩展包 "signType": "MD5", //微信签名方式 "paySign": "@ViewBag.paySign" //微信签名 }, function (res) { if (res.err_msg == "get_brand_wcpay_request:ok") { //alert("微信支付成功!"); window.location.href = "@WxPaySettingConfig.WmallURL/Wmall/TradePay/Success/@ViewBag.ShopId/?orderNo=@orderNoMark"; } else if (res.err_msg == "get_brand_wcpay_request:cancel") { //alert("用户取消支付!"); } else { window.location.href = "/wxpay/jsapi/error/?isPayFail=1&csid=@ViewBag.ShopId&orderNo=@orderNoMark&biztype=1"; } // 使用以上方式判断前端返回,微信团队郑重提示:res.err_msg将在用户支付成功后返回ok,但并不保证它绝对可靠。 //因此微信团队建议,当收到ok返回时,向商户后台询问是否收到交易成功的通知,若收到通知,前端展示交易成功的界面;若此时未收到通知,商户后台主动调用查询订单接口,查询订单的当前状态,并反馈给前端展示相应的界面。 }); }); }); //WeixinJSBridge.log('yo~ ready.'); }, false); </script>
WeChat パブリック アカウント開発に関する WeChat 支払い関連記事の詳細はこちら、PHP 中国語 Web サイトに注意してください。

ホットAIツール

Undresser.AI Undress
リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover
写真から衣服を削除するオンライン AI ツール。

Undress AI Tool
脱衣画像を無料で

Clothoff.io
AI衣類リムーバー

Video Face Swap
完全無料の AI 顔交換ツールを使用して、あらゆるビデオの顔を簡単に交換できます。

人気の記事

ホットツール

ドリームウィーバー CS6
ビジュアル Web 開発ツール

PhpStorm Mac バージョン
最新(2018.2.1)のプロフェッショナル向けPHP統合開発ツール

SublimeText3 中国語版
中国語版、とても使いやすい

メモ帳++7.3.1
使いやすく無料のコードエディター

SublimeText3 Mac版
神レベルのコード編集ソフト(SublimeText3)

ホットトピック









