WeChat パブリック アカウント開発のための WeChat 支払い

高洛峰
リリース: 2017-02-22 16:02:59
オリジナル
1959 人が閲覧しました

数日前、会社のプロジェクトの要件により、WeChat を使用してオンライン リチャージするための機能を作成したいと思いました。これは、WeChat ブラウザーで Web ページをクリックして WeChat 支払いを呼び出すものです。次に、開発プロセスについて簡単に説明します。 WeChat 支払いの公式アカウント支払い:

まず第一に、あなたの公式アカウントは認定されたサービス アカウントである必要があり、コードを開発して記述する前に、WeChat 支払いの許可が有効化されている必要があります。支払いを設定する必要があります。その後の操作を容易にするための関連情報有効化後、公式アカウント販売者プラットフォームのバックグラウンド ログインに関連する情報が含まれる電子メールが送信されます。 販売者プラットフォームにログインした後、キーを設定します。 ->アカウント設定->APIセキュリティ、これは後で使用されます

微信公众号开发之微信支付アカウントパラメータの説明


メール内のパラメータ APPID WeChat決済加盟店番号 APIキー Appsecret
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】にあります

ログイン後にコピー

WeChat パブリック アカウント開発に関する WeChat 支払い関連記事の詳細はこちら、PHP 中国語 Web サイトに注意してください。


関連ラベル:
ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
最新の問題
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート
私たちについて 免責事項 Sitemap
PHP中国語ウェブサイト:福祉オンライン PHP トレーニング,PHP 学習者の迅速な成長を支援します!