runliuv

runliuv@cnblogs

  博客园 :: 首页 :: 博问 :: 闪存 :: 新随笔 :: 联系 :: 订阅 订阅 :: 管理 ::

【移动支付】S1E03动联云音箱

 

其它工具类我放在“【移动支付】S1工具类”这篇文章中:https://www.cnblogs.com/runliuv/p/18761215。

 

 

调用代码:

private void btnPlayTest_Click(object sender, EventArgs e)
        {
            try
            {
                decimal dAmt = decimal.Parse(txtAmt.Text);
                string payWay = txtPayWay.Text;
                DlPlayUtil.Play(dAmt, payWay, txtYunSN.Text);
            }
            catch (Exception ex)
            {
                MessageBox.Show(ExpUtil.GED2(ex));
            }
        }

 

工具类:

using CommonUtils;
using Newtonsoft.Json;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace WinFormBase.Utils2
{
    
    public class DlPlayUtil
    {
        #region 替换成你自己的签名参数

        static string _access_key_id = "x";
        static string _access_key = "x";
        static string _url = "x";

        //static string vp_device_id2 = "x";


        #endregion

        public static void Play(decimal pay_amt,string pay_way,string vp_device_id)
        {


#if DEBUG
#endif


            StringBuilder scLog = new StringBuilder();
            JsonSerializerSettings jsetting = new JsonSerializerSettings();
            jsetting.DefaultValueHandling = DefaultValueHandling.Ignore;

            int total_fee = (int)(pay_amt * 100);

            string prefix = "收款";
            //语音播报前缀
            // 1 支付宝;  4 微信;  5 收款;
            if (pay_way == "WX")
            {
                prefix = "微信收款";
            }
            else if (pay_way == "ALI")
            {
                prefix = "支付宝收款";
            }
            DcMsgPlayReq req = new DcMsgPlayReq();
            req.method = "push_msg";
            req.access_key_id = _access_key_id;
            req.request_timestamp = DateTime.Now.ToString("yyyyMMddHHmmssfff");
            req.request_id = Guid.NewGuid().ToString("N").Substring(0, 25);
            req.device_id = vp_device_id;
            req.Suffix1 = "01";
            req.Suffix1Msg = prefix;
            req.Suffix2 = "00";
            //req.Suffix2Msg = txtSuffix2Msg.Text;
            req.payAmount = total_fee.ToString();//实测最高:99999元。
            req.push_template = "00";
            req.nonce = Guid.NewGuid().ToString("N");

            var dic1 = HashUtil.ModelToDic(req);
            var dic2 = HashUtil.AsciiDictionary(dic1);
            var linkStr = HashUtil.BuildQueryString(dic2);
            var sign = HashUtil.HmacSHA256_base64(linkStr, _access_key);

            req.sign = sign;

            string postJson = JsonConvert.SerializeObject(req, jsetting);
            string url = _url + "/api/push";
            scLog.AppendLine("url:\r\n" + url);
            scLog.AppendLine("postJson:\r\n" + postJson);

            var rspStr = HttpUtil.HttpPostJson(url, postJson, 6);
            scLog.AppendLine("rspStr:\r\n" + rspStr);
            //GLog.WLog(scLog.ToString());
        }
    }
}

 

posted on 2025-03-09 19:23  runliuv  阅读(8)  评论(0)    收藏  举报