Skip to main content

Notifications

Announcements

No record found.

Microsoft Dynamics RMS (Archived)

Credit Card Receipt Format PayPro/SecurePlus

Posted on by Microsoft Employee

Hi All,

It has been a while since I have been here. Things were status quo for so long, but I need some help. I am not good with XML. We just installed PayPros system with the add-in written by New West. It uses the Magtek IPAD with signature capture. This is a secure token based system and will support EMV. The problem: The add-in uses a hook that takes over a credit card payment. In RMS these payments are set as OTHER', not credit card. The provided receipt template prints the captured signature , payment amount and authorization perfectly on the regular customer receipt. It does not print this information on the 'Credit Card' signature receipt that we would normally keep. PayPros workaround is to turn off the ' CC Sigature' property of the receipt and print 2 copies of the regular receipt. The problem is that this prints 2 receipts for every type of transaction. I would like to fix the receipt template (if possible) to print the CC signature section for 'other' payments and then set print copies back to 1. I tried to copy the working XML from the Totals section to the Credit Card section. I changed the condition test of Tender.Descriptor.TenderType to tenderOther and the code seems to execute. I get a <Picture> token not recognized error. I am not getting the authorization either. My assumption is that Session.Variable6 is the auth info and Session.Variable7 is the signature file name. Here is XML for the Credit card section which is the problem. Below it is the WORKING  Transaction Totals section with the information I need. Obviously I am missing something in the XML or about how the Session variables work. Any help would be greatly appreciated!

  =============================
   SUB: PrintCreditCard
   =============================
-->
	<SUB name="PrintCreditCardSlip">
		<IF>
			<CONDITION> ShowCCSignature &amp; (Transaction.Type &lt;&gt; transactionAbortedTransaction) </CONDITION>
			<THEN>
				<FOR each="tender">
					<IF>
						<CONDITION> (Tender.AmountIn &lt;&gt; 0 | Tender.AmountOut &lt;&gt; 0) &amp; (Tender.Descriptor.RequireSig | Tender.Descriptor.TenderType = tenderCreditCard) </CONDITION>
						<THEN>
							<CALL>   "PrintHeader"     </CALL>
							<!-- show transaction date/time/number -->
							<TABLE>
								<BORDER> tbNone </BORDER>
								<FONT>   "Small"  </FONT>
								<COLUMNHEADER>
									<ALIGNMENT> "&lt;~"      </ALIGNMENT>
									<WIDTH>     PageWidth * 0.50 </WIDTH>
									<TEXT>      ""  </TEXT>
								</COLUMNHEADER>
								<COLUMNHEADER>
									<ALIGNMENT> "&lt;~"      </ALIGNMENT>
									<WIDTH>     PageWidth * 0.50 </WIDTH>
									<TEXT>      ""  </TEXT>
								</COLUMNHEADER>
								<IF>
									<CONDITION> Transaction.ReceiptReferenceNumber </CONDITION>
									<THEN>
										<ROW> Transaction.ReceiptReferenceNumberCaption ":|" Transaction.ReceiptReferenceNumber </ROW>
									</THEN>
								</IF>
								<ROW> Transaction.ReceiptTransactionNumberCaption ":|" Transaction.ReceiptTransactionNumber </ROW>
								<IF>
									<CONDITION> Len(Customer.AccountNumber) </CONDITION>
									<THEN>
										<ROW> "Account #:|" Customer.AccountNumber </ROW>
									</THEN>
								</IF>
								<ROW> "Date:   " Transaction.Date "|Time:  " Transaction.Time </ROW>
								<ROW> "Cashier:   " Cashier.Number "|Register #:   " Register.Number </ROW>
								<ROW/>
							</TABLE>
							<SET name="SigAmountOut" type="vbcurrency"> Tender.AmountOut * -1.0 </SET>
							<TABLE>
							<BORDER> tbNone   </BORDER>
							<FONT>   "Small"  </FONT>
							<COLUMNHEADER>
								<ALIGNMENT>    "&gt;"     </ALIGNMENT>
								<WIDTH>        PageWidth   </WIDTH>
							</COLUMNHEADER>
							<IF><CONDITION> Tender.Descriptor.TenderType = tenderOther </CONDITION>
								<THEN>
									<ROW> Session.Variable6 </ROW>
								</THEN>
							</IF>
							</TABLE>
							<IF><CONDITION> LEN(Session.Variable7) </CONDITION>
							<THEN>
							<PICTURE>
								<FILENAME>  Session.Variable7    </FILENAME>
								<!-- <TOP>          PaperHeight - MarginBottom - 1.15    </TOP> -->
								<WIDTH>        PageWidth * .65      </WIDTH>
								<LEFT>      MarginLeft  + .4       </LEFT>
								<HEIGHT>       .85                </HEIGHT>
							</PICTURE>
							<TABLE>
								<BORDER> tbNone   </BORDER>
								<FONT>   "Small"  </FONT>
								<COLUMNHEADER>
									<ALIGNMENT>    "&lt;~"     </ALIGNMENT>
									<WIDTH>        PageWidth   </WIDTH>
								</COLUMNHEADER>
								<ROW> "X__________________________________" </ROW>
								<ROW> "I AGREE TO PAY ABOVE TOTAL AMOUNT"   </ROW>
								<ROW> "ACCORDING TO CARD ISSUER AGREEMENT" </ROW>
								<ROW></ROW>
								<ROW></ROW>
							</TABLE>
							</THEN>
							</IF>
							<CALL>   "PrintFooter"     </CALL>
							<NEWPAGE>
								<PAPERCUTPERCENT>    CCPaperCutPercent </PAPERCUTPERCENT>
							</NEWPAGE>
						</THEN>
					</IF>
				</FOR>
			</THEN>
		</IF>
	</SUB>
	<!--


		<!--
   =============================
   Transaction Totals
   =============================
-->
		<IF>
			<CONDITION> Transaction.Type &lt;&gt; transactionDrop &amp; Transaction.Type &lt;&gt; transactionPayout &amp;  Transaction.Type &lt;&gt; transactionNoSale &amp; Transaction.Type &lt;&gt; transactionAccountPayment </CONDITION>
			<THEN>
				<IF>
					<CONDITION> Transaction.Type &lt;&gt; transactionAbortedTransaction </CONDITION>
					<THEN>
						<TABLE>
							<FONT>      "Small"     </FONT>
							<BORDER>    tbNone      </BORDER>
							<COLUMNHEADER>
								<ALIGNMENT> "&gt;~"              </ALIGNMENT>
								<WIDTH>     PageWidth * 0.72     </WIDTH>
							</COLUMNHEADER>
							<COLUMNHEADER>
								<ALIGNMENT> "&gt;~"              </ALIGNMENT>
								<WIDTH>     PageWidth * 0.28     </WIDTH>
								<TEXT>      "=================" </TEXT>
							</COLUMNHEADER>
							<ROW> "Sub Total|" Transaction.SubTotal   </ROW>
							<IF>
								<CONDITION>  ShowTaxDetails  </CONDITION>
								<THEN>
									<FOR each="SalesTaxes">
										<IF>
											<CONDITION> Transaction.SalesTaxes.ShowOnReceipt &amp; Transaction.SalesTaxes.IsTransactionMember </CONDITION>
											<THEN>
												<ROW> Transaction.SalesTaxes.Description "|" Transaction.SalesTaxes.Total  </ROW>
											</THEN>
										</IF>
									</FOR>
								</THEN>
								<ELSE>
									<ROW> "Sales Tax|" Transaction.SalesTax   </ROW>
								</ELSE>
							</IF>
							<IF>
								<CONDITION> Shipping.Charge   </CONDITION>
								<THEN>
									<ROW> Shipping.Carrier "|" Shipping.Charge   </ROW>
									<ROW> Shipping.Service "|"                   </ROW>
									<ROW> Shipping.TrackingNumber "|"            </ROW>
								</THEN>
							</IF>
							<IF>
								<CONDITION> Transaction.DebitSurcharge </CONDITION>
								<THEN>
									<ROW> "Debit Surcharges|" Transaction.DebitSurcharge </ROW>
								</THEN>
							</IF>
							<IF>
								<CONDITION> Transaction.CashBackSurcharge </CONDITION>
								<THEN>
									<ROW> "Cash Back Surcharges|" Transaction.CashBackSurcharge </ROW>
								</THEN>
							</IF>
							<ROW> "Total|" Transaction.Total </ROW>
							<ROW></ROW>
							<IF>
								<CONDITION> (Transaction.TotalDue &lt;&gt; Transaction.Total) </CONDITION>
								<THEN>
									<ROW> "Deposit Payment|" Transaction.Deposit </ROW>
									<ROW> "Total Purchased|" Transaction.TotalPurchased </ROW>
									<ROW> "Total Due|" Transaction.TotalDue </ROW>
									<ROW></ROW>
								</THEN>
							</IF>
							<FOR each="tender">
								<IF>
									<CONDITION> Tender.AmountIn &lt;&gt; 0 | Tender.AmountInRounding &lt;&gt; 0 </CONDITION>
									<THEN>
										<IF>
											<CONDITION> Tender.Descriptor.TenderType = tenderAccount </CONDITION>
											<THEN>
												<ROW> Tender.Descriptor.Description "|" Tender.AmountIn </ROW>
											</THEN>
											<ELSE>
											<IF>
												<CONDITION> ShowTipLine </CONDITION>
													<THEN>
													<ROW> Tender.Descriptor.Description " Tendered|"</ROW>
													</THEN>
													<ELSE>
														<ROW> Tender.Descriptor.Description " Tendered|" Tender.AmountIn </ROW>
													</ELSE>
												
											</IF>
											</ELSE>
									
										</IF>
										<IF>
											<CONDITION> Tender.Descriptor.TenderType = tenderCreditCard | Tender.Descriptor.TenderType = tenderDebitCard </CONDITION>
											<THEN>
												<ROW> "Card: " Tender.AccountNumberMasked "|" </ROW>
												<ROW> "Auth: " Tender.ApprovalCode "|" </ROW>
											</THEN>
										</IF>
										<IF>
											<CONDITION> Tender.Descriptor.TenderType = tenderVoucher </CONDITION>
											<THEN>
												<ROW> "Number:" Tender.VoucherNumber "|" </ROW>
												<ROW> "Previous Balance|" Tender.VoucherPreviousBalance </ROW>
												<ROW> "New Balance|" Tender.VoucherNewBalance </ROW>
												<ROW></ROW>
											</THEN>
										</IF>
										<IF>
											<CONDITION> (Tender.Descriptor.TenderType = tenderAccount) &amp; ShowAccountBalance </CONDITION>
											<THEN>
												<SET name="NewAccountBalance" type="vbcurrency">  Customer.AccountBalance + Tender.AmountIn - Tender.AmountOut </SET>
												<ROW> "Previous Balance|" Customer.AccountBalance </ROW>
												<ROW> "New Balance|" NewAccountBalance </ROW>
												<ROW></ROW>
											</THEN>
										</IF>
										<IF>
											<CONDITION> Tender.AmountInRounding &lt;&gt; 0 </CONDITION>
											<THEN>
												<ROW> "Roundoff " Tender.Descriptor.Description "|" Tender.AmountInRounding </ROW>
											</THEN>
										</IF>
									</THEN>
								</IF>
							</FOR>
							<IF>
								<CONDITION> Transaction.TotalTenderOut </CONDITION>
								<THEN>
									<FOR each="tender">
										<IF>
											<CONDITION> Tender.AmountOut &lt;&gt; 0 | Tender.AmountOutRounding &lt;&gt; 0 </CONDITION>
											<THEN>
												<IF>
													<CONDITION> ShowTipLine</CONDITION>
													<THEN>
														<ROW> "" </ROW>
													</THEN>
													<ELSE>
														<ROW> "Change " Tender.Descriptor.Description "|" Tender.AmountOut </ROW>
													</ELSE>
												</IF>
												<IF>
													<CONDITION> Tender.Descriptor.TenderType = tenderCreditCard  | Tender.Descriptor.TenderType = tenderDebitCard </CONDITION>
													<THEN>
														<ROW> "Card: " Tender.AccountNumberMasked "|" </ROW>
														<ROW> "Auth: " Tender.ApprovalCode "|" </ROW>
													</THEN>
												</IF>
												<IF>
													<CONDITION> (Tender.Descriptor.TenderType = tenderAccount) &amp; ShowAccountBalance </CONDITION>
													<THEN>
														<SET name="NewAccountBalance" type="vbcurrency">  Customer.AccountBalance + Tender.AmountIn - Tender.AmountOut </SET>
														<ROW> "Previous Balance|" Customer.AccountBalance </ROW>
														<ROW> "New Balance|" NewAccountBalance </ROW>
														<ROW></ROW>
													</THEN>
												</IF>
												<IF>
													<CONDITION> Tender.AmountOutRounding &lt;&gt; 0 </CONDITION>
													<THEN>
														<ROW> "Roundoff " Tender.Descriptor.Description "|" Tender.AmountOutRounding </ROW>
													</THEN>
												</IF>
												<IF>
													<CONDITION>TENDER.DESCRIPTOR.TENDERTYPE = tenderVoucher</CONDITION>
													<THEN>
														<ROW> Tender.Descriptor.TenderItemLookupCode ":" TENDER.VOUCHERNUMBER "|" </ROW>
														<ROW> "Previous Balance|" Tender.VoucherPreviousBalance </ROW>
														<ROW> "New Balance|" Tender.VoucherNewBalance </ROW>
														<ROW></ROW>
													</THEN>
												</IF>
											</THEN>
										</IF>
									</FOR>
								</THEN>
								<ELSE>
									<ROW> "Change Due|" Transaction.TotalTenderOut </ROW>
								</ELSE>
							</IF>
							<IF>
								<CONDITION> (Transaction.TotalDue &lt;&gt; Transaction.Total) </CONDITION>
								<THEN>
									<ROW></ROW>
									<ROW> "Remaining Deposit|" Transaction.DepositTotal </ROW>
									<ROW> "New Balance|" Transaction.OrderBalanceNew </ROW>
								</THEN>
							</IF>
							<ROW></ROW>
							<IF>
								<CONDITION>  ShowTipLine  </CONDITION>
								<THEN>
												<ROW> ""  </ROW>
												<ROW> "Tip:|__________"  </ROW>
												<ROW> ""  </ROW>
												<ROW> "Total:|__________"  </ROW>
								</THEN>
							</IF>
						</TABLE>
						<TABLE>
							<BORDER> tbNone   </BORDER>
							<FONT>   "Small"  </FONT>
							<COLUMNHEADER>
								<ALIGNMENT>    "&gt;"     </ALIGNMENT>
								<WIDTH>        PageWidth   </WIDTH>
							</COLUMNHEADER>
							<IF><CONDITION> Tender.Descriptor.TenderType = tenderOther </CONDITION>
								<THEN>
									<ROW> Session.Variable6 </ROW>
								</THEN>
							</IF>
						</TABLE>
						<IF><CONDITION> LEN(Session.Variable7) </CONDITION>
						<THEN>
						<PICTURE>
							<FILENAME>  Session.Variable7    </FILENAME>
							<!-- <TOP>          PaperHeight - MarginBottom - 1.15    </TOP> -->
							<WIDTH>        PageWidth * .65      </WIDTH>
							<LEFT>      MarginLeft  + .4       </LEFT>
							<HEIGHT>       .85                </HEIGHT>
						</PICTURE>
						<TABLE>
							<BORDER> tbNone   </BORDER>
							<FONT>   "Small"  </FONT>
							<COLUMNHEADER>
								<ALIGNMENT>    "&lt;~"     </ALIGNMENT>
								<WIDTH>        PageWidth   </WIDTH>
							</COLUMNHEADER>
							<ROW> "X__________________________________" </ROW>
							<ROW> "I AGREE TO PAY ABOVE TOTAL AMOUNT"   </ROW>
							<ROW> "ACCORDING TO CARD ISSUER AGREEMENT" </ROW>
							<ROW></ROW>
							<ROW></ROW>
						</TABLE>
						</THEN>
						</IF>
					</THEN>
					<ELSE>
						<TABLE>
							<FONT>      "Small"     </FONT>
							<BORDER>    tbNone      </BORDER>
							<COLUMNHEADER>
								<ALIGNMENT> "&lt;~"       </ALIGNMENT>
								<WIDTH>     PageWidth     </WIDTH>
							</COLUMNHEADER>
							<ROW></ROW>
							<ROW> "Transaction cancelled..." </ROW>
							<ROW></ROW>
							<ROW></ROW>
						</TABLE>
					</ELSE>
				</IF>
			</THEN>
		</IF>
	</SUB>


*This post is locked for comments

  • RE: Credit Card Receipt Format PayPro/SecurePlus

    Hi Marc,

    Thank you for the descriptive inquiry.  We can modify your RMS (SecurePlus) receipt template to eliminate the need for the duplicate (printed) receipt. Let me know if you'd like to connect offline and I can provide you a quote. Thanks

    George Muchae

  • Community Member Profile Picture
    Community Member Microsoft Employee on at
    RE: Credit Card Receipt Format PayPro/SecurePlus

    Ed,

    Thanks for the answer on the session variables. I double checked matching tags a hundred times. For now I have instituted a backup script so we have insurance copies of the signature files and we are stopped saving paper receipts.

    I still may play with it. I hate unsolved riddles. Thanks for the suggestions.

    Marc

  • Suggested answer
    Community Member Profile Picture
    Community Member Microsoft Employee on at
    RE: Credit Card Receipt Format PayPro/SecurePlus

    session variables are available at any point within the same transaction, which includes at any place within the receipt template.  

    You might have just missed a closing token or something.  Try using an editor that supports the xml language.    This will help to highlight mistakes and give you clues to typos.

  • Community Member Profile Picture
    Community Member Microsoft Employee on at
    RE: Credit Card Receipt Format PayPro/SecurePlus

    For clarification in case anyone else is looking for EMV solutions:

    The terminal provided is the Dynapro, it was my mistake, because the documentation refers to the iPAD.

    EMV & Apple Pay support is not implemented yet, but will be in early 2015.

    I am still curious as to the receipt template solution. Are session variables available to any sub on the receipt template or could this be a scope problem?

  • Community Member Profile Picture
    Community Member Microsoft Employee on at
    RE: Credit Card Receipt Format PayPro/SecurePlus

    Hi Jeff,

    My original inclination was, as you suggest, to print a receipt for the customer and have the  journal receipt if we needed it. When I asked PayPros if this was normal procedure they told me to keep a hardcopy of the receipt. Maybe they just don't want to be responsible if the customer loses the data. We do keep several levels of backup. I trust your advice and also realized that I do not see any big box keeping a paper copy either.

    As for the iPAD not supporting EMV, I am going to have a chat with PayPros today. This was my PRIMARY reason for changing.  They may have indicated the add-in will support EMV on later implementation. Apparently the salesperson was confused, because they also said it would support Apple Pay, which would require the DynaPro NFC feature. I am going to find out if that terminal is supported by the add-in.

    Thank you for your help!

    Marc

  • Jeff @ Check Point Software Profile Picture
    Jeff @ Check Point ... 13,380 on at
    RE: Credit Card Receipt Format PayPro/SecurePlus

    Not sure why you need to print a copy of the receipt when you can re-print the receipt, with signature, on demand, at any time,  Why kill more trees than you have to? ☺

    FYI, the iPAD device is _not_ EMV capable, nor does it have a NFC option.  MagTek's DynaPro device is though.

    http://www.magtek.com/V2/products/pin-entry-and-management/DynaPro.asp

Under review

Thank you for your reply! To ensure a great experience for everyone, your content is awaiting approval by our Community Managers. Please check back later.

Helpful resources

Quick Links

December Spotlight Star - Muhammad Affan

Congratulations to a top community star!

Top 10 leaders for November!

Congratulations to our November super stars!

Tips for Writing Effective Suggested Answers

Best practices for providing successful forum answers ✍️

Leaderboard

#1
André Arnaud de Calavon Profile Picture

André Arnaud de Cal... 291,280 Super User 2024 Season 2

#2
Martin Dráb Profile Picture

Martin Dráb 230,214 Most Valuable Professional

#3
nmaenpaa Profile Picture

nmaenpaa 101,156

Leaderboard

Featured topics

Product updates

Dynamics 365 release plans