您的位置:首页 > 产品设计 > UI/UE

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

2016-03-18 18:54 363 查看
下了无数次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。

公钥秘钥怎么生成:https://help.alipay.com/support/help_detail.htm?help_id=397433&keyword=%C3%DC%D4%BF

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

注意:.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
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: