web支付篇

支付宝支付

<button onclick="fnAlipay">点击支付</button>

function fnAlipay(){
	//模拟接口返回( resForm表单数据实为接口返回 )
	let resForm = "<form id='alipaysubmit' name='alipaysubmit' action='https://openapi.alipay.com/gateway.do?charset=UTF-8' method='POST'>"+
	                      "<input type='hidden' name='biz_content' value='{\"productCode\":\"QUICK_WAP_PAY\",\"subject\":\"橙园24°\",\"out_trade_no\":\"201807201006587430\",\"total_amount\":0.01,\"timeout_express\":\"1m\"}'/>"+
	                      "<input type='hidden' name='app_id' value='2018070760510577'/>"+
	                      "<input type='hidden' name='version' value='1.0'/>"+
	                      "<input type='hidden' name='format' value='json'/>"+
	                      "<input type='hidden' name='sign_type' value='RSA2'/>"+
	                      "<input type='hidden' name='method' value='alipay.trade.wap.pay'/>"+
	                      "<input type='hidden' name='timestamp' value='2018-07-20 10:06:59'/>"+
	                      "<input type='hidden' name='alipay_sdk' value='alipay-sdk-php-20161101'/>"+
	                      "<input type='hidden' name='notify_url' value='http://orange24.msqsoft.net/index.php/api/Order/orderAliPayNotify'/>"+
	                      "<input type='hidden' name='return_url' value='http://orange24.msqsoft.net/index.html#/app/orders?index=0'/>"+
	                      "<input type='hidden' name='charset' value='UTF-8'/>"+
	                      "<input type='hidden' name='sign' value='ioGI8wwaP6L81+RpW6mdd9aprN5HtpB/JWaaXCx6wtGF0tZKinMFqt79z21wkdgu/ZiY4bYPe73Q6joS/vMe3i+n5AaCYB/6KgKQzy++En8nJZVi6OaNhnrFUH8LUNEfVHZXS25Agzu7zZ/QqP1mUizNsRnCT65G2lrhsK1wv7sfq1/FIggjiGYiqCE2KzQwaXp3McMTNS7mH2HcIkmAELx1U9EeU0RDM7veJjZObXndxim/zXojQ2e8nye8k9bwfgZAfnFR7zSGyw7kxyVTtsw/nT5p51bUxYRPpO7fjTWULQkZwS+kJ1jKDPKKBVxzxaNxF52i2NTORL/AdB1iWA=='/>"+
	                      "<input type='submit' value='ok' style='display:none;'>"+
	                    "</form>";
	
	//支付使用
	const div = document.createElement('div');
	div.innerHTML = resForm;
	document.body.appendChild(div);
	document.forms.alipaysubmit.submit();
}

//OK

微信jsapi支付(微信公众号支付)

if (typeof WeixinJSBridge == "undefined"){
    if( document.addEventListener ){
         document.addEventListener('WeixinJSBridgeReady', onBridgeReady, false);
     }else if (document.attachEvent){
         document.attachEvent('WeixinJSBridgeReady', onBridgeReady); 
         document.attachEvent('onWeixinJSBridgeReady', onBridgeReady);
     }
 }
 else{
     onBridgeReady();
 }
 
 function onBridgeReady(){
     WeixinJSBridge.invoke(
         "getBrandWCPayRequest", {
             "appId": "wxxxxxxxxxxxxxxxxxxxxxxx",
             "timeStamp": timeStamp, // 支付签名时间戳
             "nonceStr": nonceStr, // 支付签名随机串,不长于 32 位
             "package": packageStr, // 统一支付接口返回的prepay_id参数值
             "signType": signType, // 签名方式使用新版支付需传入'MD5'
             "paySign": paySign // 支付签名
         },
         function(res){
             if(res.err_msg == "get_brand_wcpay_request:ok" ){
                 // this.vant.Toast('支付成功')
                 // 接口轮询(订单处理中...)
                 this.$emit('showPayOverLoading',res.data.order)
             }
             else if( res.err_msg == "get_brand_wcpay_request:cancel" ){
                 // this.vant.Toast('取消支付')
                 // 取消支付
                 this.$emit('showPayOverLoadingCancel',res.data.order)
             }
             else if( res.err_msg == "get_brand_wcpay_request:fail" ){
                 // this.vant.Toast('支付失败')
                 // 支付失败
                 this.$emit('showPayOverLoadingCancel',res.data.order)
             }
         }
     ); 
}

微信h5支付

let xml = res.data.html.split('<mwebUrl>')[1];
let mwebUrl = xml.split('</mwebUrl>')[0];  //https://wx.tenpay.com/cgi-bin/mmpayweb-bin/checkmweb?prepay_id=wx20161110163838f231619da20804912345&package=1037687096
let url = window.location.href;
// 记住 进入分享页面url传参以payback为分角线(payback=只包括payback,paytime)
if( window.location.href.indexOf('payback=') != -1 ){
    url = window.location.href.split('payback=')[0]
}
let redirect_url = encodeURIComponent(url+'&payback=payCallBack&paytime='+new Date().getTime()+'payorder='+res.data.order);

window.location.href = mwebUrl + '&redirect_url='+redirect_url

// 支付完成后跳转到 redirect_url赋值页面,在该页面支付轮询,查看订单状态
ASP.NET Core Web 可以通过微信支付提供的 API 进行扫码支付的接入。下面是实现步骤: 1. 申请微信支付账号和开通扫码支付功能。在申请过程中,需要提供商户信息和开户银行信息等。 2. 在 ASP.NET Core Web 中引入微信支付 SDK,可以通过 NuGet 包管理器安装。 ``` Install-Package Senparc.Weixin.MP.Pay ``` 3. 在 ASP.NET Core Web 项目中添加配置文件 appsettings.json,用于存储微信支付相关的配置参数,如下所示: ``` { "WeixinPay": { "MchId": "微信支付分配的商户号", "AppId": "应用ID", "Key": "商户支付密钥" } } ``` 4. 在 ASP.NET Core Web 项目中创建一个控制器,用于处理扫码支付的请求。控制器代码如下所示: ``` [Route("api/[controller]")] [ApiController] public class WeixinPayController : ControllerBase { private readonly IOptions<WeixinPayOptions> _options; public WeixinPayController(IOptions<WeixinPayOptions> options) { _options = options; } [HttpPost("unifiedorder")] public async Task<IActionResult> UnifiedOrder([FromBody]UnifiedorderRequest request) { // 设置请求参数 var data = new TenPayV3UnifiedorderRequestData( body: request.Body, outTradeNo: request.OutTradeNo, totalFee: request.TotalFee, spbillCreateIp: request.SpbillCreateIp, notifyUrl: request.NotifyUrl, tradeType: "NATIVE", productId: request.ProductId ); // 调用统一下单 API 进行支付 var result = await TenPayV3.UnifiedorderAsync(_options.Value.AppId, _options.Value.MchId, _options.Value.Key, data); // 处理返回结果 if (result.ReturnCode == "SUCCESS" && result.ResultCode == "SUCCESS") { // 生成二维码图片 var url = result.CodeUrl; var qrCode = new QRCodeGenerator().CreateQrCode(url, QRCodeGenerator.ECCLevel.Q); // 返回二维码图片 return File(qrCode.GetGraphic(20), "image/png"); } // 返回错误信息 return BadRequest(result.ReturnMsg); } } ``` 5. 创建一个模型类,用于保存扫码支付的请求参数。 ``` public class UnifiedorderRequest { public string Body { get; set; } public string OutTradeNo { get; set; } public int TotalFee { get; set; } public string SpbillCreateIp { get; set; } public string NotifyUrl { get; set; } public string ProductId { get; set; } } ``` 6. 在 Startup.cs 文件中添加微信支付相关的配置,代码如下所示: ``` services.Configure<WeixinPayOptions>(Configuration.GetSection(nameof(WeixinPayOptions))); ``` 7. 启动 ASP.NET Core Web 项目,使用 Postman 或其他工具向接口发送扫码支付的请求,请求参数包括:商品描述、商户订单号、总金额、终端 IP、通知地址、商品 ID 等。 ``` POST /api/weixinpay/unifiedorder HTTP/1.1 Host: localhost:5000 Content-Type: application/json { "body": "测试商品", "outTradeNo": "123456", "totalFee": 1, "spbillCreateIp": "127.0.0.1", "notifyUrl": "http://localhost:5000/api/weixinpay/notify", "productId": "123456" } ``` 8. 如果请求成功,将返回一个二维码图片,可以使用扫码工具扫描该二维码进行支付。如果请求失败,将返回错误信息。 以上就是 ASP.NET Core Web 支付功能接入微信扫码支付的实现步骤。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值