如何解决Salesforce 与 LWC/Visualforce 页面中的 Apple pay 集成
任何人都在销售队伍中从事 Apple pay 集成工作
我在 LWC 中没有找到方法,但 Window.applepaysession
不可用,这就是为什么我在 VF 页面上这样做,其中 Window.applepaysession
在 VF 中可用。
以下是代码,但我以 Apple 支付窗口中的付款未完成错误结束。有人可以帮我解决这个问题吗?
<apex:page controller="PaymentProcessCtrl">
up cc 1007
<html xmlns="http://www.w3.org/1999/xhtml" lang="en-us" xml:lang="en-us"><head>
<script src="https://applepay.cdn-apple.com/jsapi/v1/apple-pay-sdk.js"></script>
<script src="https://ajax.googleapis.com/.../jquery/3.5.1/jquery.min.js"></script> <script type="text/javascript">
console.log('updated@@ pay;pad');
$( document ).ready( function( )
{
console.log('logs added');
console.log(window.ApplePaySession);
if (window.ApplePaySession) {
var merchantIdentifier = 'merchant.com.force.secure.aipac';
//merchant.com.force.secure.aipac
//'merchant.com.force.secure.aipac';
//'apple-pay-gateway.apple.com';
console.log(merchantIdentifier);
// canMakePayments
var promise = ApplePaySession.canMakePaymentsWithActiveCard(merchantIdentifier);
promise.then(function (canMakePayments) {
$("#applePay").show();
if (canMakePayments) {
$("#applePay").show();
console.log('hi,I can do ApplePay');
} else {
$("#applePay").after('<p>ApplePay is possible on this browser,but not currently activated.</p>');
console.log('ApplePay is possible on this browser,but not currently activated.');
}
});
} else {
console.log('ApplePay not available on this browser');
$("#applePay").after('ApplePay not available on this browser');
}
$("#applePay").click( function(evt) {
// Define ApplePayPaymentRequest
try{
const request = {
"countryCode": "US","currencyCode": "USD","merchantCapabilities": [
"supports3DS"
],"supportednetworks": [
"visa","masterCard","amex","discover"
],"total": {
"label": "Demo (Card is not charged)","type": "final","amount": "1.99"
}
}
// Create ApplePaySession
const session = new ApplePaySession(3,request);
session.onvalidatemerchant = async event => {
// Call your own server to request a new merchant session.
const merchantSession = await validateMr(session);
session.completeMerchantValidation(merchantSession);
// .then(function(response) {
//console.log('response'+response);
//})
/*.catch(error=>{console.log('completeMerchantValidation**');
console.log(error);});*/
};
session.onpaymentmethodselected = event => {
console.log('onpaymentauthorized');
// Define ApplePayPaymentMethodUpdate based on the selected payment method.
// No updates or errors are needed,pass an empty object.
const update = {};
session.completePaymentMethodSelection(update);
};
session.onshippingmethodselected = event => {
console.log('onshippingmethodselected');
// Define ApplePayShippingMethodUpdate based on the selected shipping method.
// No updates or errors are needed,pass an empty object.
const update = {};
session.completeShippingMethodSelection(update);
};
session.onshippingcontactselected = event => {
console.log('onshippingcontactselected');
// Define ApplePayShippingContactUpdate based on the selected shipping contact.
const update = {};
session.completeShippingContactSelection(update);
};
session.onpaymentauthorized = event => {
console.log('onpaymentauthorized****');
// Define ApplePayPaymentAuthorizationResult
const result = {
"status": ApplePaySession.STATUS_SUCCESS
};
console.log('onpaymentauthorized');
session.completePayment(result);
};
session.oncancel = event => {
// Payment cancelled by WebKit
console.log('oncancel');
};
session.begin();
}
catch (err) {
console.log('err.message');
console.log(err.message);
}
});
});
function validateMr(session){
Visualforce.remoting.Manager.invokeAction(
'{!$RemoteAction.PaymentProcessCtrl.doApplePay}','',function(result,event){
if (event.status) {
console.log('remoting:');
console.log(result);
//getInfo();
// session.completeMerchantValidation(result.payload);
console.log('remoting: complere aut');
return result.payload;
} else {
session.abort();
alert(event.message);
console.log('Done with the process'+event.message);
}
},{escape: true}
);
console.log('Done with the process');
}
</script>
<style>
#applePay {
width: 280px;
height: 64px;
display: inline-block;
border: 1px solid black;
Box-sizing: border-Box;
background-size: 100%;
background-repeat: no-repeat;
}
</style>
</head>
<body>
<!-- style="display:none"-->
<button type="button" id="applePay" >Apple pay bb</button>
</body>
</html>
</apex:page>
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。