c#生成支付宝签名(hbuilder上调用)

版权声明:本文为博主原创文章,需要转载尽管转载。 https://blog.csdn.net/z5976749/article/details/50925814

下了无数次SDK。。。

SDK地址(即时到账):https://doc.open.alipay.com/doc2/detail?treeId=54&articleId=103419&docType=1#s2

其他产品功能中即时到账的DEMO,下载下来放到项目中。

主要是app_code中的AlipayConfig.cs,配置好商户ID、公钥秘钥、回调地址可以不写、签名方式 RSA。

编码格式根据放进去的格式填,我的是utf-8。

公钥秘钥怎么生成:http://blog.csdn.net/z5976749/article/details/79404789

照着上面的网站操作就可以了

注意:.NET可以不用pkcs8 加密,JAVA才需要。

发送部分:

price是金额。

public object GetPayInfo(HttpContext context)//_amount:付款金额
        {
            string _amount = context.Request["price"];
            string orderInfo = OrderInfo(_amount);
            // 对订单做RSA 签名
            string sign = RSAFromPkcs8.sign(orderInfo, Config.private_key, Config.input_charset); //支付宝提供的Config.cs
            //仅需对sign做URL编码
            sign = HttpUtility.UrlEncode(sign, Encoding.UTF8);
            string payInfo = orderInfo + "&sign=\"" + sign + "\"&"
                + getSignType();
            return payInfo;
        }
        
        public string OrderInfo(string price)
        {
            Dictionary<string, string> payinfo = new Dictionary<string, string>();
            payinfo.Add("service", "\"mobile.securitypay.pay\"");
            payinfo.Add("partner", "\"" + Config.partner + "\"");
            payinfo.Add("seller_id", "\"" + Config.partner + "\"");
            payinfo.Add("out_trade_no", "\"" + DateTime.Now.ToString("yyyyMMddHHmmssfff")+ "\"");
            payinfo.Add("subject", "\"上海公司\"");
            payinfo.Add("body", "\"*****\"");
            payinfo.Add("total_fee", "\"" + price.ToString() + "\"");
            payinfo.Add("notify_url", "\"***********\"");
            payinfo.Add("payment_type", "\"1\"");
            payinfo.Add("_input_charset", "\"UTF-8\"");
            payinfo.Add("it_b_pay", "\"30m\"");            
            return Core.CreateLinkString(payinfo);
        }
        
        public String getSignType()
        {
            return "sign_type=\"RSA\"";
        }</span>
hbuilder收到这返回值就能支付了。

hbuilder部分:

function topay(rate) {
                if (w) {
                    return;
                }
                //检查是否请求订单中
                w = plus.nativeUI.showWaiting();
                mui.getJSON("http://************/api/Pay", {
                    _amount: rate
                }, function(data) {
                    w.close();
                    w = null;
                    if (data) {
                        plus.payment.request(pays["alipay"], data, function(result) {                         
                                        plus.nativeUI.alert("支付成功:感谢您的支持。", function() {
                                            mui.back();
                                        }, "****");                                   
                        }, function(error) {
                            if (error.code == 62001) {
                                mui.toast("您放弃支付.");
                                mui.back();
                            } else {
                                plus.nativeUI.alert("支付失败", null, "请前往会员中心再次对该订单尝试支付,支付失败:" + error.code);
                            }
                        });
                    }
                });
            }

地址:http://ask.dcloud.net.cn/article/197




猜你喜欢

转载自blog.csdn.net/z5976749/article/details/50925814